Vorwort
Als wir 2017 mit dem Schreiben von Continuous Delivery in Java begannen, wussten sowohl Abraham Marín-Pérez als auch ich, dass DevOps ein wichtiger Teil unseres Buches sein würde. Seitdem ist es für Java-Entwickler/innen nur noch wichtiger geworden, die operativen Konzepte zu kennen und zu verstehen. Mit dem Aufkommen von Technologien wie Cloud und Containern und den unterstützenden Konzepten von Observability und Site Reliability Engineering (SRE) sind die meisten von uns nicht mehr "nur" Entwickler; wir sind jetzt oft für die Codierung, den Versand und den Betrieb unserer Anwendungen verantwortlich. Daher ist es sinnvoll, dass Entwickler/innen die Betriebsabläufe kennenlernen und umgekehrt.
Der Begriff DevOps ist nicht neu; er wird schon seit etwa 15 Jahren verwendet. Ursprünglich basierte das Konzept auf der agilen Infrastruktur, die aus der Agile Conference 2008 in Toronto hervorging, wo Patrick Debois, Andrew Clay Shafer und viele andere zusammenkamen, um die Herausforderungen der traditionellen Systemadministration zu diskutieren. Der Wunsch, die Infrastruktur zu "programmieren", bedeutete, dass die Softwareentwicklung in diesem Bereich schon immer eine Rolle gespielt hat. Auf der O'Reilly Velocity-Konferenz 2009 hielten John Allspaw und Paul Hammond ihren berühmt gewordenen Vortrag mit dem Titel "10 Deploys a Day: Dev and Ops Cooperation at Flickr", in dem sie die Bedeutung der Zusammenarbeit von Entwicklern und Technikern unterstrichen.
In meiner täglichen Arbeit bei Ambassador Labs erlebe ich, wie immer mehr Unternehmen Plattformen aufbauen, die es Entwicklern ermöglichen, ihre Ideen und ihren Code schnell in die Produktion und vor die Kunden zu bringen. Die beiden wichtigsten Ziele sind dabei, schnelles Feedback zu erhalten und dies sicher zu tun, ohne Abstürze oder Sicherheitsvorfälle. Meiner Meinung nach sind diese Plattformen das Ergebnis einer effektiven Zusammenarbeit von Entwicklung und Betrieb.
Aus den Untersuchungen von Dr. Nicole Forsgren, Jez Humble und Gene Kim, die in dem lesenswerten Buch Accelerate (IT Revolution Press, 2018) festgehalten wurden, wissen wir, dass leistungsstarke Unternehmen eine höhere Bereitstellungsfrequenz, eine geringere Vorlaufzeit für Änderungen, eine geringere Fehlerquote bei Änderungen und eine geringere durchschnittliche Zeit für die Wiederherstellung von Produktionsproblemen haben. All diese Faktoren werden von deiner Plattform, deinen Prozessen und deinen Mitarbeitern beeinflusst. Entwickler/innen müssen wie Betreiber/innen denken und Betreiber/innen müssen sich die Entwicklungsprinzipien zu eigen machen. Es geht um gemeinsame Verantwortung, und die beginnt mit einem gemeinsamen Verständnis. Dieses Buch wird dir helfen, dieses gemeinsame Verständnis zu entwickeln.
Als Entwickler hast du zweifellos in den letzten zehn Jahren die Versionskontrolle genutzt, um deinen Anwendungscode zu speichern und zu verwalten. Moderne DevOps-Praktiken wie GitOps gehen noch einen Schritt weiter und speichern Anwendungs- und Infrastrukturcode sowie die Konfiguration in der Versionskontrolle. Daher ist es unerlässlich, die in den ersten Kapiteln vorgestellten Kenntnisse über Versionskontrollsysteme zu erlernen.
Das Aufkommen von Microservices hat Entwicklern viele Möglichkeiten eröffnet, aber auch viele Herausforderungen mit sich gebracht. Einige dieser Herausforderungen können durch den Einsatz geeigneter Technologien entschärft werden. Container und entsprechende Zeitplanungsprogramme wie Kubernetes helfen dabei, Microservices standardisiert und automatisiert zu verpacken und auszuführen.
Natürlich musst du auch die Auswirkungen dieser "Cloud Native"-Technologien auf die Praktiken der kontinuierlichen Integration und der kontinuierlichen Bereitstellung verstehen. Die Autoren dieses Buches haben hervorragende Arbeit geleistet, indem sie dich durch alle damit verbundenen Schritte geführt haben, von der Paketverwaltung über die Sicherung von Artefakten bis hin zum Deployment.
Ich hatte das Glück, von allen Autoren aus erster Hand zu lernen. Ich kann gar nicht mehr zählen, wie oft ich auf einer DevOps-Konferenz war, auf der Menschenmassen umherliefen, nur um Baruchs markanten Zylinder zu sehen, der sich langsam durch die Menge bewegte, oder um mit einem Motorradfahrer in Lederjacke zusammenzustoßen, nur um festzustellen, dass es Stephen ist. Von diesem Zeitpunkt an weiß ich, dass ich bald in interessante Gespräche über Continuous Delivery und das Java-Ökosystem verwickelt sein werde.
Ich habe auch Melissas Lektionen über den Aufbau und die Sicherung von Containern im Rahmen ihrer Arbeit bei JFrog mit Interesse verfolgt. Und zu sehen, wie sie auf dem Jfokus 2021 live (und unerwartet!) als Java Champion ausgezeichnet wurde, war ein großartiger Moment. Ixchel hat die Java- und JVM-Szene schon lange geprägt. Seit ich 2013 zum ersten Mal auf der JavaOne war - wo sie gemeinsam mit Andres Almiray einen Vortrag über die Zukunft der polyglotten JVM hielt - habe ich viele Dinge von ihr gelernt, die mich zu einem besseren Entwickler gemacht haben.
Im Laufe der Jahre hatte ich auch das Privileg, zusammen mit Ana-Maria Mihalceanu (die Kapitel 8 geschrieben hat) an mehreren Panels teilzunehmen, zuletzt zu Themen wie Container, Kubernetes und Quarkus. Es macht mir immer Spaß, ihre Meinung zu den Auswirkungen neuer Technologien auf die Java-Plattform zu hören, und ich verlasse unser Gespräch in der Regel mit einem Haufen neuer Tools, die ich erforschen möchte.
Egal, ob du ein erfahrener Java-Programmierer bist, der neu im Bereich DevOps ist, oder ein Anfänger, der sein Wissen über Container und die Cloud erweitern möchte - ich bin sicher, dass du aus diesem Buch viel lernen wirst. Also, worauf wartest du noch? Setz dich hin, nimm dein Lieblingsgetränk (vielleicht eine Tasse Java?) und mach dich bereit, dich in Sachen DevOps-Tools für Java-Entwickler/innen weiterzubilden.
Get DevOps-Tools für Java-Entwickler 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.