Domaine : Développement de jeux

Produits JetBrains utilisés : TeamCity

Taille de l'organisation : 500-1000

Pays : Irlande

Playrix

Playrix est l'un des plus grands développeurs de jeux mobiles au monde. Basé à Dublin, en Irlande, Playrix sert quotidiennement plus de 30 millions d'utilisateurs et utilisatrices dans le monde. En utilisant JetBrains TeamCity pour ses opérations quotidiennes de CI/CD, Playrix exécute plus de 10 000 builds par jour pour plusieurs plateformes.

« Nous avons finalement opté pour une solution cloud hybride incluant TeamCity Cloud Profiles et AWS. De plus, nous disposions d'ordinateurs sur site pour les agents de build. Cette combinaison nous a permis de gérer autant de builds que nécessaire tout au long de la journée, tout en conservant un certain nombre d'agents pour les heures creuses. Ainsi, nous pouvons exécuter ce que nous voulons, quand nous le voulons. »

— Yuri Trufanov, directeur exécutif technique de la plateforme technologique

À propos de Playrix

Playrix est l'un des principaux développeurs de jeux sur plateforme mobile au monde. Depuis son siège social à Dublin (Irlande), Playrix est au service de plus de 30 millions d'utilisateurs de tous horizons quotidiennement. Parmi leurs jeux les plus connus, citons Homescapes, Fishdom et Gardenscapes. Avec 98 millions de téléchargements sur Apple App Store et Google Play, Homescapes a été l'application la plus populaire de la société en 2021.

Numéros CI/CD

Playrix est une grande entreprise de développement de jeux qui exécute plus de 10 000 builds par jour. Elle utilise 220 agents de build TeamCity, exécutant des processus CI/CD sur plus de 2 500 projets, et dessert plus de 500 utilisateurs internes. Playrix gère des référentiels gigantesques (jusqu'à 50 Go) et génère des artefacts de grande taille (jusqu'à 100 Go).

Playrix utilise JetBrains TeamCity comme solution CI/CD avec environ 500 utilisateurs actifs. Le serveur de TeamCity et la majorité des agents de build s'exécutent dans AWS.

Nous avons discuté avec Yuri Trufanov, directeur exécutif technique de la plateforme technologique chez Playrix, pour voir comment son entreprise parvient à exécuter des milliers de builds par jour pour différentes plateformes. L'équipe de Yuri est responsable de la maintenance et du développement de l'infrastructure interne et de test de services au sein de Playrix. Elle est également chargée de développer, faire évoluer et automatiser les processus CI/CD.


Défis de Playrix avant le passage au cloud

Avant de passer au cloud, le serveur de TeamCity a été installé dans l'un des bureaux, alors que les agents de build s'exécutaient également sur site, dans le même bureau. Parallèlement, les ingénieurs travaillaient à différents endroits, tous connectés à l'unique serveur de TeamCity.

Configuration initiale de Playrix

Cette configuration était à l'origine suffisante pour les besoins de l'entreprise. Toutefois, le développement considérable de Playrix a changé la donne.

Disponibilité

L'inconvénient du placement du serveur dans l'un des bâtiments de l'entreprise était l'impossibilité pour les développeurs d'accéder à leurs builds si un problème survenait à cet endroit (comme une panne électrique ou réseau). L'équipe de Playrix est répartie dans 40 pays et inclut 500 utilisateurs de TeamCity. Par conséquent, l'accès à un serveur CI/CD rapide, réactif, fiable et disponible constamment est crucial pour l'entreprise.

Files d'attente et délais excessifs de build

Au fur et à mesure que les projets ont évolué, il est devenu plus difficile de faire évoluer l'infrastructure CI/CD sur site. Chez Playrix, les builds s'exécutaient à chaque commit. Par conséquent, pendant les périodes de pic de consommation, les builds se retrouvaient en file d'attente et leur exécution pouvait prendre des heures. Alors qu'il faudrait des centaines d'agents, l'entreprise n'en disposait que de 20.

Le provisionnement d'infrastructure supplémentaire pour la solution CI/CD pourrait résoudre ce problème, mais son implémentation est complexe et impose une surcharge de gestion de la configuration.


Résolution des défis à l'aide de TeamCity et AWS

Procédures CI/CD plus disponibles et fiables

L'équipe a commencé à améliorer la disponibilité de son système CI/CD en déplaçant le serveur TeamCity et le stockage des artefacts vers le cloud et en répartissant l'exécution des agents de build à plusieurs emplacements sur site. « Avec un serveur dans le cloud, cela fonctionne de manière plus fiable. Normalement, la connexion est plus prévisible de cette façon que lorsque le serveur est installé dans l'un des bureaux distants de l'entreprise », explique Yuri Trufanov.

Amélioration du programme de fiabilité

