Читать книгу Kubernetes - Kelsey Hightower - Страница 17
1.2.3Entwicklungs-Teams mit Microservices skalieren
ОглавлениеWie sich in einer Reihe von Untersuchungen gezeigt hat, ist die ideale Teamgröße das »Zwei-Pizza-Team« – etwa sechs bis acht Personen –, weil diese Gruppengröße häufig zu einer guten Wissensverteilung, schnellen Entscheidungen und einem teamweiten Verständnis für die Aufgaben führt. Größere Teams tendieren dazu, mit Hierarchien, schlechter Sichtbarkeit und Machtkämpfen zu hadern, was ihre Agilität und ihren Erfolg einschränkt.
Für viele Projekte sind aber deutlich mehr Ressourcen notwendig, um erfolgreich zu sein und die Ziele zu erreichen. Daher gibt es einen Konflikt zwischen der idealen Teamgröße für gute Agilität und der notwendigen Teamgröße für das Erreichen der Produktziele.
Die übliche Lösung für diese Spannung ist das Entwickeln in entkoppelten, serviceorientierten Teams, die jeweils einen einzelnen Microservice bauen. Jedes kleine Team ist für das Design und die Auslieferung eines Service verantwortlich, der von anderen kleinen Teams konsumiert wird. Das Zusammenführen all dieser Services bildet dann schließlich die Implementierung der Schnittstelle des Gesamtprodukts.
Kubernetes stellt eine Reihe von Abstraktionen und APIs bereit, die es leicht machen, diese entkoppelte Microservice-Architektur zu bauen.
Pods – Gruppen von Containern – können von verschiedenen Teams entwickelte Container-Images zu einer einzelnen deploybaren Einheit verbinden.
Kubernetes-Services bieten Load Balancing, Naming und Discovery, um einen Microservice von anderen zu isolieren.
Namensräume bieten Isolation und Zugriffskontrolle, sodass jeder Microservice steuern kann, inwieweit andere Services mit ihm interagieren können.
Ingress-Objekte dienen als einfach zu nutzendes Frontend, das mehrere Microservices zu einer einzelnen externalisierten API kombinieren kann.
Und schließlich sorgt das Entkoppeln des Anwendungs-Container-Image und der Maschine dafür, dass verschiedene Microservices auf derselben Maschine laufen können, ohne sich gegenseitig ins Gehege zu kommen, was den Overhead und die Kosten der Microservice-Architektur verringert. Die Healthchecking- und Rollout-Features von Kubernetes garantieren ein konsistentes Vorgehen beim Anwendungs-Rollout und eine Zuverlässigkeit, die sicherstellt, dass eine Zunahme von Microservice-Teams nicht auch zu einer Zunahme unterschiedlicher Vorgehensweisen beim Lebenszyklus für die Service-Erstellung und in Operations führt.