Quality Assurance en Mercadolibre

16/05/2017
Artículo original

Hola a todos, como hice en el pasado con el equipo de APIs de Mercadolibre, la idea hoy es contarles qué hacemos en el equipo de QA para ver si tiene ganas de trabajar con nosotros, ya que estamos en la búsqueda constante de talentos :)

Antes que nada, al equipo de QA en Mercadolibre lo llamamos Business Assurance (BA), ya que tiene una responsabilidad un poco más amplia que lo normal, es el equipo encargado de que el negocio funcione en su totalidad.

Como todos saben, hacer un sistema de forma poco profesional, es como decirle a un arquitecto que arme la “Cucha” para el perro o la “Casita del árbol”, no requiere demasiado control de calidad, metodología, métricas, certificaciones, etc. Ahora bien si le pedimos al mismo arquitecto hacer un puente o un “Empire State”, se complica la cosa y va a requerir de cálculos, planos, mediciones, certificaciones y equipos electrónicos para detectar todo tipo de posibles fallas.

image

En sistemas es lo mismo, hacer la página del kiosco es fácil, hacer el site de internet más grande de América Latina tiene un poco más de profesionalismo. No estamos al nivel del software de un Boeing 737 pero cerca :)

Dicho eso, en Mercadolibre creemos que un proyecto consta de un 50% de esfuerzo en programación y un 50% de “otras cosas” que lo vuelven profesional, que obviamente cuestan el doble de esfuerzo, pero a la larga, valen la pena.

¿Y que son esas cosas? Todo lo perteneciente a calidad:

image

Lo que hacemos en QA en ML es asegurarnos que todo ese bloque de cosas que dicen “Calidad” se cumplan en los proyectos. Somos un grupo de ingenieros en sistemas que en vez de tener un foco en desarrollar funcionalidades nuevas al producto, nos encargamos de hacer que ese producto se realice de la mejor forma (más profesional) posible.

image


Para eso, en el equipo nos dividimos en varios centros: Buenos Aires, Córdoba, San Luis, Santiago de Chile y Montevideo, Uruguay y en diferentes células que atacan diferentes problemáticas del desarrollo de software (Testing, SRE, Web Analytics, GIN, Seguridad). En total somos hoy 60 personas.

¿Qué hace cada célula?

Testing: El equipo de Testing, se encarga de asegurar que la aplicación esté probaba de inicio a fin. Para eso ayudan a los desarrolladores de los proyectos a definir la estrategia de testing, crear test unitarios, test de integración, test funcionales, test end to end, etc. Mantener la arquitectura de integración continua, miden la cobertura de código (en desarrollo y producción) y realizan análisis estático de código (Para encontrar malas prácticas de programación). El equipo de testing es clave para que el producto (la página de Mercadolibre o Mercadopago o sus aplicaciones de celulares) llegue a producción sin bugs, probado de punta a punta y muy fácil de modificar.

image

(Ingeniero testeando el telescopio Gaia antes del lanzamiento)

Resiliencia o SRE: El equipo de SRE es otra célula de BA y es la encargada de asegurar que la aplicación es “a prueba de fallos” a nivel tráfico, hardware, problemas con el cloud, etc. ¿Qué significa esto? Nuestra aplicación es tan pero tan grande, que consta de cientos de sistemas interconectados, estos sistemas corren sobre más de 30 mil servidores, procesan más de 40 millones de pedidos por segundo y a velocidades diferentes (desde 1 milisegundo hasta varios segundos, con mucha variación). Es muy normal que alguno de esos servidores o parte de la red, o parte de los discos falle. Cuando alguna parte falla, el resto de los sistemas tiene que soportar ese error, sino el sistema entero se vendría abajo, a esto es lo que llamamos “resiliencia” de una aplicación. Las aplicaciones tienen que poder soportar todos estos errores en tiempo real. Para eso los ingenieros de SRE se encargar de medir la aplicación por todos lados: CPU, tiempo de respuesta, memoria consumida, etc, Analizan la interconección de las mismas, detectan errores de tuning, promueven mejoras en las arquitectura, mejoran las alertas que el sistema genera, aseguran que cada parte que se puede romper esté monitoreada, analizan los problemas de escala en producción, etc. El equipo de resiliencia también es clave en Mercadolibre, gracias al  esfuerzo de este equipo, el sitio tiene cada vez más uptime.

image

(Nuestro meme por default en SRE)

