Vorwort
"Zur Produktion und darüber hinaus!"
Buzz Lightyear (paraphrasiert)
Ich weiß, dass Buzz "bis zur Unendlichkeit und darüber hinaus" gesagt hat, aber diese Vorstellung gefiel mir als Kind überhaupt nicht. Wie kann man über die Unendlichkeit hinausgehen? Erst später im Leben, als ich Softwareentwickler wurde, dämmerte es mir: Software ist nie fertig. Sie ist nie fertig. Sie ist ... unendlich. Buzz hat seine Berufung in der Software verpasst!
Software hat kein Ende. Software ist wie die Ozeane, die Sterne und die Bugs in deinem Code: endlos! Das ist hoffentlich nicht unumstritten. In den letzten Jahrzehnten haben wir uns alle in der Softwarebranche um diese Erkenntnis gedreht: Der endlose Schwanz der Softwarewartung ist der teuerste Teil unserer Arbeit. Ein großer Teil der bedeutenden Bewegungen in der Softwarebranche dreht sich um diese Erkenntnis. Testen und kontinuierliche Integration. Kontinuierliche Bereitstellung. Cloud Computing. Microservices. Es ist nicht schwer, beim ersten Mal in die Produktion zu kommen, aber diese Praktiken optimieren für die vielen folgenden Reisen in die Produktion. Sie optimieren für den zweiten Tag. Sie optimieren für die Durchlaufzeit: Wie schnell kannst du eine Idee in die Produktion überführen, vom Konzept bis zum Kunden? Sie optimieren für "und darüber hinaus".
Diese Erkenntnis - dass Software kein Ende hat - führt eine Menge neuer Praktiken ein und stellt ebenso viele bestehende Praktiken in Frage. Der Schwerpunkt liegt nicht mehr auf der Entwicklung und dem MVP, sondern auf der Wartung und Verwaltung der Software. Der Fokus liegt auf der Produktion.
Ich liebe die Produktion. Du solltest die Produktion lieben. Du solltest so früh und so oft wie möglich in die Produktion gehen. Bring die Kinder mit. Bring die Familie mit. Das Wetter ist fantastisch.
Gute Softwareentwickler bauen für die Produktion und für die Rückreise. Sie bauen für die endlose Reise. Es ist nicht länger akzeptabel, unsere Hände zu ringen und unseren Code über die sprichwörtliche Mauer zu werfen: "Nun, auf meinem Rechner funktioniert er! Jetzt setzt du ihn ein!" Es gibt eine ganz neue Grenze da draußen - die Produktion -, die andere Fähigkeiten erfordert. Site Reliability Engineering (SRE) ist laut Ben Treynor, dem Gründer von Googles Site Reliability Team, "das, was passiert, wenn ein Softwareentwickler mit dem betraut wird, was man früher Betrieb nannte." SREs haben viele Fähigkeiten mit traditionellen Softwareentwicklern gemeinsam, aber sie setzen sie anders ein, mit Blick auf die Produktion.
Spring Boot-Entwickler können und sollten SRE-Fähigkeiten entwickeln, und nur wenige kennen sich damit besser aus als der Autor dieses Buches, Jonathan Schneider. Spring Boot ist erfolgreich, weil es sich ganz auf die Produktion konzentriert. Es ist außergewöhnlich, weil es, zusammen mit Frameworks wie Dropwizard, von vorn bis hinten für die Produktion entwickelt wurde. Es unterstützt die einfache Aggregation von Metriken mit Micrometer, so genannte Fat .jar Deployments, die Actuator Management Endpunkte, Application Life Cycle Events, 12 Factor-style Konfiguration und vieles mehr. Spring Cloud ist eine Reihe von Spring Boot-Erweiterungen zur Unterstützung der Microservices-Architektur. Von der umfangreichen Plattformunterstützung ganz zu schweigen. Spring Boot ist container-nativ. Es und Plattformen wie Cloud Foundry oder Kubernetes sind zwei Seiten derselben Medaille. Spring Boot unterstützt Graceful Shutdown, Health Groups, Liveness und Readiness Probes, die Bilderzeugung für Docker (unter Verwendung von CNCF Buildpacks) und vieles mehr.
Und ich wette, du wusstest von den meisten dieser Funktionen nichts! Aber Jonathan weiß es. Jonathan lebt und atmet diese Dinge. Er hat das Micrometer-Projekt ins Leben gerufen, ein dimensionales Metrik-Framework, das Dutzende verschiedener Metriken und Überwachungsplattformen unterstützt, und dann geholfen, es in das Actuator-Modul von Spring Boot und in zahllose andere Open-Source-Projekte zu integrieren. Ich habe beobachtet, wie er an Metriken, Continuous-Delivery-Tools wie Spinnaker und Observability-Tools wie Micrometer gearbeitet und anderen den Weg zur Produktion geebnet hat. Er verfügt über jahrelange Erfahrung in der Nutzung von Spring und Spring Boot auf globaler Ebene, und obwohl er Spring Data Repositories und HTTP-APIs mit Bravour beherrscht, liegt seine Genialität in der Art und Weise, wie er für diese endlose Reise baut.
Und jetzt können wir in diesem Buch von ihm lernen.
Kapitel 1 ist eine Art Manifest - lies es, um dich auf das Buch einzustimmen. Ich hätte dieses Kapitel zuerst lesen sollen!
Ich hätte es tun sollen, aber ich habe es nicht getan. Ich habe Kapitel 2 übersprungen, in dem es um die Instrumentierung und die Metriken geht. Obwohl ich das Buch unbedingt von vorne bis hinten lesen wollte, war ich auf dieses Kapitel am meisten gespannt. Es ist nicht verwunderlich, dass der Erfinder von Micrometer die Konzepte in diesem Kapitel so gut formulieren konnte. Die Kapitel 2 bis 4 sind ein paar gut investierte Stunden. Sie sind brillant. 5/5: Ich würde es wieder lesen (und habe es auch getan).
In Kapitel 5 werden die Clouds, die Kernkonzepte, die Arten von Plattformen und die für diese Plattformen typischen Muster vorgestellt. Dieses Kapitel war für mich eines der aufschlussreichsten. Es fängt langsam an, und als Nächstes beschäftigst du dich mit deinen Deployment-Skripten und diskutierst über Continuous Delivery, Canary-Analyse und mehr. Lies dieses Kapitel zweimal.
Kapitel 6 bietet dir ein Framework und spezifische Lösungen, um deine Codebasis und ihre Abhängigkeiten zu verstehen. Ich habe noch nie gesehen, dass all diese Aspekte in einem so umfassenden Rahmenwerk dargestellt werden.
Kapitel 7 ist ein passendes Abschlusskapitel für ein erstaunliches Buch, denn es befasst sich mit den Interaktionen der eingesetzten Dienste in der Produktion. Bis zu diesem Punkt hast du gelernt, wie du die Software in die Produktion bringst und wie du die Dienste und ihren Quellcode beobachten kannst. In diesem Kapitel dreht sich alles um die Interaktionen zwischen den Diensten und die Dynamik der Last auf einer Architektur.
Ich habe in jedem Kapitel etwas Neues gelernt. Das Buch ist voll von der Weisheit eines echten Cloud Natives, und ich denke, die Community braucht das. Jonathan ist ein fantastischer Wegweiser auf der endlosen Reise zur Produktion ... und darüber hinaus.
Get SRE mit Java Microservices now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.