Industria: Desarrollo de juegos
Productos de JetBrains utilizados: TeamCity
Tamaño de la organización: 500-1000
País: Irlanda
Playrix es uno de los mayores desarrolladores de juegos para móviles del mundo. Con sede en Dublín (Irlanda), Playrix presta servicio diariamente a más de 30 millones de usuarios en todo el mundo. Utilizando TeamCity de JetBrains para sus operaciones diarias de CI/CD, Playrix ejecuta más de 10 000 compilaciones al día para varias plataformas.
«Al final, optamos por una solución híbrida en la nube que incluía TeamCity Cloud Profiles y AWS. Además, teníamos ordenadores locales para los agentes de compilación. Esta combinación nos permitía llevar a cabo todas las compilaciones que quisiéramos a lo largo del día y, además, nos mostraba el recuento de agentes de referencia durante las horas de menor actividad. Así que podíamos ejecutar lo que quisiéramos donde quisiéramos».
— Yuri Trufanov, director técnico ejecutivo de la plataforma tecnológica
Playrix es uno de los mayores desarrolladores de juegos para móviles del mundo. Con sede en Dublín (Irlanda), Playrix llega a más de 30 millones de usuarios al día en todo el mundo. Algunos de sus juegos más conocidos son Homescapes, Fishdom o Gardenscapes. Con 98 millones de descargas en Apple App Store y Google Play, Homescapes fue la aplicación más popular de la empresa en 2021.
Playrix es una gran empresa de desarrollo de juegos que realiza más de 10 000 builds al día. La empresa utiliza 220 agentes de compilación de TeamCity, que ejecutan operaciones de integración e implementación continuas para más de 2500 proyectos y prestan servicio a más de 500 usuarios internos. Playrix trabaja con repositorios muy grandes (hasta 50 GB) y genera artefactos de gran tamaño (hasta 100 GB).
Playrix utiliza JetBrains TeamCity como solución de integración e implementación continuas con unos 500 usuarios activos. El servidor TeamCity y la mayoría de los agentes de compilación se ejecutan en AWS.
Hemos hablado con Yuri Trufanov, director técnico ejecutivo de la plataforma tecnológica de Playrix, sobre cómo la empresa consigue ejecutar miles de builds al día en varias plataformas. El equipo de Yuri se encarga de mantener y desarrollar la infraestructura interna y de pruebas de los servicios de Playrix. También desarrolla, escala y automatiza los procesos de integración e implementación continuas.
Antes de trasladarse a la nube, el servidor de TeamCity estaba instalado en una de las oficinas, donde también se ejecutaban los agentes de compilación. En cuanto a los ingenieros, estaban repartidos por diferentes ubicaciones y se conectaban al servidor único de TeamCity.
Esta configuración cubrió las necesidades de la empresa, aunque llegó un momento en que no fue suficiente.
La desventaja de tener el servidor ubicado en una oficina concreta era el hecho de que, si algo le sucedía a la oficina (por ejemplo, un corte eléctrico o de red), los desarrolladores no podían acceder a sus builds. El equipo de Playrix está repartido por 40 países y tiene 500 usuarios de TeamCity, así que era esencial tener un servidor de integración e implementación continuas fiable, sensible y rápido que estuviera siempre disponible.
A medida que los proyectos fueron evolucionando, se hacía más difícil escalar la infraestructura local de integración e implementación continuas. En Playrix, los builds se ejecutan en cada confirmación y, por ello, en hora punta, los builds se iban poniendo en cola y tardaban horas en ejecutarse. La empresa necesitaba cientos de agentes y solo había 20 disponibles.
Contar con infraestructuras adicionales para las operaciones de integración e implementación continuas podría resolver este problema, pero es engorroso y supone una carga adicional para la gestión de la configuración.
El equipo comenzó a mejorar la disponibilidad de los procesos de integración e implementación continuas trasladando el servidor de TeamCity y el almacenamiento de artefactos a la nube mientras ejecutaba agentes de compilación en varias ubicaciones locales. «Es más fiable cuando el servidor está en la nube. Normalmente, de esta manera, la conexión es más predecible que cuando el servidor se almacena localmente en una oficina remota», afirma Yuri Trufanov.
El equipo puso el servidor de TeamCity en un grupo de autoescalado dentro de un contenedor Docker y configuró un orquestador Nomad, con el que el equipo configuró una tarea con TeamCity. En caso de que se produzca un fallo de hardware, los trabajos se mueven a otra instancia y todo sigue funcionando sin problemas.
El equipo también trasladó el almacenamiento de artefactos de build a Amazon S3 Artifact Storage y la base de datos de TeamCity se almacenó en Amazon Aurora MySQL.
El resultado final fue una configuración mucho más fiable y estable. Los artefactos de build se almacenan en AWS, que realiza copias de seguridad. Si alguna de las oficinas se cae, la cola de builds solo se alarga un poco, pero todo sigue funcionando.
Otro problema con el que se encontró el equipo de Playrix fue el hecho de que, durante el día, los ingenieros necesitaban mucha potencia para ejecutar sus builds. Sin embargo, por la noche, todos los agentes de compilación estaban inactivos, de modo que el equipo quería asignar los recursos de forma más eficiente y optimizar costes.
La solución llegó en forma de TeamCity Cloud Profiles. TeamCity permite crear un perfil en la nube en el que se pueden especificar todas las configuraciones necesarias para que TeamCity lance agentes de compilación en la nube: qué tipo de instancia se necesita, qué recursos, en qué nube ejecutarlo y qué imagen utilizar. TeamCity es compatible con los proveedores de nube que el equipo de Playrix necesita, incluido AWS.
Playrix terminó optando por una solución híbrida. Se encargarían de los builds de macOS en los ordenadores locales y ejecutarían los agentes de compilación de Linux y Windows en la nube, donde se escalarían bajo demanda. Esto ayudó a la empresa a resolver el problema de las colas y los plazos de compilación largos.
«Al final, optamos por una solución híbrida en la nube que incluía TeamCity Cloud Profiles y AWS. Además, teníamos ordenadores locales para los agentes de compilación. Esta combinación nos permitía llevar a cabo todos los builds que quisiéramos a lo largo del día y, además, nos mostraba el recuento de agentes de referencia durante las horas de menor actividad. De ese modo, podíamos ejecutar lo que quisiéramos donde quisiéramos», comenta Yuri Trufanov, director técnico ejecutivo de Playrix.
Cabe destacar que esta flexibilidad tiene un coste. Ejecutar agentes de compilación en la nube es caro, así que el equipo de Playrix se puso a buscar formas de hacer que esta solución fuera más rentable.
Fue entonces cuando Playrix se fijó en las instancias de spot en AWS, ya que los perfiles en la nube de TeamCity permiten utilizarlas sin problemas. Si se revoca una instancia de spot mientras el agente de compilación está ejecutando un build, TeamCity lanzará de forma automática una nueva instancia y reiniciará este build, sin que sea necesaria ninguna intervención adicional del usuario.
Yuri confirmó que la ejecución de agentes de compilación en instancias puntuales resultó ser casi 10 veces más rentable para Playrix, así que decidieron cambiar una gran parte de sus agentes de compilación Linux basados en la nube a instancias de spot.
Al trasladar el servidor de TeamCity y la mayoría de los agentes de compilación a AWS, el equipo de Playrix creó una solución de integración e implementación continuas de alta disponibilidad.
Gracias a TeamCity Cloud Profiles, el equipo también pudo autoescalar sus agentes de compilación, de modo que los aumentó en hora punta y los redujo por la noche. Esto ayudó al equipo a acelerar los builds y a utilizar los recursos de forma más eficiente.
Gracias a las instancias de spot, Playrix pudo ejecutar su granja de agentes de compilación de forma más rentable, lo que redujo los costes casi a una décima parte.
Ivan Babiankou, ingeniero de software de Picnic
Buscábamos una solución gestionada para todos nuestros usos de IC. Además, necesitábamos agentes autohospedados para controlar qué software se ejecuta y qué herramientas exactas se utilizan. TeamCity Cloud con agentes autohospedados es una solución a medida que encanta a nuestro equipo, compuesto por más de 300 ingenieros, y que mejora muchísimo nuestra productividad.
Tadeas Kriz, director tecnológico y cofundador de Brightify
Nuestras revisiones de código han mejorado significativamente y hemos podido aprovechar los webhooks de Space con TeamCity para compilar cada rama revisada e implementarla en nuestro QA para poder probar la rama antes de combinarla. Ahora también es más fácil saber quién está fuera de la oficina.
Piotr Polus, responsable técnico de frontend de Miquido
Hemos elegido JetBrains por tres razones: la utilidad, la capacidad de configuración y la disponibilidad de los complementos.