Desarrollador Backend en Globant

Desarrollador Backend en Globant

Motivación

Para fines del 2019 ya había desarrollado varias aplicaciones nuevas con Xamarin, pero todavía no estaba seguro si podía llegar a ser un negocio rentable porque todavía no había logrado posicionar con éxito muchas de ellas. Al mismo tiempo, estaba interesado en seguir aprendiendo y sumando experiencia en el desarrollo de sistemas más complejos, por lo que decidí comenzar algunos procesos de entrevistas con un par de empresas.

El rol al que quería aplicar era el de desarrollador backend en Java, ya que podía demostrar tener un seniority más elevado en esa tecnología. Tras enviar el CV a tres empresas, avancé a la instancia técnica con dos de ellas, y ambas decidieron hacerme una oferta luego de haber pasado con éxito las entrevistas. Finalmente opté por aceptar la oferta de Globant, donde tras una entrevista con las personas del proyecto que necesitaba el candidato, me dejó la sensación de que era una buena oportunidad de aprendizaje.

A diferencia de la otra oferta que tenía sobre la mesa, donde el trabajo era 100% remoto, en Globant podía trabajar en las oficinas de Tandil, siendo en ese momento algo de mi interés ya que consideraba que podía aprender más rápido en un esquema de trabajo presencial. Lo paradójico fue que a las semanas de aceptar la propuesta comenzó la pandemia del Covid, por lo que no pude ir a las oficinas ni siquiera a conocer a mis compañeros de trabajo.

En cuanto a lo monetario, ambas ofertas eran similares en pesos argentinos, pero la oferta de Globant garantizaba la actualización del salario todos los meses según el valor promedio del dólar, algo muy importante considerando la realidad de Argentina.

Proyecto en Expedia

El proyecto era en uno de los sistemas de Expedia, una empresa de viajes muy conocida por la venta de vuelos y hoteles en internet. Más específicamente, el sistema en cuestión se encargaba de la adquisición y la distribución de los contenidos de los hoteles.

Para explicar mejor la necesidad del sistema, se debe entender que Expedia en realidad cuenta con múltiples portales donde se ofrecen hospedajes. Por ejemplo, algunos conocidos son Hotels.com, Trivago, Travelocity, Orbitz, HomeAway, Vrbo, entre otros. Cuando un anfitrión desea publicar su hospedaje en Expedia, en realidad puede darle visibilidad y mostrar su disponibilidad en todos estos sitios. El problema es que cada uno de estos sitios pueden mostrar diferente información sobre un hospedaje: cantidad de fotos, resolución de las imágenes, amenities, información de cada habitación, etc. Esta información es similar en cada sitio, pero existe una serie de diferencias que hacen que se requiera de un sistema que permita “traducir” la información que el hospedaje carga en un sitio para que pueda ser replicada en todos los demás.

Además de estos sitios propios de Expedia, la empresa también cuenta con alianzas con otras empresas, por lo que esta necesidad se amplía a tener la posibilidad de distribuir el contenido de los hoteles a empresas externas a Expedia, como por ejemplo Despegar.

Esta distribución del contenido contempla muchas reglas de negocio y acuerdos con las diferentes empresas que no logré terminar de entender en mi corto paso por la empresa. Pero la forma de resolver esta distribución de forma eficiente fue a través de un sistema de microservicios, donde la información iba “fluyendo” a través de los diferentes servicios mediante Apache Kafka y su cola de mensajes.

El sistema contaba también con diferentes bases de datos que almacenaban determinada información relevante para la distribución del contenido, dependiendo de la fase de procesamiento de esta información. Algunas bases de datos eran relacionales y otras eran no relacionales, lo que me permitió adentrarme por primera vez en una tecnología NoSQL.

Todos los microservicios estaban desplegados en AWS, incluidos los ambientes de test. Para hacer el despliegue de una funcionalidad a test o a producción, se contaba con un sistema propio que se encargaba de ejecutar todo el pipeline y asegurarse de que los cambios no rompan el ambiente en cuestión.

