Be Software Architecture Wise
Be Wise Apps

Read in English · Leer en español · Lire en français

Kapitel 0 von 12 · Einsteiger

Einstieg: Wie Software funktioniert

Dieses Kapitel ist der Einstieg in den Kurs. Es setzt voraus, dass Sie Apps und Websites genutzt, aber nie programmiert haben, und erklärt von Grund auf, was Software ist, wie sie Daten darstellt und verarbeitet, wie Code organisiert ist, wie Computer über Netzwerke kommunizieren, wo Daten gespeichert werden, wie getrennte Systeme über APIs zusammenarbeiten, was Server und die Cloud sind und wie Teams Software entwickeln und ausliefern. Erfahrene Fachleute können es als gemeinsames Vokabular überfliegen; alle anderen sollten es vor Kapitel 1 lesen, weil jedes spätere Kapitel auf diesen Ideen aufbaut.

Videoeinführung in Kapitel 0

6 Min. · auf Englisch gesprochen, mit Untertiteln
Nur anhören (Audio)
Transkript lesen

Willkommen bei Be Software Architecture Wise und bei Kapitel null: Einstieg, wie Software funktioniert. Dieses Kapitel ist der Einstieg in den gesamten Kurs. Es setzt voraus, dass Sie Apps und Websites genutzt, aber nie ein Programm geschrieben haben. Am Ende haben Sie das Vokabular, auf dem jedes spätere Kapitel aufbaut.

Bei Softwarearchitektur geht es um die großen Entscheidungen in einem Softwaresystem: was seine Hauptteile sind, wie sie miteinander kommunizieren, wo Daten liegen und welche Qualitäten, etwa Geschwindigkeit, Zuverlässigkeit und Sicherheit, der Entwurf erreichen muss. Diese Entscheidungen werden in einem bestimmten Vokabular getroffen: Prozesse und Threads, Indizes und Caches, Schnittstellen und Abhängigkeiten, Transaktionen, APIs und Container. Architekten verwenden diese Wörter präzise, deshalb müssen Sie wissen, was jedes davon wirklich bedeutet und was es kostet. Dieses Kapitel ist für Menschen geschrieben, die nie programmiert haben. Jeder Abschnitt beginnt mit einer Analogie aus dem Alltag, bevor er den tatsächlichen Mechanismus erklärt. Wenn Sie bereits in der Softwareentwicklung arbeiten, können Sie es als gemeinsames Vokabular überfliegen.

Dieses Kapitel baut auf gar nichts auf. Es setzt kein technisches Vorwissen voraus und ist deshalb der richtige Ort, um anzufangen. Es führt direkt zu Kapitel 1, das mit diesen Bausteinen erklärt, was Softwarearchitektur ist und warum die großen Entscheidungen so wichtig sind. Wo ein Thema mehr Tiefe verdient, verweist das Kapitel auf den späteren Abschnitt, der es gründlich behandelt.

Das Kapitel hat acht Abschnitte in drei Gruppen. Die ersten drei bleiben innerhalb eines einzelnen Rechners. Abschnitt null Punkt eins erklärt, wie von Menschen geschriebener Code zu Anweisungen wird, die ein Prozessor ausführen kann, und warum Daten im Arbeitsspeicher bei einem Neustart verschwinden. Abschnitt null Punkt zwei stellt die alltäglichen Datenstrukturen vor, etwa Listen, Dictionaries und Queues. Mit der O-Notation erklärt er, warum eine Art, einen Kunden zu finden, bei einer Million Kunden schnell bleibt, während eine andere zusammenbricht. Abschnitt null Punkt drei steigt von Funktionen zu Modulen, Objekten und Schnittstellen auf. Er erklärt den Unterschied zwischen einer Bibliothek und einem Framework, warnt vor den versteckten Kosten von Abhängigkeiten und gibt einen ersten Blick auf Kopplung und Kohäsion.

