Industrie: Spielentwicklung

Verwendete JetBrains-Produkte: TeamCity

Organisationsgröße: 500-1000

Land: Irland

Playrix

Playrix ist eines der größten Game-Entwicklungsstudios der Welt. Von seinem Hauptsitz in Dublin (Irland) aus bedient das Unternehmen täglich über 30 Millionen Benutzer*innen weltweit. Playrix setzt JetBrains TeamCity im täglichen CI/CD-Betrieb ein, um für verschiedene Plattformen über 10.000 Builds pro Tag zu erstellen.

„Wir entschieden uns letztendlich für eine hybride Cloud-Lösung mit TeamCity-Cloud-Profilen und AWS. Darüber hinaus verwendeten wir On-Premises-Computer für die Build-Agents. Durch diese Kombination konnten wir tagsüber beliebig viele Builds unterbringen und gleichzeitig einen Grundstock an Agents für die Nebenzeiten bereitstellen. Wir konnten also standortunabhängig alles ausführen, was wir wollen.“

— Yuri Trufanov, Executive Technical Director für Technologieplattformen

Über Playrix

Playrix ist eines der größten Game-Entwicklungsstudios der Welt. Von seinem Hauptsitz in Dublin (Irland) aus bedient das Unternehmen täglich über 30 Millionen Benutzer*innen weltweit. Zu den bekanntesten Schöpfungen des Studios gehören die Spiele Homescapes, Fishdom und Gardenscapes. Im Jahr 2021 wurde Homescapes, die populärste App des Unternehmens, 98 Millionen Mal aus dem Apple App Store und von Google Play heruntergeladen.

CI/CD-Kennzahlen

Playrix ist ein großes Game-Entwicklungsstudio, das über 10.000 Builds pro Tag erstellt. Das Unternehmen nutzt 220 TeamCity-Build-Agents, die CI/CD für über 2500 Projekte bereitstellen und von mehr als 500 interne Benutzer*innen verwendet werden. Die riesigen Playrix-Repositories können bis zu 50 GB umfassen, und die generierten Artefakte sind bis zu 100 GB groß.

Playrix verwendet JetBrains TeamCity als CI/CD-Lösung für rund 500 aktive Benutzer*innen. Der TeamCity-Server und die meisten Build-Agents werden in AWS ausgeführt.

Wir haben Yuri Trufanov, Executive Technical Director für Technologieplattformen bei Playrix, gefragt, wie das Unternehmen es schafft, täglich Tausende von Builds für verschiedene Plattformen zu erstellen. Yuris Team ist für die Wartung und Entwicklung der internen Infrastruktur und der Testinfrastruktur der Playrix-Services zuständig. Außerdem entwickelt, skaliert und automatisiert das Team die CI/CD-Prozesse.


Probleme von Playrix vor der Cloud-Migration

Vor dem Umzug in die Cloud waren sowohl der TeamCity-Server als auch die Build-Agents in einem der lokalen Büroräume installiert. Die Entwickler*innen hingegen arbeiteten von unterschiedlichen Standorten aus und mussten sich alle mit diesem einen TeamCity-Server verbinden.

Ursprüngliches Setup von Playrix

In der Vergangenheit hatte dieser Aufbau den Anforderungen des Unternehmens genügt. Irgendwann konnte er jedoch nicht mehr mit dem Wachstum des Unternehmens mithalten.

Verfügbarkeit

Der Nachteil eines Büroservers lag darin, dass bei einer Störung in diesem Büro (z. B. Strom- oder Netzwerkausfall) die Entwickler*innen nicht mehr auf ihre Builds zugreifen konnten. Das Playrix-Team ist auf 40 Länder verteilt, und TeamCity wird von 500 Benutzer*innen verwendet. Für das Unternehmen ist es daher entscheidend, einen zuverlässigen, reaktionsschnellen und leistungsstarken CI/CD-Server zu haben, der stets verfügbar ist.

Warteschlangen und lange Build-Zeiten

Mit der fortschreitenden Entwicklung der Projekte wurde es immer schwieriger, die lokale CI/CD-Infrastruktur zu skalieren. Bei Playrix wird nach jedem Commit ein Build erstellt. Dies führte dazu, dass in der Spitzenzeit jeder Build Stunden in der Warteschlange verbrachte. Das Unternehmen hätte Hunderte Build-Agents benötigt, hatte aber nur 20 zur Verfügung.

Eine mögliche Lösung wäre der Ausbau der CI/CD-Infrastruktur gewesen – dies hätte sich jedoch umständlich gestaltet und zusätzlichen Aufwand beim Konfigurationsmanagement bedeutet.


Problemlösung mit TeamCity und AWS

Erhöhung der Zuverlässigkeit und Verfügbarkeit des CI/CD-Systems

Das Team begann, die Verfügbarkeit seines CI/CD-Systems zu verbessern, indem es den TeamCity-Server und den Artefaktspeicher in die Cloud verlagerte und die Ausführung der Build-Agents auf mehrere On-Premises-Standorte verteilte. „Mit einem Server in der Cloud funktioniert es zuverlässiger. Normalerweise ist die Verbindung auf diese Weise berechenbarer, als wenn der Server irgendwo in einem entfernten Büro aufgestellt ist“, sagt Yuri Trufanov.

Verbesserung der Zuverlässigkeit

Das Team hat den TeamCity-Server in einer automatisch skalierenden Gruppe in einem Docker-Container untergebracht und einen Nomad-Orchestrator eingerichtet. Auf Basis des Orchestrators richtete das Team einen Task in TeamCity ein, der dafür sorgt, dass im Falle eines Hardwarefehlers die Jobs auf eine andere Instanz verschoben werden und der Betrieb reibungslos weiterläuft.

