Figma migriert seine Compute-Plattform zu Kubernetes
Figma hat seine Compute-Plattform von AWS ECS auf Kubernetes (EKS) migriert. Dieser Prozess wurde in weniger als 12 Monaten abgeschlossen und hatte minimale Auswirkungen auf die Kunden. Der Wechsel zu Kubernetes wurde durch mehrere Faktoren motiviert, darunter die Vorteile des großen Ökosystems, das von der CNCF unterstützt wird, sowie Kosteneinsparungen, eine verbesserte Entwicklererfahrung und eine erhöhte Resilienz.
Von AWS ECS zu Kubernetes: Der Hintergrund
Figma hatte ursprünglich begonnen, seine containerisierten Workloads auf dem Elastic Container Service (ECS) von AWS auszuführen. Diese Plattform ermöglichte es, Dienste schnell und effizient in Containern bereitzustellen. Doch im Laufe der Zeit stießen die Ingenieure auf verschiedene Einschränkungen von ECS. Dazu zählte insbesondere die fehlende Unterstützung für StatefulSets oder Helm-Charts. Auch das Ausführen von OSS-Software wie Temporal war auf ECS eine Herausforderung.
Warum Kubernetes?
Die Entscheidung, zu Kubernetes zu migrieren, wurde getroffen, um von den zahlreichen Vorteilen der CNCF-Community zu profitieren. Kubernetes bietet fortschrittliche Funktionen wie die Autoskalierung mit Tools wie Keda und Karpenter sowie die Nutzung von Service Mesh-Technologien wie Istio und Envoy. Diese Technologien bieten Figma die Flexibilität und Skalierbarkeit, die für die wachsenden Anforderungen des Unternehmens notwendig sind. Ein tieferer Einblick in Technologien wie den erweiterten Berkeley Packet Filter (eBPF) in Kubernetes-Umgebungen ist hier zu finden.
Technologische Herausforderungen und Lösungen
Die Ingenieure von Figma standen vor der Herausforderung, dass ECS nicht alle Funktionen bereitstellte, die für den langfristigen Betrieb des Systems erforderlich waren. Insbesondere fehlten erweiterte Autoskalierungsmöglichkeiten und eine nahtlose Integration von offenen Softwarelösungen. Der Wechsel zu Kubernetes ermöglichte es dem Unternehmen, diese Lücken zu schließen und gleichzeitig die Entwicklererfahrung zu verbessern.
Die Migration im Detail
Nach der Entscheidung für Kubernetes legte das Team den Umfang der Migration fest. Dabei war es wichtig, die Änderungen an den bestehenden Diensten so minimal wie möglich zu halten, um Verzögerungen und Risiken zu vermeiden. Trotz dieser Einschränkung konnten spezifische Verbesserungen eingeführt werden, wie z. B. vereinfachte Ressourcenbeschreibungen und die Aufteilung der Workloads auf drei Kubernetes-Cluster. Dies sollte die Zuverlässigkeit erhöhen und die Auswirkungen von Fehlern reduzieren.
Kosteneinsparungen durch Kubernetes
Ein zentraler Aspekt der Migration war das Streben nach Kosteneinsparungen. Vor der Migration waren ECS-Dienste auf EC2 stark überprovisioniert, um während Deployments flexibel skalieren zu können. Dies verursachte hohe Kosten. Durch den Wechsel zu Kubernetes und den Einsatz von Karpenter zur dynamischen Skalierung der Knoten basierend auf der Nachfrage konnte das Unternehmen diese Kosten deutlich senken.
Die Rolle des Teams
Um den Erfolg des Projekts sicherzustellen, stellte Figma ein starkes Team zusammen, das die Migrationsanstrengungen koordinierte. Die Ingenieure bereiteten sich intensiv auf die Produktionsbereitstellung vor, indem sie Lasttests durchführten und einen schrittweisen Umschaltmechanismus mit gewichteten DNS-Einträgen implementierten. Dieser Ansatz half, mögliche Überraschungen in der Produktion zu minimieren und die Risiken zu kontrollieren.
Schrittweise Umsetzung und Optimierungen
Nach der erfolgreichen Migration der Kernservices begann das Team, sich mit weiterführenden Verbesserungen zu beschäftigen. So wurden beispielsweise die Entwicklerwerkzeuge vereinfacht, um die Arbeit mit den drei Kubernetes-Clustern zu erleichtern. Zudem wurden neue, feingranulare RBAC-Rollen eingeführt, um eine bessere Kontrolle und Sicherheitsstandards zu gewährleisten.
Fazit
Die Migration von Figma von AWS ECS zu Kubernetes war ein großer Erfolg. Innerhalb eines Jahres konnte das Unternehmen seine gesamte Compute-Plattform migrieren und dabei die Betriebsstabilität verbessern sowie signifikante Kosteneinsparungen erzielen. Kubernetes hat sich als die richtige Wahl für die Anforderungen von Figma erwiesen, da es nicht nur die nötige Skalierbarkeit und Flexibilität bietet, sondern auch ein breites Ökosystem an Tools und Funktionen zur Verfügung stellt. Die Einführung von Technologien wie Karpenter zur dynamischen Skalierung und die Vereinfachung der Entwicklererfahrung haben den Betrieb zusätzlich optimiert.
In Zukunft plant Figma, weitere Verbesserungen in der Kubernetes-Umgebung umzusetzen, um die Effizienz weiter zu steigern und die Plattform für kommende Herausforderungen zu rüsten.