L'équipe a placé le serveur TeamCity dans un groupe évoluant automatiquement, à l'intérieur d'un conteneur Docker, et a configuré un orchestrateur Nomad. Sur la base de l'orchestrateur, l'équipe a mis en place une tâche dans TeamCity qui garantit qu'en cas de défaillance matérielle, les tâches sont déplacées vers une autre instance et que les opérations se poursuivent en toute fluidité.

Playrix a également déplacé le stockage des artefacts de build sur Amazon S3 Artifact Storage, tandis que la base de données TeamCity a été stockée dans Amazon Aurora MySQL.

Il en résulte une configuration bien plus fiable et stable. Les artefacts de build sont stockés dans AWS, qui assure également leur sauvegarde. Si l'un des bureaux perd sa connexion, la file d'attente du build prend un peu plus de temps, mais au final, tout fonctionne correctement.

Infrastructure de build actuelle de Playrix

Évolution automatique des agents de build dans le cloud

L'équipe de Playrix a rencontré un autre problème : pendant la journée, les ingénieurs avaient besoin de beaucoup de puissance pour exécuter leurs builds. Pendant la nuit, cependant, tous les agents de build restaient inactifs. L'équipe souhaitait allouer les ressources plus efficacement et optimiser les coûts.

Cette solution a pris la forme de TeamCity Cloud Profiles. TeamCity permet de créer un profil cloud où vous pouvez spécifier les configurations nécessaires pour que TeamCity lance des agents de build dans le cloud : le type d'instance nécessaire, quelles ressources utilisées, dans quel cloud les exécuter et quelle image utiliser. TeamCity prend en charge directement les fournisseurs cloud nécessaires à Playrix, y compris AWS.

Playrix a finalement choisi une solution hybride qui gère les builds macOS sur les ordinateurs sur site, et exécute les agents de build Linux et Windows dans le cloud, où ils peuvent évoluer à la demande. Cela a permis à l'entreprise de résoudre le problème des longues files d'attente et de délais excessifs d'exécution des builds.

« Nous avons finalement opté pour une solution cloud hybride incluant TeamCity Cloud Profiles et AWS. De plus, nous disposions d'ordinateurs sur site pour les agents de build. Cette combinaison nous a permis de gérer autant de builds que nécessaire tout au long de la journée, tout en conservant un certain nombre d'agents pour les heures creuses. Ainsi, nous pouvons exécuter ce que nous voulons, quand nous le voulons », explique Yuri Trufanov, directeur exécutif technique chez Playrix.


Recherche de solutions d'optimisation des coûts

Cette flexibilité a toutefois un prix. L'exécution d'agents de build dans le cloud est coûteuse, et l'équipe de Playrix recherchait une solution pour rendre cette solution plus rentable.

C'est à ce moment-là que Playrix s'est intéressé aux instances Spot sur AWS. TeamCity Cloud Profiles permet d'utiliser les instances Spot de façon transparente. Si l'une d'entre elles est révoquée pendant que l'agent de build exécute un build, TeamCity lance automatiquement une nouvelle instance et redémarre ce build, sans aucune intervention de la part de l'utilisateur.

Yuri a confirmé que l'exécution des agents de build sur des instances spot était quasiment 10 fois plus efficace pour Playrix. Par conséquent, l'entreprise a décidé de faire passer une majeure partie de ses agents de build Linux basés sur le cloud vers des instances spot.


Résultat final

En déplaçant le serveur TeamCity et la majorité des agents de build vers AWS, l'équipe Playrix a mis en place une solution CI/CD à haute disponibilité.

TeamCity Cloud Profiles permet de faire évoluer automatiquement les agents de build de Playrix en augmentant la capacité pendant les pics d'activité, et en la réduisant au cours de la nuit. Cela a permis d'accélérer les builds et d'utiliser les ressources plus efficacement.

L'utilisation d'instances Spot a permis à Playrix d'exécuter sa ferme d'agents de build de façon plus économique, en divisant les coûts quasiment par dix.

Témoignages de clients similaires

Picnic

Ivan Babiankou, ingénieur logiciel en chef chez Picnic

Nous recherchions une solution gérée pour tous nos cas d'utilisation de CI. Nous avions également besoin d’agents autohébergés pour contrôler les logiciels que nous exécutons et les outils précis utilisés. TeamCity Cloud, combiné à des agents autohébergés, a fourni une solution sur mesure. Notre équipe de plus de 300 ingénieur·es l’utilise avec plaisir et elle booste notre productivité.

Brightify

Tadeas Kriz, CTO et cofondateur, Brightify

Nos révisions de code se sont considérablement améliorées et nous avons pu tirer parti des webhooks de Space avec TeamCity pour générer chaque branche révisée et la déployer vers notre assurance qualité afin de tester la branche avant de la fusionner. Il est désormais également plus facile de savoir qui est absent du bureau.

Miquido

Piotr Polus, responsable technique du front-end chez Miquido

Nous avons choisi JetBrains pour trois raisons : la praticité, la configurabilité et la disponibilité élevée des plugins.

Plus de témoignages