Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Es ist eine magische Zeit, Technologe zu sein.
Wir haben Docker, um Container zu erstellen, und Kubernetes, um sie zu orchestrieren. Mit Prometheus können wir sie überwachen. Mit Consul können wir sie entdecken. Mit Jaeger können wir die Beziehungen zwischen ihnen nachvollziehen. Das sind nur einige wenige Beispiele, aber es gibt noch viele, viele mehr, die alle für eine neue Generation von Technologien stehen: Sie sind alle "cloud native" und alle sind in Go geschrieben.
Der Begriff "Cloud Native" klingt zweideutig und ist ein Modewort, aber es gibt tatsächlich eine ziemlich genaue Definition. Laut der Cloud Native Computing Foundation, einer Unterstiftung der renommierten Linux Foundation, ist eine Cloud Native-Anwendung so konzipiert, dass sie bei stark wechselnder Belastung skalierbar, bei Unsicherheiten in der Umgebung widerstandsfähig und bei sich ständig ändernden Anforderungen handhabbar ist. Mit anderen Worten: Eine Cloud Native-Anwendung ist für das Leben in einem grausamen, ungewissen Universum gemacht.
Go wurde vor etwa einem Jahrzehnt als erste große Sprache speziell für die Entwicklung von Cloud-basierter Software entwickelt. Das lag vor allem daran, dass die damals gebräuchlichen Serversprachen einfach nicht für das Schreiben von verteilten, prozessintensiven Anwendungen geeignet waren, wie sie Google in großem Umfang produziert.
Seitdem hat sich Go zur Lingua Franca der Cloud-Native-Entwicklung entwickelt und wird von Docker bis Harbor, von Kubernetes bis Consul, von InfluxDB bis CockroachDB eingesetzt. Zehn der fünfzehn graduierten Projekte der Cloud Native Computing Foundation und zweiundvierzig der zweiundsechzig1 ihrer Projekte insgesamt sind größtenteils oder vollständig in Go geschrieben. Und jeden Tag werden es mehr.
Wer sollte dieses Buch lesen?
Dieses Buch richtet sich an mittlere bis fortgeschrittene Entwickler, insbesondere an Web Application Engineers und DevOps-Spezialisten/Site Reliability Engineers. Viele von ihnen haben bereits mit Go Webservices entwickelt, sind aber vielleicht nicht mit den Feinheiten der Cloud Native-Entwicklung vertraut - oder haben nicht einmal eine klare Vorstellung davon, was "Cloud Native" ist - und haben dann festgestellt, dass ihre Services schwer zu verwalten, bereitzustellen oder zu beobachten sind. Für diese Leserinnen und Leser bietet dieses Werk nicht nur eine solide Grundlage, wie man einen Cloud Native Service entwickelt, sondern es zeigt auch, warum diese Techniken überhaupt wichtig sind, und bietet konkrete Beispiele, um dieses manchmal abstrakte Thema zu verstehen.
Es ist zu erwarten, dass viele Leserinnen und Leser eher mit anderen Sprachen vertraut sind, aber vom Ruf von Go als Sprache der Cloud Native Development angelockt werden. Für diese Leserinnen und Leser stellt dieses Buch bewährte Methoden für die Einführung von Go als Cloud Native-Entwicklungssprache vor und hilft ihnen, ihre eigenen Probleme bei der Verwaltung und Bereitstellung von Cloud Natives zu lösen.
Warum ich dieses Buch geschrieben habe
Die Art und Weise, wie Anwendungen entworfen, entwickelt und eingesetzt werden, verändert sich. Die Anforderungen an die Skalierbarkeit zwingen die Entwickler dazu, ihre Dienste auf Heerscharen von Servern zu verteilen: Die Branche setzt auf "Cloud Native". Das bringt jedoch eine Reihe neuer Probleme mit sich: Wie entwickelt, implementiert oder verwaltet man einen Dienst, der auf zehn Servern läuft? Hundert? Tausend? Leider konzentrieren sich die existierenden Bücher zum Thema "Cloud Native" auf abstrakte Designprinzipien und enthalten nur rudimentäre oder gar keine Beispiele für die Umsetzung. Dieses Buch soll das Bedürfnis des Marktes nach einer praktischen Demonstration komplexer Cloud Native Designprinzipien erfüllen.
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.
Constant width bold
-
Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
Constant width italic
-
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
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.
Code-Beispiele verwenden
Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/cloud-native-go/examples zum Download bereit .
Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich.
Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel:"Cloud Native Go von Matthew A. Titmus (O'Reilly). Copyright 2021 Matthew A. Titmus, 978-1-492-07633-9."
Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
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 richte Kommentare 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/cloud-native-go aufrufen .
Schreib eine E-Mail an bookquestions@oreilly.com, um Kommentare oder technische Fragen zu diesem Buch zu stellen.
Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://www.youtube.com/oreillymedia
Danksagungen
Zuallererst möchte ich mich bei meiner Frau und meinem Sohn bedanken. Ihr seid die Motivation für jede gute Sache, die ich getan habe, seit ihr in mein Leben getreten seid, und die Leitsterne, die mir helfen, meine Richtung beizubehalten und den Himmel im Auge zu behalten.
Für meinen Vater, den wir kürzlich verloren haben. Du kamst einem echten Renaissance-Mann am nächsten und warst gleichzeitig der netteste und bescheidenste Mensch, den ich je kennengelernt habe. Ich möchte immer noch so sein wie du, wenn ich erwachsen bin.
An Maria. Die seine Abwesenheit am stärksten spürt. Du gehörst zur Familie und wirst immer zur Familie gehören, auch wenn ich dich nicht so oft anrufe, wie ich sollte. Papa wäre so stolz auf deine Stärke und Anmut.
An Sarah. Ich bin immer wieder erstaunt über deine Stärke und deinen Kampfgeist. Dein scharfer Verstand hat dich sowohl zu meiner stärksten Verbündeten als auch zu meiner erbittertsten Gegnerin gemacht, seit du das erste Mal sprechen konntest. Sag es Nathan nicht, aber du bist mein Lieblingsgeschwisterchen.
An Nathan. Wenn wir alle ein Drittel von Dads Genialität geerbt haben, hast du sein Herz. Ich sage es nicht oft genug, aber ich bin so stolz auf dich und deine Leistungen. Sag es Sarah nicht, aber du bist mein Lieblingsgeschwisterchen.
An Mama. Du bist stark und klug, bunt und unkonventionell. Danke, dass du mir beigebracht hast, immer das zu tun, was wirklich getan werden muss, egal, was die Leute denken. Bleib schräg und erinnere dich daran, die Hühner zu füttern.
Für Albert. Du hast ein großes Herz und eine unerschöpfliche Quelle der Geduld. Danke, dass du zu unserer Familie gehörst; wir sind besser, weil wir dich haben.
An den Rest meiner Familie. Ich sehe euch nicht so oft, wie ich es gerne hätte, und ich vermisse euch alle sehr, aber ihr seid immer da, wenn ich euch brauche. Danke, dass ihr die Siege mit mir gefeiert und mich bei den Niederlagen unterstützt habt.
An Walt und Alvaro, von denen ich anscheinend nicht loskomme, selbst wenn ich den Job wechsle. Danke für eure enthusiastische Unterstützung, wenn ich sie brauche, und euren nüchternen Realismus, wenn ich ihn stattdessen brauche. Ihr beide macht mich zu einem besseren Ingenieur. Außerdem danke ich dir, dass du mich in die Cradle-Reihe von Will Wighteingeführt hast, und für die lähmende Sucht, diedarauf folgte.
An "Jeff Classic", "New Jeff", Alex, Markan, Priyanka, Sam, Owen, Matt M., Marius, Peter, Rohit und alle meine Freunde und Kollegen bei Flatiron Health. Danke, dass ihr mir nicht nur erlaubt habt, mich auf dieses Projekt zu konzentrieren, sondern auch, dass ihr mich und meine Arbeit unterstützt habt, dass ihr als Resonanzboden, Beta-Leser und Kritiker fungiert habt und dass ihr mich ermutigt und mir geholfen habt.
An alle meine Freunde bei CoffeeOps in New York und auf der ganzen Welt. Ihr habt mir freundlicherweise erlaubt, Gedanken an euch weiterzugeben und euch herauszufordern, und ihr habt mich im Gegenzug herausgefordert. Dieses Buch ist durch euren Beitrag besser geworden.
Liz Fong-Jones, der renommierten Expertin für Beobachtbarkeit und Orakel. Ihre Ratschläge, Anweisungen und Codebeispiele waren von unschätzbarem Wert. Ohne Ihre Großzügigkeit wäre es viel schwieriger gewesen, dieses Buch zu schreiben, und das Ergebnis wäre viel schlechter gewesen.
An meine technischen Prüfer Lee Atchison, Alvaro Atienza, David Nicponski, Natalie Pistunovich und James Quigley. Danke, dass ihr die Geduld hattet, jedeseinzelne Wort zu lesen, das ich geschrieben habe (sogar die Fußnoten). Dank eurer scharfen Augen und eurer harten Arbeit ist dieses Buch viel besser geworden.
Und schließlich danke ich dem gesamten Team von fleißigen Redakteuren und Künstlern bei O'Reilly Media, mit denen ich das Glück hatte, zusammenzuarbeiten, insbesondere Amelia Blevins, Danny Elfanbaum und Zan McQuade. 2020 war ein sehr interessantes Jahr, aber eure Freundlichkeit, Geduld und Unterstützung haben mich durchgebracht.
1 Einschließlich CNCF Sandbox, Incubating und Graduated code-based (non-specification) Projekte, Stand Februar 2021.
Get Cloud Native Go 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.