Handbuch moderner Softwarearchitektur
eBook - ePub

Handbuch moderner Softwarearchitektur

Architekturstile, Patterns und Best Practices

Mark Richards, Neal Ford

  1. 432 pages
  2. German
  3. ePUB (adapté aux mobiles)
  4. Disponible sur iOS et Android
eBook - ePub

Handbuch moderner Softwarearchitektur

Architekturstile, Patterns und Best Practices

Mark Richards, Neal Ford

DĂ©tails du livre
Aperçu du livre
Table des matiĂšres
Citations

À propos de ce livre

Softwarearchitektur zeitgemĂ€ĂŸ und pragmatisch geplant

  • Architektonische Muster: Das technische Fundament fĂŒr viele architektonische Entscheidungen
  • Komponenten: Identifizierung, Kopplung, KohĂ€sion, Partitionierung und GranularitĂ€t
  • Architekturstile wie Microkernel, SOA, Microservices u.v.m. und ihre architektonischen Eigenschaften
  • Softwarearchitektur als Engineering-Disziplin: mit wiederhol- und messbaren Ergebnissen zu stabilen Architekturen

Mark Richards und Neal Ford — Praktiker mit Erfahrung aus erster Hand, die seit Jahren das Thema Softwarearchitektur unterrichten —, betrachten Softwarearchitektur vor dem Hintergrund der Entwicklungen, Innovationen und Herausforderungen des letzten Jahrzehnts. Sie konzentrieren sich auf Architekturprinzipien, die fĂŒr alle Technologie-Stacks gelten.
Angehende und erfahrene Architekten finden in diesem Buch umfassende Informationen zu architektonischen Merkmalen und Architekturstilen, zur Bestimmung von Komponenten, zur Diagrammerstellung und PrÀsentation, zu evolutionÀrer Architektur und vielen weiteren Themen.
Die Autoren verstehen Softwarearchitektur als Engineering-Disziplin: mit wiederhol- und messbaren Ergebnissen und konkreten Kennzahlen fĂŒr stabile Softwarearchitekturen.

Foire aux questions

Comment puis-je résilier mon abonnement ?
Il vous suffit de vous rendre dans la section compte dans paramĂštres et de cliquer sur « RĂ©silier l’abonnement ». C’est aussi simple que cela ! Une fois que vous aurez rĂ©siliĂ© votre abonnement, il restera actif pour le reste de la pĂ©riode pour laquelle vous avez payĂ©. DĂ©couvrez-en plus ici.
Puis-je / comment puis-je télécharger des livres ?
Pour le moment, tous nos livres en format ePub adaptĂ©s aux mobiles peuvent ĂȘtre tĂ©lĂ©chargĂ©s via l’application. La plupart de nos PDF sont Ă©galement disponibles en tĂ©lĂ©chargement et les autres seront tĂ©lĂ©chargeables trĂšs prochainement. DĂ©couvrez-en plus ici.
Quelle est la différence entre les formules tarifaires ?
Les deux abonnements vous donnent un accĂšs complet Ă  la bibliothĂšque et Ă  toutes les fonctionnalitĂ©s de Perlego. Les seules diffĂ©rences sont les tarifs ainsi que la pĂ©riode d’abonnement : avec l’abonnement annuel, vous Ă©conomiserez environ 30 % par rapport Ă  12 mois d’abonnement mensuel.
Qu’est-ce que Perlego ?
Nous sommes un service d’abonnement Ă  des ouvrages universitaires en ligne, oĂč vous pouvez accĂ©der Ă  toute une bibliothĂšque pour un prix infĂ©rieur Ă  celui d’un seul livre par mois. Avec plus d’un million de livres sur plus de 1 000 sujets, nous avons ce qu’il vous faut ! DĂ©couvrez-en plus ici.
Prenez-vous en charge la synthÚse vocale ?
Recherchez le symbole Écouter sur votre prochain livre pour voir si vous pouvez l’écouter. L’outil Écouter lit le texte Ă  haute voix pour vous, en surlignant le passage qui est en cours de lecture. Vous pouvez le mettre sur pause, l’accĂ©lĂ©rer ou le ralentir. DĂ©couvrez-en plus ici.
Est-ce que Handbuch moderner Softwarearchitektur est un PDF/ePUB en ligne ?
Oui, vous pouvez accĂ©der Ă  Handbuch moderner Softwarearchitektur par Mark Richards, Neal Ford en format PDF et/ou ePUB ainsi qu’à d’autres livres populaires dans Computer Science et Software Development. Nous disposons de plus d’un million d’ouvrages Ă  dĂ©couvrir dans notre catalogue.