Die nächsten drei Abschnitte verlassen den einzelnen Rechner. Abschnitt null Punkt vier erklärt, wie DNS Namen in Adressen übersetzt und wie HTTP-Anfragen und -Antworten funktionieren. Er zeigt außerdem, dass die Netzwerkverzögerung eine Untergrenze hat, die durch die Lichtgeschwindigkeit gesetzt ist. Abschnitt null Punkt fünf behandelt Dateien und Datenbanken: Tabellen, SQL-Abfragen, Indizes und Transaktionen, veranschaulicht an einer Banküberweisung, die nie nur halb stattfinden darf. Er stellt außerdem die wichtigsten nichtrelationalen Datenbanken vor und wann welche passt. Abschnitt null Punkt sechs erklärt, wie getrennte Systeme über APIs zusammenarbeiten. Eine API ist ein Vertrag. Sie sehen den Unterschied zwischen dem Warten auf eine Antwort und dem Senden einer Nachricht über eine Queue und warum eine gebrochene API allen schadet, die von ihr abhängen.

Die letzten beiden Abschnitte behandeln, wo Software läuft und wie sie entsteht. Abschnitt null Punkt sieben zeigt, was ein Server wirklich ist, wie sich dank virtueller Maschinen und Container viele Workloads einen physischen Rechner teilen und was Cloud-Anbieter verkaufen. Abschnitt null Punkt acht wendet sich von der Technik der Praxis zu: Anforderungen, Versionskontrolle, Tests, Continuous Integration und Delivery sowie Arbeitsweisen. Zum Schluss verfolgt er ein einziges Tippen auf „Bestellen“ in einer Essensliefer-App durch alle Teile des Kapitels.

Diese Reise lohnt schon jetzt einen ersten Blick, weil sie zeigt, wohin das ganze Kapitel führt. Eine Kundin hat ihren Warenkorb gefüllt und tippt auf „Bestellen“. Folgen Sie den Nummern. Zuerst fragt das Smartphone beim DNS nach der Adresse des Unternehmens. Dann sendet es die Bestellung über HTTPS an einen Load Balancer in der Cloud-Region des Unternehmens, wo die sichere Verbindung endet. Der Load Balancer gibt die Anfrage an den Bestellservice weiter. Dieser Service ruft über dessen API einen externen Zahlungsanbieter auf und schreibt die Bestellung dann in einer Transaktion in seine Datenbank. Als Nächstes legt er eine Nachricht „Order Placed“ in eine Queue. Ein Benachrichtigungsservice holt sie ab und bittet den Push-Dienst von Apple oder Google, eine Benachrichtigung an das Smartphone der Kundin zu senden. Beachten Sie die gestrichelten Pfeile: Dieser letzte Teil ist asynchron. Fällt der Benachrichtigungsservice aus, werden trotzdem Bestellungen angenommen, und die Nachrichten warten einfach in der Queue. Das musste jemand entscheiden, und solche Entscheidungen zu treffen, ist Architektur.

Hier ist die Idee, die Sie aus dem ganzen Kapitel mitnehmen sollten. Jedes System darin besteht aus Teilen, die ihre Details hinter einer vereinbarten Grenze verbergen: ein Modul hinter seiner Schnittstelle, eine Datenbank hinter SQL, ein Zahlungsanbieter hinter seiner API. An den Grenzen liegen die wichtigen Abwägungen. Ein Funktionsaufruf ist schnell und zuverlässig, ein Aufruf über ein Netzwerk dagegen langsamer und kann fehlschlagen. Eine Abhängigkeit spart Aufwand, bringt aber Risiken mit sich. Ein Cache spart Zeit, kann aber veraltete Daten liefern. Zu entscheiden, wo diese Grenzen verlaufen, was sie überquert und welche Abwägungen man in Kauf nimmt, das ist Softwarearchitektur. Jeder Abschnitt endet mit einem kurzen Hinweis darauf, warum sein Thema für die Architektur wichtig ist, achten Sie also darauf.

