Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Dieses Buch entsteht, wenn man einen Erlang-Enthusiasten, der 1996 an der R1-Version von OTP gearbeitet hat, und einen Spezialisten für verteilte Systeme zusammenbringt, der ein Jahrzehnt später entdeckt hat, wie Erlang/OTP es ermöglicht, sich auf die wirklichen Herausforderungen der Systementwicklung zu konzentrieren und dabei unbeabsichtigte Schwierigkeiten zu vermeiden.

Indem wir beschreiben, wie OTP-Verhaltensweisen aufgebaut sind und warum sie benötigt werden, zeigen wir dir, wie du sie für die Entwicklung eigenständiger Knotenpunkte nutzen kannst. In unserem ursprünglichen Vorschlag an O'Reilly haben wir hier aufgehört. Als wir das Buch schrieben, beschlossen wir jedoch, die Messlatte noch höher zu legen und unsere Praktiken, Designentscheidungen und häufigen Fallstricke bei der Architektur eines verteilten Systems zu dokumentieren. Diese Muster sorgen durch eine Reihe von Designentscheidungen und Kompromissen, die wir treffen, für die Skalierbarkeit, Zuverlässigkeit und Verfügbarkeit, für die Erlang/OTP bekannt ist. Entgegen der landläufigen Meinung geschieht dies nicht auf magische Weise oder aus dem Stand heraus, aber es ist viel einfacher zu erreichen als mit jeder anderen Programmiersprache, die weder die Semantik von Erlang emuliert noch auf der virtuellen Maschine BEAM läuft.

Francesco: Warum dieses Buch?