Informations

Éditeur
O'Reilly
Année
2020
ISBN
9783960104308

KAPITEL 1

Einleitung

Die Berufsbezeichnung »Softwarearchitekt« steht auf vielen Listen der besten Jobs auf der ganzen Welt ganz oben. FĂŒr die anderen Berufe auf der Liste (zum Beispiel Krankenpfleger oder Finanzmanager) gibt es einen klaren Karrierepfad. Warum gibt es keinen Karrierepfad fĂŒr Softwarearchitekten?
ZunĂ€chst einmal hat die Branche selbst keine gute Definition von Softwarearchitektur. Wenn wir Grundlagenkurse unterrichten, fragen die Studenten oft nach einer klaren Definition fĂŒr das, was ein Softwarearchitekt tut. Bisher haben wir ihnen diese Antwort hartnĂ€ckig verweigert. Und damit sind wir nicht alleine. In seinem berĂŒhmten Whitepaper »Who Needs an Architect?« (https://oreil.ly/-Dbzs) weigerte sich Martin Fowler bekanntlich, auch nur zu versuchen, den Begriff »Softwarearchitekt« zu definieren. Stattdessen wich er auf das folgende berĂŒhmte Zitat aus:
Bei der Softwarearchitektur geht es um wichtige Dinge 
 welche auch immer das sind.
– Ralph Johnson
Erst unter Druck haben wir die in Abbildung 1-1 gezeigte Mindmap erstellt. Sie ist hoffnungslos unvollstĂ€ndig, zeigt aber, wie groß das Feld der Softwarearchitektur tatsĂ€chlich ist. In KĂŒrze werden wir Ihnen unsere eigene Definition der Softwarearchitektur vorstellen.
Außerdem zeigt die Mindmap, dass die Rolle des Softwarearchitekten sehr viele Verantwortungsbereiche umfasst, die immer weiter wachsen. Noch vor zehn Jahren haben sich Softwarearchitekten nur mit den rein technischen Aspekten der Architektur befasst, wie ModularitĂ€t, Komponenten und Patterns. Durch neue Architekturstile, die zusĂ€tzliche Möglichkeiten (zum Beispiel Microservices) nutzen, hat sich auch die Rolle des Softwarearchitekten erweitert. Die vielen Überschneidungen zwischen der Architektur und dem Rest des Unternehmens betrachten wir in Â»Ăœberschneidungen von Architektur und  « auf Seite 13.
Durch die fortschreitende Evolution der Softwareentwicklung ist auch die Softwarearchitektur stĂ€ndig in Bewegung. Jede heute gĂŒltige Definition wird schon in ein paar Jahren hoffnungslos veraltet sein. Die Wikipedia-Definition der Softwarearchitektur (https://de.wikipedia.org/wiki/Softwarearchitektur) gibt hier einen guten Überblick.
image
Abbildung 1-1: Die Verantwortlichkeit eines Softwarearchitekten umfasst technische FĂ€higkeiten, Soft Skills, Unternehmensbewusstsein und eine Reihe weiterer Aspekte.
Viele Aussagen sind aber auch jetzt schon veraltet – zum Beispiel: »Es ist Aufgabe der Softwarearchitektur, grundlegende strukturelle Entscheidungen zu treffen, deren spĂ€tere Änderung sehr kostspielig wĂ€ren.« Mittlerweile gibt es moderne architektonische Stile, zum Beispiel Microservices, die die Idee der Inkrementierung bereits enthalten. Strukturelle Änderungen in Microservices sind nicht lĂ€nger teuer. NatĂŒrlich hat eine solche Möglichkeit auch Nachteile, zum Beispiel bei der Kopplung. Viele BĂŒcher ĂŒber Softwarearchitektur behandeln das als statisches Problem. Ist es einmal gelöst, kann man es sicher ignorieren. In diesem Buch vertreten wir dagegen die Meinung, dass Softwarearchitektur grundsĂ€tzlich etwas Dynamisches ist – inklusive ihrer Definition.
DarĂŒber hinaus hat ein Großteil der Materialien ĂŒber Softwarearchitektur nur noch historische Bedeutung. Leser der Wikipediaseite werden die verwirrendende Ansammlung von Akronymen und Querverweisen zu einem ganzen Wissensuniversum bemerkt haben. Allerdings stehen viele dieser Akronyme fĂŒr veraltete oder fehlgeschlagene Versuche. Selbst Lösungen, die vor einigen Jahren noch absolut gĂŒltig waren, können heute nicht mehr funktionieren, weil sich der Kontext verĂ€ndert hat. Die Geschichte der Softwarearchitektur ist voll von gescheiterten Versuchen von Softwarearchitekten, die abgebrochen wurden, nachdem die schlechten Nebenwirkungen sichtbar wurden. Viele dieser Lehren werden wir in diesem Buch behandeln.
Warum haben wir ausgerechnet jetzt ein Buch ĂŒber Grundlagen der Softwarearchitektur geschrieben? Die Softwarearchitektur ist schließlich nicht der einzige Bereich der Softwareentwicklung, der andauernden Änderungen unterworfen ist. StĂ€ndig gibt es neue Technologien, Techniken, FĂ€higkeiten 
 Es ist tatsĂ€chlich leichter, die Dinge aufzulisten, die sich in den letzten zehn Jahren nicht verĂ€ndert haben. Innerhalb dieses hochdynamischen Ökosystems mĂŒssen Softwarearchitekten in der Lage sein, Entscheidungen zu treffen. Da alles – inklusive der Grundlagen, auf deren Basis wir Entscheidungen treffen – stĂ€ndig in Bewegung ist, sollten Architekten die grundlegenden Axiome frĂŒherer Publikationen immer wieder ĂŒberprĂŒfen und infrage stellen. DevOps spielten in frĂŒheren BĂŒchern ĂŒber Softwarearchitektur keine Rolle, weil es sie beim Schreiben dieser BĂŒcher einfach noch nicht gab.
Beim Studium der Softwarearchitektur sollten die Leser sich darĂŒber klar sein, dass sie – wie die Kunst – nur im richtigen Kontext verstanden werden kann. Viele der Entscheidungen von Softwarearchitekten wurden auf Basis der RealitĂ€ten getroffen, in denen sie sich gerade befanden. Eines der Hauptziele der Architektur des ausgehenden 20. Jahrhunderts war beispielsweise eine möglichst kosteneffiziente Nutzung verteilter Ressourcen. Damals war die gesamte Infrastruktur sehr teuer und kommerziell: Betriebssysteme, Application Server, Datenbankserver und so weiter. Stellen Sie sich vor, Sie betreten im Jahr 2002 ein Rechenzentrum und sagen dem Betriebsleiter: »Hey, ich habe eine tolle Idee fĂŒr einen revolutionĂ€ren Architekturstil. Dabei lĂ€uft jeder Dienst inklusive seiner eigenen Datenbank auf einem eigenen isolierten Rechner (was wir heute als Microservices kennen). Das wĂŒrde bedeuten, wir brĂ€uchten 50 Windows-Lizenzen, weitere 30 Lizenzen fĂŒr Application Server und mindestens 50 Lizenzen fĂŒr Datenbankserver.« Der Versuch, eine Architektur wie Microservices zu schaffen, wĂ€re 2002 unermesslich teuer geworden. Durch das Aufkommen von Open-Source-Lösungen zusammen mit neuen Entwicklungspraktiken wie der DevOps-Revolution sind wir inzwischen jedoch in der Lage, eine Architektur wie die beschriebene zu erstellen. Die Leser sollten daher nicht vergessen, dass alle Architekturen ein Produkt ihres Kontexts sind.

Softwarearchitektur definieren

Die gesamte Branche hat sich bisher damit schwergetan, eine prĂ€zise Definition fĂŒr den Begriff »Softwarearchitektur« zu finden. Einige Architekten verstehen darunter den Bauplan eines Systems, wĂ€hrend andere sie als Roadmap fĂŒr die Entwicklung eines Systems definieren. Das Problem mit diesen verbreiteten Definitionen besteht darin, dass man nicht weiß, was der Bauplan oder die Roadmap tatsĂ€chlich enthĂ€lt. Was genau wird beispielsweise analysiert, wenn ein Architekt eine Architektur analysiert?
Abbildung 1-2 zeigt eine Möglichkeit, sich die Softwarearchitektur vorzustellen. In dieser Definition besteht sie aus der Struktur des Systems (dargestellt durch die dicken schwarzen Linien, die die Architektur stĂŒtzen), kombiniert mit den architektonischen Eigenschaften (bzw. FĂ€higkeiten, engl. »-ilities«), die das System unterstĂŒtzen muss, den architektonischen Entscheidungen und schließlich den Designprinzipien.
image
Abbildung 1-2: Architektur besteht aus Struktur, den architektonischen Eigenschaften (FĂ€higkeiten), architektonischen Entscheidungen und Designprinzipien
Die in Abbildung 1-3 gezeigte Struktur des Systems bezieht sich auf den Architekturstil (oder die Stile), in dem das System implementiert ist (zum Beispiel als Microservices, schichtbasiertes Modell oder Microkernel). Die Struktur allein reicht aber nicht, um eine Architektur zu beschreiben. Angenommen, ein Architekt soll eine Architektur beschreiben und seine Antwort lautet: »Es ist eine Microservices-Architektur.« In diesem Fall spricht der Architekt nur von der Struktur des Systems, aber nicht von seiner Architektur. Das Wissen um die architektonischen Eigenschaften, Entscheidungen und Designprinzipien ist genauso wichtig, um die Architektur eines Systems vollstÀndig zu verstehen.
Die architektonischen Eigenschaften bilden eine weitere Dimension in der Definition einer Softwarearchitektur (siehe Abbildung 1-4). Die architektonischen Eigenschaften definieren die Erfolgskriterien eines Systems. Sie stehen ĂŒblicherweise senkrecht zur SystemfunktionalitĂ€t. Beachten Sie, dass fĂŒr sĂ€mtliche aufgelisteten Eigenschaften kein Wissen ĂŒber die SystemfunktionalitĂ€t notwendig ist. Dennoch werden sie gebraucht, damit das System korrekt funktioniert. Die architektonischen Eigenschaften sind so wichtig, dass wir ihrer Definition und ihrem VerstĂ€ndnis mehrere Kapitel dieses Buchs gewidmet haben.
image
Abbildung 1-3: Die Struktur zeigt, welcher Typ des architektonischen Stils im System verwendet wird.
image
Abbildung 1-4: Architektonische Eigenschaften beziehen sich auf die FĂ€higkeiten, die das System unterstĂŒtzen muss.
Der nĂ€chste Faktor, der eine Softwarearchitektur definiert, sind die Architekturentscheidungen. Architektonische Entscheidungen definieren die Regeln, nach denen ein System konstruiert wird. So könnte ein Architekt beispielsweise die Entscheidung treffen, dass nur die Business- und Service-Schichten innerhalb einer schichtbasierten Architektur auf die Datenbank zugreifen können (siehe Abbildung 1-5). Damit soll zum Beispiel verhindert werden, dass die PrĂ€sentationsschicht direkte Datenbankaufrufe durchfĂŒhrt. Architektonische Entscheidungen definieren die BeschrĂ€nkungen eines Systems, dienen als Rahmen fĂŒr die Entwicklungsteams und zeigen ihnen an, welche Dinge erlaubt sind und welche nicht.
image
Abbildung 1-5: Architektonische Entscheidungen sind Regeln fĂŒr die Konstruktion eines Systems.
Kann eine architektonische Entscheidung aufgrund bestimmter Bedingungen oder BeschrĂ€nkungen in einem Systemsteil nicht umgesetzt werden, kann diese Entscheidung (oder Regel) durch die sogenannte Varianz gebrochen werden. In den meisten Unternehmen gibt es Varianzmodelle, die von einem Architektur-PrĂŒfungsgremium (Architecture Review Board, ARB) oder einem Chefarchitekten eingesetzt werden können. Eine Ausnahme fĂŒr eine bestimmte Architekturentscheidung wird vom ARB (oder dem Chefarchitekten, falls es kein ARB gibt) analysiert und basierend auf den BegrĂŒndungen und möglichen Vor- und Nachteilen entweder genehmigt oder abgelehnt.
Der letzte Faktor bei der Definition einer Architektur sind die Designprinzipien. Der Unterschied zwischen einem Designprinzip und einer Architekturentscheidung besteht darin, dass ein Designprinzip eher eine Richtlinie als eine strenge und unverrĂŒckbare Regel darstellt. Das in Abbildung 1-6 gezeigte Designprinzip besagt beispielsweise, dass die Entwicklungsteams möglichst asynchrones Messaging fĂŒr die Kommunikation zwischen den Diensten verwenden sollen, um die Performance zu steigern. Eine architektonische Entscheidung (Regel) könnte niemals alle Bedingungen und Optionen fĂŒr die Kommunikation zwischen den Diensten abdecken. Hier kann ein Designprinzip helfen, um Richtlinien fĂŒr die bevorzugte Methode (hier das asynchrone Messaging) aufzustellen. Auf diese Weise können Entwickler ggf. ein passenderes Kommunikationsprotokoll (zum Beispiel REST oder gRPC) wĂ€hlen.
image
Abbildung 1-6: Designprinzipien sind ...

Table des matiĂšres

  1. Cover
  2. Titel
  3. Impressum
  4. Inhalt
  5. Vorwort: Axiome infrage stellen
  6. 1 Einleitung
  7. Teil I Grundlagen
  8. Teil II Architekturstile
  9. Teil III Techniken und Soft Skills
  10. A Fragen zur Selbstbeurteilung
  11. Fußnoten
  12. Index
  13. Über die Autoren
  14. Über den Übersetzer
  15. Kolophon
Normes de citation pour Handbuch moderner Softwarearchitektur

APA 6 Citation

Richards, M., & Ford, N. (2020). Handbuch moderner Softwarearchitektur ([edition unavailable]). O’Reilly. Retrieved from https://www.perlego.com/book/2691889/handbuch-moderner-softwarearchitektur-architekturstile-patterns-und-best-practices-pdf (Original work published 2020)

Chicago Citation

Richards, Mark, and Neal Ford. (2020) 2020. Handbuch Moderner Softwarearchitektur. [Edition unavailable]. O’Reilly. https://www.perlego.com/book/2691889/handbuch-moderner-softwarearchitektur-architekturstile-patterns-und-best-practices-pdf.

Harvard Citation

Richards, M. and Ford, N. (2020) Handbuch moderner Softwarearchitektur. [edition unavailable]. O’Reilly. Available at: https://www.perlego.com/book/2691889/handbuch-moderner-softwarearchitektur-architekturstile-patterns-und-best-practices-pdf (Accessed: 15 October 2022).

MLA 7 Citation

Richards, Mark, and Neal Ford. Handbuch Moderner Softwarearchitektur. [edition unavailable]. O’Reilly, 2020. Web. 15 Oct. 2022.