Wie sollten Sie es durcharbeiten? Wenn das Thema neu für Sie ist, lesen Sie die Abschnitte der Reihe nach, denn jeder baut auf dem vorigen auf. Wenn Sie schon manches kennen, greifen Sie die Abschnitte heraus, die Sie brauchen. Das ganze Kapitel zu lesen dauert etwa drei Stunden. Jeder Abschnitt endet mit einigen Fragen zur Selbstkontrolle. Beantworten Sie sie im Kopf, bevor Sie sich die Antworten ansehen. Sie zeigen Ihnen schnell, was hängen geblieben ist und was sich erneut zu lesen lohnt. Wenn Sie so weit sind, können Sie den freiwilligen Kapiteltest ablegen: zwanzig Multiple-Choice-Fragen und zwei schriftliche Antworten. Planen Sie etwa fünfundvierzig Minuten ein. Die Bestehensgrenze liegt bei achtzig Prozent. Prüfen Sie vor dem Test, ob Sie die Fragen zur Selbstkontrolle für jeden Abschnitt beantworten können, und lesen Sie die Zusammenfassung jedes Abschnitts erneut, der Ihnen noch unklar ist.

Das ist die Landkarte von Kapitel null. Beginnen Sie mit Abschnitt null Punkt eins, in dem wir uns ansehen, was Software ist und was wirklich geschieht, wenn ein Computer ein Programm ausführt. Bis gleich.

Kapitel herunterladen (PDF)In der App lesen

Auf einen Blick

Das lernen Sie

  • Schritt für Schritt erklären, was geschieht, wenn ein Programm läuft, vom Quellcode über das Betriebssystem bis zum Prozessor.
  • Die gängigen Datenstrukturen unterscheiden und mit der O-Notation vorhersagen, wie stark eine Operation mit wachsender Datenmenge langsamer wird.
  • Beschreiben, wie Funktionen, Module, Objekte und Schnittstellen Code aufteilen, und den Unterschied zwischen einer Bibliothek und einem Framework erklären.
  • Nachvollziehen, was geschieht, wenn jemand eine Webadresse eintippt, und dabei DNS, TCP, TLS und HTTP mit ihrem jeweiligen Beitrag benennen.
  • Dateien, relationale Datenbanken und die wichtigsten NoSQL-Familien vergleichen und erklären, was eine Transaktion garantiert.
  • Erklären, was eine API ist, wie ein REST-Aufruf über HTTP funktioniert und wann eine asynchrone Nachricht besser passt als ein synchroner Aufruf.
  • Physische Server, virtuelle Maschinen, Container und die wichtigsten Cloud-Servicemodelle unterscheiden.
  • Eine einzelne Nutzeraktion durch jede Schicht eines realen Systems verfolgen und die Entscheidungen erkennen, die seine Architektur ausmachen.

Bevor Sie beginnen

Keine. Es genügt, mit der Nutzung von Apps und Websites vertraut zu sein.

Zeit

Etwa 3 Stunden Lesezeit; 45 Minuten für den Test.

Schlüsselbegriffe

Prozess · Compiler und Interpreter · Datenstruktur · O-Notation (Big-O) · Schnittstelle · Framework · Abhängigkeit · IP-Adresse und Port · DNS · HTTP und HTTPS · Latenz · Datenbank und Transaktion · API · Container und Cloud

Warum hier beginnen

Bei Softwarearchitektur geht es um die großen Entscheidungen in einem Softwaresystem: was seine Hauptteile sind, wie sie miteinander kommunizieren, wo Daten liegen und welche Qualitäten, etwa Geschwindigkeit, Zuverlässigkeit und Sicherheit, der Entwurf erreichen muss. Diese Entscheidungen werden in einem bestimmten Vokabular getroffen: Prozesse und Threads, Indizes und Caches, Schnittstellen und Abhängigkeiten, HTTP und DNS, Transaktionen, APIs, Container und Pipelines. Architekten verwenden diese Wörter präzise, und vieles im Kurs setzt voraus, dass Sie wissen, was jedes davon wirklich bedeutet und was es kostet.

Dieses Kapitel liefert dieses Vokabular. Es ist für Menschen geschrieben, die nie programmiert haben, und jeder Abschnitt beginnt mit einer kurzen Analogie aus dem Alltag, bevor er den tatsächlichen Mechanismus erklärt. Zugleich soll es so genau sein, dass erfahrene Fachleute jeder Aussage zustimmen würden. Wo ein Thema viel mehr Tiefe verdient, führt das Kapitel es ein und verweist auf den späteren Abschnitt, der es gründlich behandelt.

Ein Programm auf einem Computer