Jemand hat mir einmal gesagt, dass das Schreiben von Büchern ein bisschen so ist wie Kinderkriegen. Sobald man ein Buch geschrieben hat und das gedruckte Exemplar in den Händen hält, nimmt die Begeisterung überhand, man vergisst schnell die harte Arbeit und die Opfer, und man will gleich das nächste schreiben. Seit ich im Juni 2009 das erste Mal das gedruckte Exemplar in den Händen hielt, wollte ich die Fortsetzung von Erlang Programming (O'Reilly) schreiben. Ich hatte keine eigenen Kinder, als ich mit diesem Projekt begann, aber es hat so lange gedauert, dass mein zweites Kind jetzt auf dem Weg ist. Wer sagt denn, dass es sich nicht lohnt, auf gute Dinge zu warten?

Wie schon beim ersten Buch stützten wir uns bei Designing for Scalability with Erlang/OTP auf die Beispiele in den von mir entwickelten OTP-Schulungsunterlagen der Erlang Solution. Ich benutzte die Beispiele und begann, sie zu erklären, indem ich meine Vorlesungen und meinen Lehransatz in Worte fasste. Wenn ich mit einem Kapitel fertig war, ging ich zurück und stellte sicher, dass die Teile, die die Schüler/innen nur schwer verstehen konnten, klar waren. Fragen, die von den besten Schülern häufig gestellt wurden, landeten in Seitenleisten, und lange Kapitel wurden in kleinere unterteilt. Alles lief gut, bis wir zu den Kapiteln 11 und 12 kamen, denn es gab keine einheitliche Methode für die Handhabung von Releases oder Software-Upgrades. Stattdessen gab es viele verschiedene Tools. Einige waren in den Build- und Release-Zyklus unseres Kunden integriert, andere funktionierten ohne Probleme. Einige waren unbrauchbar. Wir hoffen, dass diese Kapitel zum ultimativen Leitfaden für alle werden, die verstehen wollen, wie Release-Handling und Software-Upgrade von Systemen hinter den Kulissen funktionieren. Sie erklären auch, was du wissen musst, wenn du Fehler in bestehenden Tools beheben oder deine eigenen schreiben musst.

Aber die wirklichen Schwierigkeiten begannen mit Kapitel 13. Da ich weder Beispiele noch Schulungsmaterial hatte, musste ich formalisieren, was in unseren Köpfen vorging, und die Ansätze dokumentieren, die wir bei der Architektur von Erlang/OTP-Systemen verfolgen, und versuchen, sie mit der Theorie des verteilten Rechnens in Einklang zu bringen. Aus Kapitel 13 wurden vier Kapitel, die genauso viel Zeit in Anspruch nahmen wie die ersten zehn. Ich hoffe, dass sich das Warten für diejenigen von euch gelohnt hat, die den Early Access gekauft haben. Für diejenigen, die klugerweise gewartet haben, bis wir fertig sind, bevor sie ihr Exemplar kaufen, wünsche ich viel Spaß!

Steve: Warum dieses Buch?

Ich entdeckte Erlang/OTP zum ersten Mal im Jahr 2006, als ich nach Möglichkeiten suchte, Software zur Unternehmensintegration schneller, billiger und besser zu entwickeln. Egal, wie ich es betrachtete, Erlang/OTP war den C++- und Java-Sprachen, die meine Kollegen und ich zu diesem Zeitpunkt schon lange verwendeten, eindeutig überlegen. Im Jahr 2007 trat ich in ein neues Unternehmen ein und begann, Erlang/OTP für ein kommerzielles Produkt zu verwenden, und es stellte sich heraus, dass es alles hielt, was meine früheren Untersuchungen versprochen hatten. Ich brachte die Sprache einigen Kolleginnen und Kollegen bei, und schon bald entwickelten weniger als eine Handvoll von uns Software, die leistungsfähiger, zuverlässiger, leichter weiterzuentwickeln und viel schneller produktionsreif war als ähnlicher Code, der von einem wesentlich größeren Team von C++-Programmierern geschrieben wurde. Bis heute bin ich von der beeindruckenden Praxistauglichkeit von Erlang/OTP voll und ganz überzeugt.

Im Laufe der Jahre habe ich eine Menge technisches Material veröffentlicht, und mein Zielpublikum waren immer andere Praktiker/innen wie ich. Dieses Buch ist da keine Ausnahme. In den ersten 12 Kapiteln gehen wir auf die Details ein, die Entwickler/innen benötigen, um die grundlegenden Designprinzipien von OTP zu verstehen. Unter diese Details mischen wir eine Reihe von nützlichen Nuggets mit praktischem Wissen - Module, Funktionen und Ansätze, die dir bei deinen täglichen Design-, Entwicklungs- und Debugging-Aufgaben viel Zeit und Mühe ersparen werden. In den letzten vier Kapiteln schalten wir einen Gang höher und konzentrieren uns mehr auf das Gesamtbild der Kompromisse, die bei der Entwicklung, dem Einsatz und dem Betrieb robuster, skalierbarer verteilter Anwendungen auftreten. Aufgrund der überwältigenden Menge an Wissen, Ansätzen und Kompromissen, die mit verteilten Systemen, Fehlertoleranz und DevOps einhergehen, war es schwierig, diese Kapitel kurz und bündig zu schreiben. Ich glaube aber, dass wir genau die richtige Balance gefunden haben, um viele gute Ratschläge zu geben, ohne uns im Unkraut zu verlieren.

Ich hoffe, dieses Buch hilft dir, die Qualität und den Nutzen der Software und Systeme zu verbessern, die du entwickelst.

Wer sollte dieses Buch lesen?

Dieses Buch richtet sich an Erlang- und Elixir-Entwickler und -Architekten, die mindestens eines der einführenden Bücher gelesen haben und bereit sind, ihr Wissen auf die nächste Stufe zu bringen. Es ist kein Buch, mit dem man anfangen sollte, sondern das Buch, das dort weitermacht, wo alle anderen aufhören. Die Kapitel 3-12 bauen aufeinander auf und sollten nacheinander gelesen werden, ebenso wie die Kapitel 13-16. Wenn du keine Erlang-Fibel brauchst, kannst du Kapitel 2 auch überspringen.

Wie man dieses Buch liest

Wir haben dieses Buch so geschrieben, dass es mit Erlang Release 18.2 kompatibel ist. Die meisten Funktionen, die wir beschreiben, funktionieren auch mit früheren Versionen; auf wichtige Funktionen, die nicht kompatibel sind, wird im Buch hingewiesen. Derzeit unbekannte Inkompatibilitäten mit zukünftigen Versionen werden auf unserer Errata-Seite beschrieben und im Github-Repository des Buches behoben. Wir empfehlen dir, die Beispiele im Buch von unserem Github-Repository herunterzuladen und sie selbst auszuführen, um sie besser zu verstehen.

Danksagungen

Dieses Buch zu schreiben, war eine lange Reise. Dabei haben uns viele wunderbare Menschen geholfen. Unser Redakteur Andy Oram war eine unerschöpfliche Quelle für Ideen und Vorschläge, er hat uns geduldig angeleitet, uns Feedback gegeben und uns immer wieder ermutigt. Danke Andy, ohne dich hätten wir es nicht geschafft! Simon Thompson, Mitautor von Erlang Programming, hat uns bei der Erstellung des Buches geholfen und die Grundlage für das zweite Kapitel gelegt. Vielen Dank an Robert Virding, der einige der Beispiele beigesteuert hat. Viele Leserinnen und Leser, Rezensentinnen und Rezensenten haben uns Feedback gegeben, während wir ihnen die Kapitel zuspielten. Auch auf die Gefahr hin, jemanden zu vergessen, sind dies: Richard Ben Aleya, Roberto Aloi, Jesper Louis Andersen, Bob Balance, Eva Bihari, Martin Bodocky, Natalia Chechina, Jean-François Cloutier, Richard Croucher, Viktória Fördős, Heinz Gies, Joacim Halén, Fred Hebert, Csaba Hoch, Torben Hoffmann, Bob Ippolito, Aman Kohli, Jan Willem Luiten, Jay Nelson, Robby Raschke, Andrzej Śliwa, David Smith, Sam Tavakoli, Premanand Thangamani, Jan Uhlig, John Warwick, David Welton, Ulf Wiger und Alexander Yong. Falls wir dich verpasst haben, entschuldigen wir uns aufrichtig! Schreib uns eine E-Mail und wir werden dich umgehend aufnehmen. Ein großes Lob geht an die Mitarbeiter von Erlang Solutions, die die Kapitel bereits während der Erstellung gelesen haben, und an alle anderen, die sich an den Errata im Rahmen der frühen Veröffentlichung beteiligt haben. Ein besonderes Dankeschön geht an alle, die uns über die sozialen Medien angefeuert haben, insbesondere an andere Autoren. Ihr wisst, wer ihr seid! Nicht zuletzt möchten wir uns bei den Produktions-, Marketing- und Konferenzteams von O'Reilly bedanken, die uns immer wieder daran erinnert haben, dass die Arbeit erst dann beendet ist, wenn du das gedruckte Exemplar in Händen hältst. Wir wissen eure Unterstützung wirklich zu schätzen!

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, Anwendungen, URLs, E-Mail-Adressen, Dateinamen, Verzeichnisnamen 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 zu verweisen. Wird auch für Verhaltensweisen, Befehle und Befehlszeilenoptionen verwendet.

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 Symbol steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Symbol steht für einen allgemeinen Hinweis.

Vorsicht

Dieses Symbol weist auf eine Warnung oder Vorsicht hin.

Code-Beispiele verwenden

Zusätzliches Material (Code-Beispiele, Übungen, etc.) steht zum Download bereit: https://github.com/francescoc/scalabilitywitherlangotp

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Im Allgemeinen darfst du den Code in diesem Buch 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. Wenn du eine CD-ROM mit Beispielen aus den O'Reilly-Büchern verkaufst oder verteilst, ist eine Genehmigung erforderlich. 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 Erlaubnis 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: "Designing for Scalability with Erlang/OTP von Francesco Cesarini und Steve Vinoski (O'Reilly). Copyright 2016 Francesco Cesarini und Stephen Vinoski, 978-1-449-32073-7."