Además contábamos con un panel en Grafana donde se mostraba información relevante sobre los servidores y la carga de procesamiento. Este panel era importante para poder monitorear por ejemplo si existía algún cuello de botella en alguno de las fases de procesamiento de los contenidos durante el flujo de distribución de los mismos.

Tecnologías

Algunas de las tecnologías utilizadas fueron las siguientes:

  • JAVA 8 & 11
  • Microservices
  • PostgreSQL / MySQL / Redis
  • AWS
  • Spring boot
  • Maven
  • Hibernate
  • Git
  • Jenkins
  • JUnit
  • Mockito
  • Lombok
  • Sonar
  • Docker
  • Postman
  • REST
  • IntelliJ
  • Splunk
  • Kibana
  • Grafana
  • Jira
  • Confluence
  • Slack

Reducción de costos en la nube

Expedia fue una empresa muy afectada por la pandemia por razones obvias. Al mes de estar en el proyecto, la empresa anunció una serie de despidos por el recorte de presupuesto. Este recorte también debía aplicarse a los costos de servidores, que en el ambiente de producción alcanzaban las 7 cifras mensuales. Es por esto que algunas de las tareas encomendadas a nuestro equipo consistían en optimizar el uso de los servicios de AWS y eliminar todos los recursos que no sean estrictamente necesarios.

Trabajo en squads

En Expedia era parte de un equipo donde todos los miembros éramos contractors de Globant, y con el cual teníamos nuestras reuniones de revisión y seguimiento. Sin embargo, también estábamos divididos en squads de entre 1 y 5 personas aproximadamente, donde cada uno estaba trabajando en proyectos completamente distintos entre sí, e incluso algunos formaban parte de más de un squad en simultáneo.

Luego de terminar el onboarding, comencé a formar parte del squad encargado de solucionar los bugs y errores de un backlog. Este era el único squad fijo donde se iba rotando los miembros cada cuatro semanas aproximadamente.

El único squad del que llegué a formar parte, fue uno encargado de desarrollar unas funcionalidades en un panel de administración utilizado por los administradores de los sitios webs para establecer el mapeo de determinadas propiedades entre otras cosas. Estas funcionalidades incluían desarrollo tanto del backend con Java, como de código javascript y html para modificar el front del sitio.

Era un proyecto bastante corto, donde se estimo un mes y medio de desarrollo y el equipo estaba conformado por tres personas. Fue mi único proyecto como squad, ya que al finalizarlo tomé la decisión de dejar de trabajar en Globant.

Terminación del trabajo en Globant

Cuando tomé la decisión de trabajar en Globant en un inicio, no tenía intención de seguir trabajando en proyectos personales fuera de los horarios de oficina. Sin embargo, en ese momento no contaba con que el trabajo sea 100% remoto.

Antes de aceptar la propuesta, había tenido una videollamada con una persona amiga a la que fui recomendado por un amigo en común, quien había comenzado una búsqueda de un desarrollador para un emprendimiento llamado Edutive. En esa primer llamada simplemente nos presentamos y los socios de Edutive me comentaron que buscaban alguien con perfil técnico y con el interés de asociarse un proyecto que estaba comenzando a emprender con dos socios más.

No volví a hablar con ellos hasta un mes de haber entrado en Globant. En ese momento ya me encontraba cumpliendo mis tareas de Globant con facilidad, trabajando de forma remota y con bastante tiempo libre encerrado por culpa de la pandemia. En esta nueva conversación establecimos un período de prueba en el que yo comenzaba a trabajar en Edutive de forma parcial.

Durante los próximos 4 meses estuve trabajando en Globant y en Edutive en simultáneo, pasando alrededor de 12 horas por día en frente de la computadora, y avanzando con Edutive también durante los fines de semana. En ese período me di cuenta que me despertaba mucho interés el proyecto de Edutive, y que no encontraba esa motivación en mi trabajo en Globant. Es por esto que en Agosto del 2020 decidí dejar de trabajar en Globant para comenzar a trabajar a tiempo completo en Edutive como líder en el área de tecnología.