Die ersten drei Abschnitte bleiben innerhalb eines einzelnen Rechners. Was Software ist erklärt den Unterschied zwischen Hardware und Software, wie von Menschen geschriebener Quellcode zu Anweisungen wird, die ein Prozessor ausführen kann (mithilfe von Compilern, Interpretern und virtuellen Maschinen), was das Betriebssystem tut und warum Daten im Arbeitsspeicher bei einem Neustart verschwinden, während Daten auf der Festplatte erhalten bleiben. Zum Schluss verfolgt er ein neunzeiliges Python-Programm durch jeden Schritt seines Lebens.

Daten und Algorithmen zeigt, wie Computer Zahlen und Text darstellen, und stellt die alltäglichen Datenstrukturen vor: Listen, Dictionaries, Sets, Queues, Stacks, Bäume und Graphen. Mithilfe der O-Notation erklärt er, warum ein Entwurf für die Suche nach einem Kunden auch bei einer Million Kunden schnell bleibt, während ein anderer zusammenbricht, und warum es Indizes und Caches gibt. Code organisieren steigt dann von Funktionen zu Modulen, Objekten und Schnittstellen auf, erklärt den Unterschied zwischen einer Bibliothek und einem Framework, warnt vor den versteckten Kosten von Abhängigkeiten und gibt einen ersten Blick auf Kopplung und Kohäsion, die zwei Ideen, die das gesamte Softwaredesign durchziehen.

Viele Computer arbeiten zusammen

Die nächsten drei Abschnitte verlassen den einzelnen Rechner. Wie Computer kommunizieren erklärt Pakete, IP-Adressen und Ports, TCP und UDP, wie DNS Namen in Adressen übersetzt und wie HTTP-Anfragen und -Antworten funktionieren, abgesichert durch TLS. Er macht außerdem einen Punkt deutlich, der viele überrascht: Die Latenz hat eine Untergrenze, die durch die Lichtgeschwindigkeit gesetzt ist, sodass ein Hin- und Rückweg zwischen London und Sydney nie schnell sein kann, ganz gleich, wie viel Bandbreite Sie kaufen.

Daten speichern behandelt Dateien und Datenbanken: Tabellen, Schlüssel und SQL-Abfragen, Indizes, Transaktionen und die ACID-Garantien (veranschaulicht an einer Banküberweisung, die nie nur halb stattfinden darf) sowie die wichtigsten NoSQL-Familien und wann welche passt. APIs und Integration erklärt, wie getrennte Systeme zusammenarbeiten: eine API als Vertrag, REST und JSON über HTTP, Schlüssel und Tokens, Webhooks, der Unterschied zwischen dem Warten auf eine Antwort und dem Senden einer Nachricht über eine Queue und warum Breaking Changes an einer API allen schaden, die von ihr abhängen.

Wo Software läuft und wie sie entsteht

Server und die Cloud zeigt, was ein Server wirklich ist, wie virtuelle Maschinen und Container es vielen Workloads ermöglichen, sich einen physischen Rechner zu teilen, und was Cloud-Anbieter verkaufen: von der Miete nackter Maschinen bis dahin, Ihren Code nur dann auszuführen, wenn ein Ereignis eintrifft. Er führt Regionen, Availability Zones, Content Delivery Networks und die zwei Wege ein, mit Wachstum umzugehen: ein größerer Rechner oder mehr Rechner. Wie Software entsteht wendet sich von der Technik der Praxis zu: Anforderungen, Versionskontrolle mit Git, die Testpyramide, Umgebungen, Continuous Integration und Continuous Delivery, agile Arbeitsweisen und DevOps. Zum Schluss verfolgt er ein einziges Tippen auf „Bestellen“ in einer Essensliefer-App durch alle Teile des Kapitels, vom Smartphone über DNS, HTTPS, einen Load Balancer, Services, eine Datenbanktransaktion, einen Zahlungsanbieter und eine Queue bis zu einer Push-Benachrichtigung.

Die Idee zum Mitnehmen

