1 Punkte von GN⁺ 2024-08-10 | 1 Kommentare | Auf WhatsApp teilen

Cookie-Einstellungen und Newsletter-Abonnement

  • Diese Website verwendet Cookies, Pixel-Tags und Local Storage für Leistung, Personalisierung und Marketing.
  • Standardmäßig sind nur unbedingt erforderliche Cookies aktiviert.
  • Ein Newsletter-Abonnement ist möglich.

Figma-Migration zu Kubernetes

  • Autor: Ian VonSeggern, Engineering Manager für Software bei Figma
  • Thema: Wie und warum Figma innerhalb von 12 Monaten auf Kubernetes migriert ist

Figma-Computing-Plattform

  • Anfang 2023 wurde die Arbeit abgeschlossen, alle Services in Containern auszuführen.
  • Mit AWS Elastic Container Service (ECS) wurden containerisierte Workloads schnell gestartet.
  • Aus langfristiger Perspektive begann man, über die nächste Version der Computing-Plattform nachzudenken.

Fehlende Kubernetes-Funktionen

  • Einige Einschränkungen von ECS kosteten viel Engineering-Zeit.
  • Da die StatefulSets-Funktion von Kubernetes in ECS fehlt, war der Betrieb eines etcd-Clusters schwierig.
  • Es fehlte Unterstützung für Service-Definitionen über Helm-Charts.
  • Beim Ausführen von EC2 in ECS war es schwierig, eine einzelne EC2-Maschine stillzulegen.

Zugang zum Ökosystem der Cloud Native Computing Foundation

  • Mit ECS lassen sich Open-Source-Technologien aus dem CNCF-Ökosystem nicht nutzen.
  • Das Kubernetes-Ökosystem bietet starke Auto-Scaling-Funktionen.
  • Auch die mögliche Einführung eines Service Mesh wurde in Betracht gezogen.

Vorteile einer weit verbreiteten Plattform

  • Kubernetes wird von vielen großen Unternehmen genutzt und ist damit als stabile Lösung bewährt.
  • Vendor Lock-in lässt sich vermeiden.
  • Es ist einfacher, Engineers mit Kubernetes-Erfahrung einzustellen.

Festlegung des Migrationsumfangs

  • Um die Migration sicher durchzuführen, wurden Änderungen an Kernsystemen minimiert.
  • Das Ziel war der Wechsel zu EKS.
  • Einige Verbesserungen wurden in den Migrationsumfang aufgenommen.

In die Migration einbezogene Verbesserungen

  • Developer Experience: Service-Definitionen und Deployment-Prozesse wurden vereinfacht.
  • Höhere Zuverlässigkeit: Mit drei EKS-Clustern wurde die Zuverlässigkeit der Services erhöht.
  • Kosteneffizienz: Unterstützung für Node Auto Scaling senkt die Kosten.

Nicht im Umfang enthaltene Arbeiten

  • Arbeiten zur Behebung der Komplexität der Log-Pipeline wurden ausgeschlossen.
  • Arbeiten zum Auto Scaling auf Pod-Ebene wurden ausgeschlossen.

Sichere Durchführung der Migration

  • Load-Tests: Es wurden Load-Tests durchgeführt, um die Performance der Cluster zu verstehen.
  • Mechanismus für schrittweise Rollouts: Mit gewichteten DNS-Einträgen wurde der Traffic schrittweise umgeleitet.
  • Betrieb echter Services: Echte Services wurden in der Staging-Umgebung betrieben, um Probleme frühzeitig zu erkennen.
  • Minimierung benutzerdefinierter YAMLs: YAML-Definitionen, die Nutzer verwirren könnten, wurden auf ein Minimum reduziert.
  • Enge Zusammenarbeit mit Service-Ownern: Gemeinsam mit den Service-Ownern wurden Monitoring und Alerts aktualisiert.
  • Passende personelle Besetzung: Es wurde ein Team zusammengestellt, das unerwartete Probleme lösen konnte.

Ergebnis der Migration

  • Bis Januar 2024 wurden die wichtigsten Services auf EKS-Cluster migriert.
  • Dadurch wurden Vorteile wie Kostensenkung, höhere Zuverlässigkeit und eine bessere Developer Experience erzielt.

