Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Microservices sind ein Ansatz für verteilte Systeme, der die Verwendung von feinkörnigen Diensten fördert, die unabhängig voneinander geändert, eingesetzt und freigegeben werden können. Für Organisationen, die sich auf lose gekoppelte Systeme mit autonomen Teams, die benutzerorientierte Funktionen bereitstellen, zubewegen, funktionieren Microservices unglaublich gut. Darüber hinaus bieten Microservices eine Vielzahl von Optionen für den Aufbau von Systemen und geben uns viel Flexibilität, um sicherzustellen, dass unser System sich an die Bedürfnisse der Nutzerinnen und Nutzer anpassen kann.
Microservices haben aber auch ihre Schattenseiten. Als verteiltes System bringen sie eine Menge Komplexität mit sich, von der selbst für erfahrene Entwickler/innen vieles neu sein kann.
Die Erfahrungen von Menschen auf der ganzen Welt und das Aufkommen neuer Technologien haben einen tiefgreifenden Einfluss darauf, wie Microservices eingesetzt werden. Dieses Buch bringt diese Ideen zusammen mit konkreten Beispielen aus der Praxis und hilft dir zu verstehen, ob Microservices das Richtige für dich sind.
Wer sollte dieses Buch lesen?
Der Umfang von Building Microservices ist breit gefächert, da auch die Auswirkungen von Microservice-Architekturen breit gefächert sind. Das Buch richtet sich daher an alle, die sich für Aspekte des Designs, der Entwicklung, der Bereitstellung, des Testens und der Wartung von Systemen interessieren. Diejenigen unter euch, die sich bereits auf den Weg zu feineren Architekturen gemacht haben, sei es für eine neue Anwendung oder als Teil der Zerlegung eines bestehenden, eher monolithischen Systems, werden viele praktische Ratschläge finden, die ihnen helfen. Dieses Buch hilft auch denjenigen, die wissen wollen, worum es geht, damit sie entscheiden können, ob Microservices das Richtige für sie sind.
Warum ich dieses Buch geschrieben habe
Zum einen habe ich dieses Buch geschrieben, weil ich sicherstellen wollte, dass die Informationen in der ersten Ausgabe weiterhin aktuell, genau und nützlich sind. Ich habe die erste Ausgabe geschrieben, weil es wirklich interessante Ideen gab, die ich teilen wollte. Ich hatte das Glück, dass ich in einer Position war, in der ich die Zeit und die Unterstützung hatte, um die erste Ausgabe zu schreiben, und dass ich dies von einem ziemlich unvoreingenommenen Standpunkt aus tun konnte, weil ich nicht für einen großen Technologieanbieter arbeitete. Ich habe keine Lösung verkauft, und ich hoffe, dass ich auch keine Microservices verkauft habe - ich fand die Ideen einfach faszinierend, und es hat mir Spaß gemacht, das Konzept der Microservices auszupacken und Wege zu finden, es weiter zu verbreiten.
Wenn ich es genau nehme, habe ich eine zweite Ausgabe aus zwei Gründen geschrieben. Erstens hatte ich das Gefühl, dass ich dieses Mal bessere Arbeit leisten kann. Ich habe mehr gelernt und bin hoffentlich als Autor ein bisschen besser geworden. Aber ich habe diese zweite Ausgabe auch geschrieben, weil ich einen kleinen Teil dazu beigetragen habe, dass diese Ideen den Mainstream erreicht haben, und als solcher habe ich die Pflicht, dafür zu sorgen, dass sie auf eine vernünftige, ausgewogene Weise präsentiert werden. Microservices sind für viele zur Standardarchitektur geworden. Das ist meiner Meinung nach schwer zu rechtfertigen, und ich wollte die Gelegenheit nutzen, um zu erklären, warum.
Dieses Buch ist weder ein Pro- noch ein Anti-Microservices-Buch. Ich möchte nur sicherstellen, dass ich den Kontext, in dem diese Ideen gut funktionieren, richtig erforscht und die Probleme, die sie verursachen können, aufgezeigt habe.
Was hat sich seit der ersten Ausgabe geändert?
Ich habe die erste Ausgabe von Building Microservices in etwa einem Jahr geschrieben, beginnend Anfang 2014, und das Buch wurde im Februar 2015 veröffentlicht. Das war eine frühe Phase der Microservices-Geschichte, zumindest was das Bewusstsein der Branche für den Begriff angeht. Seitdem haben sich Microservices in einer Weise durchgesetzt, die ich nicht vorhersehen konnte. Mit diesem Wachstum ist auch ein viel größerer Erfahrungsschatz entstanden, auf den wir zurückgreifen können, und mehr Technologien, die es zu erforschen gilt.
Als ich im Anschluss an die erste Ausgabe mit mehr Teams zusammenarbeitete, begann ich, einige der Ideen, die mit Microservices verbunden sind, zu überdenken. In einigen Fällen bedeutete dies, dass Ideen, die ich bisher nur am Rande kannte, wie z. B. das Verstecken von Informationen, sich als grundlegende Konzepte herausstellten, die besser hervorgehoben werden mussten. In anderen Bereichen brachten neue Technologien sowohl neue Lösungen als auch neue Probleme für unsere Systeme mit sich. Als ich sah, wie viele Menschen sich auf Kubernetes stürzten, in der Hoffnung, dass es all ihre Probleme mit Microservice-Architekturen lösen würde, gab mir das zu denken.
Außerdem hatte ich die erste Ausgabe von Building Microservices geschrieben, um nicht nur Microservices zu erklären, sondern auch einen umfassenden Überblick darüber zu geben, wie dieser architektonische Ansatz Aspekte der Softwareentwicklung verändert. Als ich mich eingehender mit Aspekten der Sicherheit und Ausfallsicherheit befasste, wollte ich diese Themen, die für die moderne Softwareentwicklung immer wichtiger werden, noch einmal vertiefen.
Deshalb nehme ich mir in dieser zweiten Ausgabe mehr Zeit für explizite Beispiele, um die Ideen besser zu erklären. Jedes Kapitel wurde noch einmal durchgesehen und jeder Satz überarbeitet. Von der ersten Ausgabe ist nicht mehr viel übrig geblieben, was die konkrete Prosa angeht, aber die Ideen sind alle noch da. Ich habe versucht, meine eigene Meinung klarer zu formulieren und gleichzeitig anzuerkennen, dass es oft mehrere Möglichkeiten gibt, ein Problem zu lösen. Das bedeutete, dass ich die Diskussion über die Kommunikation zwischen den Prozessen erweitert habe, die jetzt auf drei Kapitel verteilt ist. Außerdem beschäftige ich mich intensiver mit den Auswirkungen von Technologien wie Containern, Kubernetes und Serverless; deshalb gibt es jetzt separate Kapitel über Build und Deployment.
Ich hatte gehofft, ein Buch zu schaffen, das in etwa so groß ist wie die erste Ausgabe, und gleichzeitig einen Weg zu finden, mehr Ideen unterzubringen. Wie du sehen kannst, habe ich mein Ziel verfehlt - diese Ausgabe ist größer! Aber ich glaube, ich habe es geschafft, die Ideen klarer zu formulieren.
Navigieren in diesem Buch
Dieses Buch ist in erster Linie nach Themen gegliedert. Ich habe das Buch so aufgebaut und geschrieben, als würdest du es von Anfang bis Ende lesen, aber du kannst natürlich auch direkt zu den Themen springen, die dich am meisten interessieren. Wenn du dich entscheidest, direkt in ein bestimmtes Kapitel einzutauchen, wird dir das Glossar am Ende des Buches helfen, neue oder unbekannte Begriffe zu erklären. Du kannst davon ausgehen, dass die beiden Begriffe dasselbe bezeichnen, wenn ich nicht ausdrücklich etwas anderes sage. Im Literaturverzeichnis fasse ich außerdem einige der wichtigsten Ratschläge aus dem Buch zusammen, wenn du einfach nur zum Ende springen willst - aber erinnere dich daran, dass du sonst viele Details verpasst!
Der Hauptteil des Buches ist in drei separate Teile unterteilt - Grundlagen, Umsetzung und Menschen. Schauen wir uns an, was jeder Teil behandelt.
Teil I, "Gründung"
In diesem Teil gehe ich auf einige der Kernideen hinter Microservices ein.
- Kapitel 1, "Was sind Microservices?"
-
Dies ist eine allgemeine Einführung in Microservices, in der ich kurz auf eine Reihe von Themen eingehe, die ich später im Buch näher erläutern werde.
- Kapitel 2, "Wie man Microservices modelliert"
-
In diesem Kapitel wird die Bedeutung von Konzepten wie Information Hiding, Kopplung, Kohäsion und domänengesteuertem Design untersucht, um die richtigen Grenzen für deine Microservices zu finden.
- Kapitel 3, "Die Spaltung des Monolithen"
-
In diesem Kapitel findest du eine Anleitung, wie du eine bestehende monolithische Anwendung in Microservices aufteilst.
- Kapitel 4, "Microservice Kommunikationsstile"
-
Im letzten Kapitel dieses Teils werden die verschiedenen Arten der Microservice-Kommunikation erörtert, darunter asynchrone und synchrone Aufrufe sowie Request-Response- und Event-Driven-Collaboration-Stile.
Teil II, "Umsetzung"
In diesem Teil gehen wir von den übergeordneten Konzepten zu den Details der Umsetzung über und schauen uns Techniken und Technologien an, mit denen du das Beste aus Microservices herausholen kannst.
- Kapitel 5, "Microservice-Kommunikation implementieren"
-
In diesem Kapitel werfen wir einen genaueren Blick auf die spezifischen Technologien, die zur Umsetzung der Kommunikation zwischen den Microservices verwendet werden.
- Kapitel 6, "Arbeitsablauf"
-
Dieses Kapitel bietet einen Vergleich von Sagas und verteilten Transaktionen und erörtert ihren Nutzen bei der Modellierung von Geschäftsprozessen, die mehrereMicroservices umfassen.
- Kapitel 7, "Bauen"
-
Dieses Kapitel erklärt das Mapping von einem Microservice auf Repositories und Builds.
- Kapitel 8, "Einsatz"
-
In diesem Kapitel werden die unzähligen Optionen für die Bereitstellung von Microservices erörtert, darunter auch Container, Kubernetes und FaaS.
- Kapitel 9, "Prüfungen"
-
Hier erörtere ich die Herausforderungen beim Testen von Microservices, einschließlich der Probleme, die durch End-to-End-Tests entstehen, und wie verbraucherorientierte Verträge und In-Production-Tests helfen können.
- Kapitel 10, "Von der Überwachung zur Beobachtbarkeit"
-
In diesem Kapitel geht es um die Verlagerung des Schwerpunkts von statischen Monitoring-Aktivitäten hin zu einer umfassenderen Betrachtung der Frage, wie die Beobachtbarkeit von Microservice-Architekturen verbessert werden kann, sowie um einige spezifische Empfehlungen für Tools.
- Kapitel 11, "Sicherheit"
-
Microservice-Architekturen können die Angriffsfläche vergrößern, geben uns aber auch mehr Möglichkeiten, uns in der Tiefe zu verteidigen. In diesem Kapitel untersuchen wir dieses Gleichgewicht.
- Kapitel 12, "Resilienz"
-
Dieses Kapitel bietet einen umfassenderen Blick darauf, was Resilienz ist und welche Rolle Microservices bei der Verbesserung der Resilienz deiner Anwendungen spielen können.
- Kapitel 13, "Skalierung"
-
In diesem Kapitel skizziere ich die vier Achsen der Skalierung und zeige, wie sie in Kombination verwendet werden können, um eine Microservice-Architektur zu skalieren.
Teil III, "Menschen"
Ideen und Technologien bedeuten nichts ohne die Menschen und die Organisation, die dahinter stehen.
- Kapitel 14, "Benutzerschnittstellen"
-
Von der Abkehr von dedizierten Frontend-Teams bis hin zum Einsatz von BFFs und GraphQL wird in diesem Kapitel untersucht, wie Microservices und Benutzeroberflächen zusammenarbeiten können.
- Kapitel 15, "Organisatorische Strukturen"
-
In diesem vorletzten Kapitel geht es darum, wie Stream-aligned und Enabling Teams im Kontext von Microservice-Architekturen arbeiten können.
- Kapitel 16, "Der evolutionäre Architekt"
-
Microservice-Architekturen sind nicht statisch, daher muss sich deine Sichtweise auf die Systemarchitektur möglicherweise ändern - ein Thema, das in diesem Kapitel ausführlich behandelt wird.
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
-
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
-
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Tipp
Dieses Element steht für einen Tipp oder eine Anregung.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
O'Reilly Online Learning
Hinweis
Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.
Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter http://oreilly.com.
Wie du uns kontaktierst
Bitte wende dich mit Kommentaren und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-998-9938 (in den Vereinigten Staaten oder Kanada)
- 707-829-0515 (international oder lokal)
- 707-829-0104 (Fax)
Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/Building_Microservices2 aufrufen .
Schreib eine E-Mail an bookquestions@oreilly.com, um Kommentare oder technische Fragen zu diesem Buch zu stellen.
Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter http://oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://youtube.com/oreillymedia
Danksagungen
Ich bin immer wieder erstaunt über die Unterstützung, die ich von meiner Familie erhalte, vor allem von meiner Frau Lindy Stephens, die so viel mit erstaunlicher Gnade erträgt. Zu sagen, dass es dieses Buch ohne sie nicht geben würde, ist eine Untertreibung, auch wenn sie mir nicht immer glaubt, wenn ich ihr das sage. Das ist für sie. Es ist auch für meinen Vater, Jack, Josie, Kane und den gesamten Gilmanco Staynes-Clan.
Ein großer Teil dieses Buches wurde während einer weltweiten Pandemie geschrieben, die zu dem Zeitpunkt, an dem ich diese Danksagung schreibe, noch andauert. Es mag nicht viel bedeuten, aber ich möchte dem NHS hier in Großbritannien und all den Menschen auf der ganzen Welt danken, die für unsere Sicherheit sorgen, indem sie an Impfstoffen arbeiten, Kranke behandeln, unsere Lebensmittel liefern und auf tausend andere Arten helfen, die ich nicht verstehen würde. Dies ist auch für euch alle.
Diese zweite Ausgabe würde ohne die erste nicht existieren, daher möchte ich mich noch einmal bei allen bedanken, die mir während des schwierigen Prozesses des Schreibens meines ersten Buches geholfen haben, darunter die technischen Gutachter Ben Christensen, Martin Fowler und Venkat Subramaniam, James Lewis für unsere vielen aufschlussreichen Gespräche; das O'Reilly-Team Brian MacDonald, Rachel Monaghan, Kristen Brown und Betsy Waliszewski; und das hervorragende Feedback der Leser Anand Krishnaswamy, Kent McNeil, Charles Haynes, Chris Ford, Aidy Lewis, Will Thames, Jon Eaves, Rolf Russell, Badrinath Janakiraman, Daniel Bryant, Ian Robinson, Jim Webber, Stewart Gleadow, Evan Bottcher, Eric Sword und Olivia Leonard. Und ich danke Mike Loukides, dass er mich überhaupt erst in diesen Schlamassel gebracht hat!
Für die zweite Ausgabe kehrte Martin Fowler erneut als technischer Prüfer zurück und wurde von Daniel Bryant und Sarah Wells unterstützt, die ihre Zeit und ihr Feedback großzügig zur Verfügung stellten. Ich möchte mich auch bei Nicky Wrightson und Alexander von Zitzerwitz bedanken, die mir geholfen haben, die technische Überprüfung über die Ziellinie zu bringen. An der O'Reilly-Front wurde der gesamte Prozess von meiner großartigen Redakteurin Nicole Taché überwacht, ohne die ich sicherlich verrückt geworden wäre; Melissa Duffield, die mein Arbeitspensum besser zu bewältigen scheint als ich; Deb Baker, Arthur Johnson und dem restlichen Produktionsteam (es tut mir leid, dass ich nicht alle eure Namen kenne, aber danke!); und Mary Treseler, die das Schiff durch einige schwierige Zeiten gesteuert hat.
Darüber hinaus hat die zweite Ausgabe enorm von der Hilfe und den Erkenntnissen einer Reihe von Menschen profitiert, darunter (in keiner bestimmten Reihenfolge) Dave Coombes und das Team von Tyro, Dave Halsey und das Team von Money Supermarket, Tom Kerkhove, Erik Doernenburg, Graham Tackley, Kent Beck, Kevlin Henney, Laura Bell, Adrian Mouat, Sarah Taraporewalla, Uwe Friedrichse, Liz Fong-Jones, Kane Stephens, Gilmanco Staynes, Adam Tornhill, Venkat Subramaniam, Susanne Kaiser, Jan Schaumann, Grady Booch, Pini Reznik, Nicole Forsgren, Jez Humble, Gene Kim, Manuel Pais, Matthew Skelton, und die South Sydney Rabbitohs. Schließlich möchte ich mich bei den großartigen Lesern der Early-Access-Version des Buches bedanken, die mir unschätzbaresFeedback gegeben haben. Dazu gehören Felipe de Morais, Mark Gardner, David Lauzon, Assam Zafar, Michael Bleterman, Nicola Musatti, Eleonora Lester, Felipe de Morais, Nathan DiMauro, Daniel Lemke, Soner Eker, Ripple Shah, Joel Lim und Himanshu Pant. Und schließlich begrüße ich Jason Isaacs.
Den größten Teil dieses Buches habe ich während des gesamten Jahres 2020 und in der ersten Hälfte des Jahres 2021 geschrieben. Ich habe den größten Teil des Buches mit Visual Studio Code auf macOS geschrieben, obwohl ich in seltenen Fällen auch Working Copy auf iOS verwendet habe. OmniGraffle wurde verwendet, um alle Diagramme im Buch zu erstellen. AsciiDoc wurde für die Formatierung des Buches verwendet und war im Großen und Ganzen ausgezeichnet, wobei die Atlas-Toolchain von O'Reilly die Magie des Buches auf die andere Seite bringt.
Get Aufbau von Microservices, 2. Auflage 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.