Jedes System in diesem Kapitel besteht aus Teilen, die ihre Details hinter einer vereinbarten Grenze verbergen: das Betriebssystem hinter Systemaufrufen, ein Modul hinter seiner Schnittstelle, ein Webserver hinter HTTP, eine Datenbank hinter SQL, ein Zahlungsanbieter hinter seiner API, eine Cloud-Plattform hinter ihren Services. Grenzen ermöglichen es Menschen, große Systeme zu bauen, ohne jedes Detail zu verstehen, und an ihnen liegen die wichtigen Abwägungen: Ein Funktionsaufruf ist schnell und zuverlässig, ein Aufruf über ein Netzwerk dagegen langsamer und kann fehlschlagen; eine Abhängigkeit spart Aufwand, bringt aber Risiken mit sich; ein Cache spart Zeit, kann aber veraltete Daten liefern.

Zu entscheiden, wo diese Grenzen verlaufen, was sie überquert und welche Abwägungen man in Kauf nimmt, das ist Softwarearchitektur. Jeder Abschnitt endet mit einem kurzen Hinweis darauf, warum sein Thema für die Architektur wichtig ist, und Kapitel 1 beginnt genau dort, wo dieses Kapitel endet.

Die 8 Abschnitte

0.1 · Einsteiger · 15 Min.Was Software istWas Hardware und Software sind, wie Quellcode zu Anweisungen wird, die ein Prozessor ausführen kann, was das Betriebssystem tut und was wirklich geschieht, Schritt für Schritt, wenn ein kleines Python-Programm läuft.Lesen →0.2 · Einsteiger · 16 Min.Daten und AlgorithmenWie Computer Zahlen und Text darstellen, die alltäglichen Datenstrukturen (Listen, Dictionaries, Queues, Bäume, Graphen), was ein Algorithmus ist und wie die O-Notation erklärt, warum manche Systeme mit wachsender Datenmenge langsamer werden.Lesen →0.3 · Einsteiger · 16 Min.Code organisierenWie Programmierer Code in Funktionen, Module, Objekte und Schnittstellen aufteilen; der Unterschied zwischen einer Bibliothek und einem Framework; Nutzen und Risiken von Abhängigkeiten; und ein erster Blick auf Kopplung und Kohäsion.Lesen →0.4 · Einsteiger · 18 Min.Wie Computer kommunizierenWie Daten in Paketen durch das Internet gelangen, was IP-Adressen, Ports, TCP, UDP und DNS leisten, wie HTTP-Anfragen und HTTPS funktionieren, warum die Physik der Latenz eine Untergrenze setzt und was passiert, wenn Sie eine Webadresse eingeben.Lesen →0.5 · Einsteiger · 18 Min.Daten speichernWarum Systeme Datenbanken statt einfacher Dateien brauchen, wie relationale Tabellen, Schlüssel, SQL, Indizes und ACID-Transaktionen funktionieren, die wichtigsten NoSQL-Familien und warum Backups getestet werden müssen.Lesen →0.6 · Einsteiger · 17 Min.APIs und IntegrationWas eine API ist und warum sie ein Vertrag ist, wie REST-APIs URLs, HTTP-Verben, Statuscodes und JSON nutzen und wie Schlüssel, Webhooks, Queues, Versionen und Rate Limits die Integration prägen.Lesen →0.7 · Einsteiger · 18 Min.Server und die CloudWas Server und Rechenzentren sind, wie virtuelle Maschinen und Container sich Hardware teilen, was IaaS, PaaS, SaaS und Serverless dem Anbieter überlassen und wie Regionen, Zonen, CDNs und Skalierung zusammenpassen.Lesen →0.8 · Einsteiger · 20 Min.Wie Software entstehtWie Teams Bedürfnisse in User Stories übersetzen, mit Git und Pull Requests zusammenarbeiten, auf mehreren Ebenen testen, über CI/CD und Umgebungen ausliefern und wie ein einziges Tippen in einer Essensliefer-App jeden Teil eines Systems durchläuft.Lesen →

Kapiteltest

Prüfen Sie Ihr Verständnis von Kapitel 0

Optional: 20 Multiple-Choice-Fragen und 2 kurze schriftliche Antworten, jedes Mal neu aus einem Pool von 72 Fragen gezogen. Bestehensgrenze 80 %. Wer jeden Kapiteltest und anschließend die Abschlussbewertung besteht, erhält das Be Wise Abschlusszertifikat.

Den Test zu Kapitel 0 in der App ablegen

Weiterführende Literatur