Wenn du der Meinung bist, dass deine Verwendung von Codebeispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren

Safari® Bücher Online

Hinweis

Safari Books Online ist eine digitale On-Demand-Bibliothek, mit der du ganz einfach über 7.500 Fachbücher und Videos aus den Bereichen Technik und Kreativität durchsuchen kannst, um schnell die Antworten zu finden, die du brauchst.

Mit einem Abonnement kannst du jede Seite lesen und jedes Video aus unserer Bibliothek online ansehen. Lies die Bücher auf deinem Handy und anderen mobilen Geräten. Erhalte Zugang zu neuen Titeln, bevor sie gedruckt werden, und erhalte exklusiven Zugang zu Manuskripten, die sich in der Entwicklung befinden, und gib den Autoren Feedback. Kopiere Codebeispiele, organisiere deine Favoriten, lade Kapitel herunter, setze Lesezeichen für wichtige Abschnitte, erstelle Notizen, drucke Seiten aus und profitiere von vielen anderen zeitsparenden Funktionen.

O'Reilly Media hat dieses Buch in den Safari Books Online Service hochgeladen. Um vollen digitalen Zugriff auf dieses Buch und andere Bücher zu ähnlichen Themen von O'Reilly und anderen Verlagen zu erhalten, melde dich kostenlos unter http://my.safaribooksonline.com an.

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 aufrufen unter:

Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an:

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

Get Design für Skalierbarkeit mit Erlang/OTP 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.