Analytics: El equipo de Web Analytics se encarga de medir y entender el comportamiento de los usuarios que navegan el sitio. ¿Qué significa esto? Implementan distintas herramientas (Por lo general Google Analytics) para ver qué parte del sitio es el más usado, qué parte es el menos usado, qué parte no se entiende y hay que mejorar, qué parte del sitio tiene el mayor drop-out (cuando el usuario deja el sitio), etc. Se encarga de generar todo tipo de métricas para que el sponsor del proyecto (por ejemplo el gerente de marketing) entienda a la perfección en donde hay que poner más foco para hacer que la gente compre o venda más. Además de esto realizan A/B testings y capacitan al resto de las áreas de Mercadolibre para que todos puedan hacer uso de esta información super valiosa. Las áreas de negocio aman a este equipo, tener información detallada de cómo el cliente usa tu producto es clave para mejorarlo :)

image

GIN (Gestor de incidentes): El equipo de GIN tiene un rol clave en la empresa, es el puente de comunicación entre los usuarios del sitio y el equipo de ingeniería. ¿Cómo es esto?. Cuando un usuario tiene un problema, una duda, una queja, etc. Se comunica con nuestro call center. En el call center ayudan al usuario, pero muchas veces el call center detecta que lo que el usuario reporta es un error en la aplicación (un Bug). El equipo de GIN es el que se encarga de gestionar esos bugs reportados, para que los mismos se solucionen. ¿Cómo hace esto? El bug llega el equipo de GIN, los analistas del equipo lo reproducen, entienden del problema, lo asignan a un equipo de desarrollo y realizan el seguimiento del mismo hasta que el equipo de desarrollo lo corrija. Estiman cuánto dinero se pierde por día con este Bug, calculan cientos de métricas para saber cuál es el bug más importante a resolver, brinda visibilidad del problema a los gerentes del call center y de desarrollo y además capacitan al equipo de call center para que entienda a la perfección qué cosa es un error, que cosa no es un error y pueda bajar le carga operativa del área, todo esto contra reloj.

image

Web Security: El equipo de seguridad aplicativa, si bien no es parte de BA, lo consideramos como un equipo que da soporte para detección de vulnerabilidad en el sitio. Cualquier hacker podría dejarnos fuera de la copa si encuentra una vulnerabilidad que por ejemplo borre nuestra base de datos, el equipo de seguridad se encarga de analizar constantemente con ayuda de distintas consultoras de seguridad cuáles son nuestros puntos vulnerables y seguir junto al equipo de desarrollo la corrección de las mismas.

image


Todos los equipos además tienen un rol de programación, ¿Por qué?

En Mercadolibre pasan cosas que, por la cantidad de tráfico, no pasan en otras empresas, con lo cual nos vimos obligados a desarrollar nuestros propios sistemas de “Healing”, o dicho en criollo: Tuvimos que programar sistemas para detectar inconsistencias, medir nuestro propio Cloud, obtener métricas de deploys, verificar el historial de cambios, etc.. Esto también lo hizo el equipo de BA ayudando al equipo de desarrollo.

image

Todas las áreas realizan meetups para la comunidad regularmente, es parte de su rol estar a la vanguardia de las tecnologías y fomentarlas en la comunidad. 

Les dejo el link de la charla que di en el meetup de TestingAr sobre herramientas custom de testing que hicimos en la empresa.

En resumen,  entre todas las células, damos soporte a todo el ciclo de vida de desarrollo, para que el mismo sea lo más robusto y perfecto posible.

image

En todas estas células buscamos profesionales que quieran ayudarnos a mejorar la calidad del sitio, en todo sentido.

Los puestos que tenemos disponibles son (Entre paréntesis la experiencia estimada):

  • Ingeniero Junior            (Ninguno o 1 año de experiencia)
  • Ingeniero                       (Entre 1 y 3 años de experiencia)
  • Ingeniero Semi-Senior  (Entre 3 y 6 años de experiencia)
  • Ingeniero Senior            (Más de 6 años de experiencia)
  • Líder de Proyecto / Líder Técnico (Coordinadores de equipo o referentes técnicos)
  • Gerente / Experto Técnico (Coordinadores de varios equipos o referentes técnicos)

Dentro de los cuales, como puede verse,  hay puestos técnico especialistas, generalistas y de coordinación de equipos. Por lo general buscamos profesionales de sistemas, pero no es excluyente (depende la célula), sí,  tienen que tener conocimiento de programación, bases de datos, redes, etc. (También depende la célula, hay algunas más técnicas que otras).

image

Si tenés ganas de formar parte de alguno de los equipos de BA, te invito a que me envíes un mail a fersca@gmail.com así lo evaluamos y te invitamos a una entrevista de trabajo a alguna de nuestras oficinas.

Saludos,

Fer