Das Team verlagerte auch die Speicherung der Build-Artefakte auf Amazon S3 Artifact Storage, und die TeamCity-Datenbank wird in Amazon Aurora MySQL gespeichert.

Das Endergebnis war ein wesentlich zuverlässigeres und stabileres System. Build-Artefakte werden in AWS gespeichert, wo auch Backups erstellt werden. Wenn es in einem der Büros einen Ausfall gibt, wird die Warteschlange nur ein wenig länger – aber alles funktioniert weiterhin.

Aktuelle Aufbau des Playrix-Buildfarms

Automatische Skalierung von Build-Agents in der Cloud

Ein weiteres Problem für das Playrix-Team war, dass die Entwickler*innen tagsüber eine enorme Rechenpower für ihre Builds benötigten, während nachts alle Build-Agents untätig waren. Das Team wollte seine Ressourcen effizienter einsetzen und die Kosten optimieren.

Die Lösung lag im Einsatz von TeamCity-Cloud-Profilen. In einem TeamCity-Cloud-Profil lassen sich alle Konfigurationseinstellungen festlegen, die TeamCity benötigt, um Build-Agents in der Cloud zu starten: der gewünschte Instanztyp, die benötigten Ressourcen, die Cloud-Plattform für die Ausführung und das zu verwendende Image. TeamCity bietet standardmäßige Unterstützung für die von Playrix benötigten Cloud-Anbieter, einschließlich AWS.

Playrix entschied sich am Ende für eine Hybridlösung. Die macOS-Builds werden weiterhin auf On-Premises-Computern erstellt, während die Linux- und Windows-Build-Agents in die Cloud verlagert wurden, wo sie bei Bedarf skaliert werden können. Dadurch konnte das Unternehmen das Problem der langen Warteschlangen und der langsamen Build-Zeiten lösen.

„Wir entschieden uns letztendlich für eine hybride Cloud-Lösung mit TeamCity-Cloud-Profilen und AWS. Darüber hinaus verwendeten wir On-Premises-Computer für die Build-Agents. Durch diese Kombination konnten wir tagsüber beliebig viele Builds unterbringen und gleichzeitig einen Grundstock an Agents für die Nebenzeiten bereitstellen. Wir konnten also standortunabhängig alles ausführen, was wir wollen“, so Yuri Trufanov, Executive Technical Director von Playrix.


Suche nach Möglichkeiten zur Kostenoptimierung

Diese Flexibilität hatte allerdings ihren Preis. Die Ausführung von Build-Agents in der Cloud ist teuer, und das Playrix-Team suchte nach Möglichkeiten, diese Lösung kosteneffizienter zu realisieren.

Dabei prüfte Playrix auch die Nutzung von Spot-Instanzen auf AWS. Mit TeamCity-Cloud-Profilen können Spot-Instanzen problemlos verwendet werden. Wird eine Spot-Instanz deaktiviert, während der Build-Agent einen Build ausführt, startet TeamCity automatisch eine neue Instanz beginnt diesen Build neu, ohne dass ein Benutzereingriff erforderlich wird.

Es stellte sich heraus, dass der Betrieb von Build-Agents auf Spot-Instanzen fast zehnmal günstiger für Playrix ist. Deshalb hat das Team beschlossen, einen großen Teil der Cloud-basierten Linux-Build-Agents auf Spot-Instanzen umzustellen.


Endergebnis

Mit der Verlagerung des TeamCity-Servers und der Mehrzahl der Build-Agents zu AWS hat das Playrix-Team eine hochverfügbare CI/CD-Lösung geschaffen.

Mithilfe der TeamCity-Cloud-Profile konnte das Team auch seine Build-Agents automatisch skalieren – in den Stoßzeiten nach oben und nachts nach unten. Dadurch konnte das Team die Buildvorgänge beschleunigen und Ressourcen effizienter nutzen.

Durch den Einsatz von Spot-Instanzen kann Playrix seine Build-Agent-Farm effizienter betreiben – die Kosten wurden fast auf ein Zehntel reduziert.

Ähnliche Kundenstudien

Picnic

Ivan Babiankou, Staff Software Engineer, Picnic

Wir waren auf der Suche nach einer Managed-Lösung für die Gesamtheit unserer CI-Anwendungsfälle. Darüber hinaus benötigten wir selbstgehostete Agents, um die Kontrolle über die verwendete Software und die genauen Tools zu behalten. TeamCity Cloud mit selbstgehosteten Agents ist eine maßgeschneiderte Lösung, die von den mehr als 300 Entwickler*innen unseres Teams gerne genutzt wird und unsere Produktivität auf ein neues Niveau hebt.

Brightify

Tadeas Kriz, CTO und Mitgründer von Brightify

Unsere Code-Reviews haben sich erheblich verbessert, und mithilfe der Webhooks von Space zu TeamCity können wir nach einem erfolgten Review einen Build vom jeweiligen Branch erstellen und für unsere Qualitätssicherung bereitstellen, damit der Branch vor dem Merge getestet werden kann. Abwesenheiten lassen sich jetzt auch einfacher verfolgen.

Miquido

Piotr Polus, Technischer Leiter Frontend, Miquido

Wir haben uns aus drei Gründen für JetBrains entschieden: unkomplizierte Nutzung, Konfigurierbarkeit und einfache Verfügbarkeit von Plugins.

Weitere Kundenstudien