Zeitraum nach dem Launch

  • Tools für den Benutzerzugriff wurden durch automatische Ableitung von Clustern und Rollen verbessert.
  • Geplant sind Arbeiten wie die Vereinfachung der Log-Pipeline, Unterstützung für Horizontal Pod Autoscaling und die Migration auf Graviton-Prozessoren.

Zusammenfassung von GN⁺

  • Figma erreichte mit der Migration von ECS zu Kubernetes Kostensenkungen, höhere Zuverlässigkeit und eine bessere Developer Experience.
  • Durch die Nutzung von Open-Source-Technologien aus dem CNCF-Ökosystem wurden die Möglichkeiten für Auto Scaling und die Einführung eines Service Mesh erweitert.
  • Während der Migration wurden sichere Methoden wie Load-Tests, schrittweise Rollouts und der Betrieb echter Services eingesetzt.
  • Nach dem Launch wurden die Tools für den Benutzerzugriff verbessert, weitere Optimierungen sind geplant.

1 Kommentare

 
GN⁺ 2024-08-10
Hacker-News-Kommentare
  • Es gibt einen Nutzer, der k8s mag

    • Betreibt mehrere kleine, komplexe, individuell angepasste E-Commerce-Shops
    • Kümmert sich auch um Marketing, Finanzen und Kundenservice
    • Früher wurden dedizierte Server genutzt, aber Deployments waren ein Albtraum
    • Der Umstieg auf k8s dauerte einen Monat
    • Betreibt 25 verschiedene Services
    • Die Cluster-Konfiguration wurde an einem Ort gebündelt, sodass der Zustand der Services genau erkennbar ist
    • Rolling Deployments ohne Downtime sind möglich geworden
    • Es ist komplex, aber als Programmierer ist man an Komplexität gewöhnt
    • Wenn man die k8s-Architektur versteht, kann man noch mehr lernen
    • Hohe Verfügbarkeit (HA) ist sehr nützlich
    • Die Hosting-Kosten liegen bei etwa 400 Dollar pro Monat
  • Eine Migration zur Verbesserung der Infrastruktur ist gut

    • Es ist überraschend, dass man nicht auf Terraform umstellt, um Helm-Charts zu verwenden
    • Helm-Charts unverändert zu verwenden, ist inkonsistent
    • Helm ist ein schwer wartbares Tool
    • Es ist besser, alles in Terraform neu zu schreiben
    • Man fragt sich, ob die Probleme von Helm inzwischen gelöst wurden
  • Die vielen Anti-k8s-Meinungen auf HN sind überraschend

    • Viele Kommentatoren nutzen wahrscheinlich Dienste wie Heroku, Fly.io, Render.com oder lassen Apps auf VMs laufen
  • Deployment-Management mit Terraform und ECS ist übermäßig komplex

    • Schon das Hinzufügen von Umgebungsvariablen ist kompliziert
    • Den Teil mit der Template-Erzeugung versteht man, aber insgesamt ist es komplex
  • Es wird bezweifelt, dass eine Migration zu Kubernetes mehrere Jahre dauern muss

    • Man versteht nicht, warum Unternehmen solche Migrationen versuchen
    • Es ist fraglich, welchen Nutzen die Kunden davon haben
    • Es wird bezweifelt, dass Entscheidungen auf Basis technischer Wünsche für Nutzer überhaupt Bedeutung haben
  • Es wirkt, als würden Entscheidungen in großen Organisationen nicht auf den Bedürfnissen der Nutzer oder des Unternehmens basieren

    • Auch beim früheren Beitrag von Figma zur Datenbankmigration hatte man ein ähnliches Gefühl
    • Es wird bezweifelt, dass Entscheidungen auf Basis technischer Wünsche für Nutzer überhaupt Bedeutung haben
  • Man fragt sich, ob es bei modernen Systemen oder Services überhaupt etwas gibt, worauf man stolz sein könnte, wenn die Migration innerhalb eines Jahres abgeschlossen wurde

  • Es macht Spaß, Berichte aus der Praxis zu lesen

    • Man lernt immer etwas Neues
    • Danke fürs Teilen
  • Dieser Artikel erklärt die Vorteile von Kubernetes klar

    • Viele wechseln zu Kubernetes, ohne die Vorteile zu kennen
    • Die hier genannten Gründe sind gut
  • Man fragt sich, wie lange es dauern würde, die Migration wieder rückgängig zu machen