Facebook Pixel
Searching...
Deutsch
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Building Microservices

Building Microservices

Designing Fine-Grained Systems
von Sam Newman 2014 473 Seiten
4.22
5k+ Bewertungen
Hören
Listen to Summary

Wichtige Erkenntnisse

1. Microservices: Kleine, autonome Dienste, die zusammenarbeiten

Microservices sind kleine, autonome Dienste, die zusammenarbeiten.

Grundlagen der Microservices. Die Microservices-Architektur basiert auf dem Prinzip, Software als eine Suite von kleinen, unabhängigen Diensten zu entwickeln. Jeder Dienst konzentriert sich darauf, eine Sache gut zu machen, läuft in seinem eigenen Prozess und kommuniziert über leichte Mechanismen wie HTTP/REST-APIs. Dieser Ansatz ermöglicht eine größere Flexibilität, Skalierbarkeit und Wartbarkeit im Vergleich zu monolithischen Architekturen.

Vorteile und Herausforderungen. Wichtige Vorteile von Microservices umfassen:

  • Verbesserte Modularität
  • Einfachere Skalierung einzelner Komponenten
  • Technologische Vielfalt
  • Verbesserte Fehlerisolierung
  • Schnellere Bereitstellungszyklen

Allerdings bringen Microservices auch Herausforderungen mit sich, wie:

  • Erhöhte betriebliche Komplexität
  • Bedenken bei verteilten Systemen (z.B. Netzwerklatenz, Fehlertoleranz)
  • Datenkonsistenz über Dienste hinweg

2. Evolutionäre Architektur: Anpassung an sich ändernde Anforderungen

Die Rolle des Architekten besteht darin, das große Ganze zu betrachten und dieses Gleichgewicht zu verstehen.

Veränderungen annehmen. Evolutionäre Architektur betont die Notwendigkeit, dass Systeme sich im Laufe der Zeit an sich ändernde Anforderungen anpassen. Dieser Ansatz erkennt an, dass es unmöglich ist, alle zukünftigen Bedürfnisse vorherzusagen, und konzentriert sich stattdessen darauf, eine flexible Grundlage zu schaffen, die sich weiterentwickeln kann.

Wichtige Prinzipien:

  • Inkrementelle Veränderungen: Kleine, häufige Updates statt großer, seltener Änderungen
  • Geleitete Veränderungen: Prinzipien und Praktiken zur Steuerung architektonischer Entscheidungen nutzen
  • Mehrere Architekturen: Anerkennen, dass sich verschiedene Teile des Systems mit unterschiedlichen Geschwindigkeiten entwickeln können

Architekten in diesem Modell agieren eher wie Stadtplaner, die Richtlinien und Einschränkungen festlegen, anstatt jedes Detail zu diktieren. Dies ermöglicht es Teams, lokale Entscheidungen zu treffen und gleichzeitig die Kohärenz des Gesamtsystems zu gewährleisten.

3. Modellierung von Diensten: Definition von Grenzen und Kontexten

Wir konzentrieren unsere Dienstgrenzen auf Geschäftsgrenzen, sodass klar ist, wo der Code für eine bestimmte Funktionalität lebt.

Domänengetriebene Gestaltung. Eine effektive Modellierung von Diensten erfordert ein tiefes Verständnis der Geschäftsdomain. Domain-Driven Design (DDD) bietet wertvolle Konzepte zur Definition von Dienstgrenzen:

  • Begrenzte Kontexte: Bereiche der Domain mit klaren Grenzen
  • Allgegenwärtige Sprache: Eine gemeinsame Sprache, die von Entwicklern und Fachexperten geteilt wird
  • Aggregate: Cluster von Domain-Objekten, die als Einheit behandelt werden

Identifizierung von Dienstgrenzen:

  • Ausrichtung an Geschäftsfähigkeiten
  • Kapselung von Daten und Verhalten
  • Minimierung von Abhängigkeiten zwischen Diensten
  • Berücksichtigung der Teamstruktur und Kommunikationsmuster

Gut definierte Grenzen führen zu kohärenteren Diensten und einer lockereren Kopplung zwischen ihnen, was die unabhängige Entwicklung und Bereitstellung erleichtert.

4. Integrationsstrategien: Die richtige Kommunikationsmethode wählen

Seien Sie konservativ in dem, was Sie tun, und liberal in dem, was Sie von anderen akzeptieren.

Bedeutung der Integration. Eine effektive Integration ist entscheidend dafür, dass Microservices nahtlos zusammenarbeiten. Die Wahl der Integrationstechnologie hat erheblichen Einfluss auf die Flexibilität, Leistung und Wartbarkeit des Systems.

Wichtige Integrationsmuster:

  • Synchrone Kommunikation: REST, gRPC
  • Asynchrone Kommunikation: Nachrichtenwarteschlangen, Event-Streaming
  • API-Gateways: Für Anforderungsrouting und -zusammenstellung
  • Service-Mesh: Für die Handhabung der Dienst-zu-Dienst-Kommunikation

Best Practices:

  • Verwendung technologieunabhängiger Protokolle (z.B. HTTP)
  • Implementierung toleranter Leser, um Änderungen reibungslos zu handhaben
  • Design für Ausfälle mit Circuit Breakers und Bulkheads
  • Berücksichtigung ereignisgesteuerter Architekturen für lose Kopplung

Die richtige Integrationsstrategie hängt von Ihrem spezifischen Anwendungsfall, den Leistungsanforderungen und der Expertise Ihres Teams ab.

5. Den Monolithen aufteilen: Übergang zu Microservices

Betrachten Sie unseren Monolithen als einen Marmorblock. Wir könnten das Ganze in die Luft jagen, aber das endet selten gut. Es ist viel sinnvoller, ihn schrittweise abzutragen.

Inkrementeller Ansatz. Der Übergang von einer monolithischen Architektur zu Microservices erfolgt am besten schrittweise. Dies ermöglicht es den Teams, zu lernen und sich anzupassen, während das Risiko minimiert wird.

Schritte zur Aufteilung eines Monolithen:

  1. Identifizieren von Nähten im bestehenden Code
  2. Extrahieren begrenzter Kontexte in separate Module
  3. Refaktorisierung gemeinsamer Datenstrukturen und Datenbanken
  4. Erstellen von APIs für die Kommunikation zwischen Modulen
  5. Extrahieren von Modulen in separate Dienste
  6. Implementierung neuer Funktionen als Microservices

Zu berücksichtigende Herausforderungen:

  • Datenabhängigkeiten zwischen Diensten
  • Transaktionale Integrität über Dienstgrenzen hinweg
  • Leistungsbeeinträchtigung durch Netzwerkkommunikation
  • Betriebliche Komplexität bei der Verwaltung mehrerer Dienste

Beginnen Sie mit den einfachsten, am wenigsten riskanten Extraktionen, um Vertrauen und Erfahrung aufzubauen, bevor Sie sich komplexeren Teilen des Systems widmen.

6. Bereitstellungstechniken: Sicherstellung von Zuverlässigkeit und Skalierbarkeit

Wenn etwas richtig, aber schwierig ist, sollten wir bestrebt sein, es einfacher zu machen.

Automatisierte Bereitstellung. Zuverlässige und skalierbare Bereitstellung ist entscheidend für den Erfolg von Microservices. Continuous Integration und Continuous Delivery (CI/CD) Praktiken sind unerlässlich, um die erhöhte Bereitstellungskomplexität zu bewältigen.

Wichtige Bereitstellungstechniken:

  • Infrastruktur als Code (IaC)
  • Containerisierung (z.B. Docker)
  • Orchestrierungsplattformen (z.B. Kubernetes)
  • Blue-Green-Bereitstellungen
  • Canary-Releases

Bereitstellungsüberlegungen:

  • Dienstentdeckung und Konfigurationsmanagement
  • Überwachung und Protokollierung
  • Sicherheit und Zugriffskontrolle
  • Datenbankmigrationen und Datenkonsistenz

Investieren Sie in Tools und Automatisierung, um Bereitstellungen einfacher, schneller und zuverlässiger zu machen. Dies ermöglicht es den Teams, häufig mit Vertrauen bereitzustellen und die vollen Vorteile der Microservices-Architektur zu realisieren.

7. Testen von Microservices: Qualität in einem verteilten System aufrechterhalten

Je mehr bewegliche Teile, desto brüchiger können unsere Tests sein und desto weniger deterministisch sind sie.

Umfassende Teststrategie. Das Testen von Microservices erfordert einen mehrschichtigen Ansatz, um sowohl die Qualität einzelner Dienste als auch das Gesamtverhalten des Systems sicherzustellen.

Testpyramide für Microservices:

  • Unit-Tests: Schnelle, fokussierte Tests für einzelne Komponenten
  • Integrationstests: Überprüfung der Interaktionen zwischen Diensten
  • Vertragstests: Sicherstellen, dass Dienste vereinbarte Schnittstellen einhalten
  • End-to-End-Tests: Validierung des gesamten Systemverhaltens

Testherausforderungen:

  • Erhöhte Komplexität aufgrund der verteilten Natur
  • Verwaltung von Testdaten über Dienste hinweg
  • Simulation produktionsähnlicher Umgebungen
  • Handhabung asynchroner Interaktionen

Betonen Sie schnelle Feedback-Schleifen mit Unit- und Integrationstests, während Sie weniger, sorgfältig ausgewählte End-to-End-Tests verwenden, um kritische Pfade zu validieren. Erwägen Sie die Verwendung von verbrauchergesteuerten Verträgen, um Dienstabhängigkeiten effektiv zu verwalten.

8. Überwachung und Sicherheit: Microservices gesund und geschützt halten

Gute Protokollierung und insbesondere die Fähigkeit, Protokolle aus mehreren Systemen zu aggregieren, dient nicht der Prävention, kann aber bei der Erkennung und Wiederherstellung von schlechten Ereignissen helfen.

Ganzheitlicher Ansatz. Effektive Überwachung und Sicherheit sind entscheidend für die Aufrechterhaltung eines gesunden Microservices-Ökosystems. Diese Aspekte werden in verteilten Systemen herausfordernder und wichtiger.

Best Practices für die Überwachung:

  • Zentralisierte Protokollierung und Protokollaggregation
  • Verteiltes Tracing (z.B. mit Korrelations-IDs)
  • Echtzeit-Alarmierung und Dashboards
  • Application Performance Monitoring (APM)
  • Synthetische Überwachung für kritische Pfade

Sicherheitsüberlegungen:

  • Authentifizierung und Autorisierung von Dienst-zu-Dienst
  • API-Gateways für Edge-Sicherheit
  • Geheimnisverwaltung
  • Netzwerksegmentierung
  • Regelmäßige Sicherheitsüberprüfungen und Penetrationstests

Implementieren Sie eine Defense-in-Depth-Strategie, die sowohl den Perimeter als auch die einzelnen Dienste sichert. Nutzen Sie Automatisierung, um eine konsistente Anwendung von Sicherheitsrichtlinien über alle Dienste hinweg sicherzustellen.

9. Conways Gesetz: Organisation und Systemdesign ausrichten

Conways Gesetz hebt die Gefahren hervor, ein Systemdesign durchzusetzen, das nicht zur Organisation passt.

Organisatorische Auswirkungen. Conways Gesetz besagt, dass das Systemdesign die Kommunikationsstrukturen innerhalb einer Organisation widerspiegelt. Dieses Prinzip hat erhebliche Auswirkungen auf die Microservices-Architektur.

Ausrichtung von Teams und Diensten:

  • Organisieren Sie Teams um Geschäftsfähigkeiten
  • Ermächtigen Sie Teams mit End-to-End-Verantwortung für Dienste
  • Minimieren Sie Abhängigkeiten zwischen Teams
  • Fördern Sie eine Kultur der Zusammenarbeit und gemeinsamen Verantwortung

Überlegungen:

  • Teamgröße und -zusammensetzung
  • Kommunikationsmuster und -tools
  • Entscheidungsprozesse
  • Kompetenzentwicklung und Wissensaustausch

Erkennen Sie, dass Organisationsstruktur und Systemarchitektur miteinander verflochten sind. Entwickeln Sie beide im Einklang, um ein Umfeld zu schaffen, das den erfolgreichen Microservices-Entwicklung und -Betrieb fördert.

10. Skalierung von Microservices: Wachstum und Ausfälle bewältigen

In großem Maßstab, selbst wenn Sie die beste Ausrüstung und die teuerste Hardware kaufen, können Sie nicht vermeiden, dass Dinge ausfallen können und werden.

Design für Skalierung und Resilienz. Microservices-Architekturen müssen so gestaltet sein, dass sie sowohl Wachstum in der Nachfrage als auch unvermeidliche Ausfälle elegant bewältigen.

Skalierungsstrategien:

  • Horizontale Skalierung (Hinzufügen weiterer Instanzen)
  • Vertikale Skalierung (Erhöhung der Ressourcen pro Instanz)
  • Caching (In-Memory, verteilt)
  • Datenbank-Sharding und -Replikation
  • Asynchrone Verarbeitung und ereignisgesteuerte Architekturen

Resilienz-Muster:

  • Circuit Breakers zur Vermeidung von Kaskadenfehlern
  • Bulkheads für Fehlerisolierung
  • Timeouts und Wiederholungen mit exponentiellem Backoff
  • Gnadenvolle Degradierung der Funktionalität

CAP-Theorem-Überlegungen:

  • Konsistenz
  • Verfügbarkeit
  • Partitionstoleranz

Verstehen Sie, dass Kompromisse notwendig sind, wenn Sie verteilte Systeme skalieren. Priorisieren Sie basierend auf Ihren spezifischen Anforderungen und Einschränkungen. Implementieren Sie Beobachtbarkeit und Chaos-Engineering-Praktiken, um die Systemresilienz kontinuierlich zu verbessern.

Zuletzt aktualisiert:

FAQ

What's Building Microservices by Sam Newman about?

  • Microservices Architecture: The book explores microservices, which are small, autonomous services that collaborate to form a system. It highlights how this architecture can enhance software delivery speed and flexibility.
  • Business Domain Focus: Microservices are modeled around business domains, aligning software design with business needs and avoiding issues of monolithic architectures.
  • Practical Guidance: Sam Newman provides real-world examples from companies like Netflix and Amazon, offering a comprehensive guide for adopting or understanding microservices.

Why should I read Building Microservices by Sam Newman?

  • Comprehensive Resource: It covers design, development, deployment, testing, and maintenance of microservices, making it ideal for those transitioning from monolithic systems.
  • Real-World Examples: The book includes insights from organizations that have successfully implemented microservices, providing practical perspectives and lessons learned.
  • Continuous Learning: It encourages embracing continuous learning to keep up with the fast-evolving nature of microservices technology and practices.

What are the key takeaways of Building Microservices by Sam Newman?

  • Microservices Benefits: The book outlines benefits like improved scalability, resilience, and quick adoption of new technologies due to service autonomy.
  • Loose Coupling and High Cohesion: Emphasizes designing services to be loosely coupled and highly cohesive, facilitating easier maintenance and updates.
  • Integration Strategies: Discusses synchronous and asynchronous communication strategies, crucial for maintaining service autonomy and effective collaboration.

What is the definition of microservices according to Building Microservices by Sam Newman?

  • Small, Autonomous Services: Defined as "small, autonomous services that work together," highlighting their independence and functionality without reliance on others.
  • Business Functionality Focus: Each microservice handles a specific business capability, aligning with organizational goals and prioritizing work effectively.
  • Decoupled Communication: Services communicate through well-defined APIs, maintaining loose coupling and enabling independent development and deployment.

How does Building Microservices by Sam Newman suggest modeling services?

  • Bounded Contexts: Introduces bounded contexts from Domain-Driven Design to define service boundaries, with each context representing a specific responsibility.
  • Loose Coupling and High Cohesion: Stresses that related functionality should reside within the same service, while unrelated functionality should be separated.
  • Iterative Approach: Recommends refining service boundaries over time to accommodate changes in business requirements and technology.

What are the integration strategies discussed in Building Microservices by Sam Newman?

  • Synchronous vs. Asynchronous: Contrasts synchronous communication, where a service waits for a response, with asynchronous communication, where services operate independently.
  • Event-Driven Architecture: Advocates for event-driven architectures, where services emit events to signal state changes, promoting loose coupling.
  • REST and RPC: Discusses RESTful APIs and Remote Procedure Calls for service communication, emphasizing technology-agnostic APIs for flexibility.

What are the challenges of deploying microservices as outlined in Building Microservices by Sam Newman?

  • Increased Complexity: Warns of the complexity due to interdependencies between services, which can lead to deployment challenges without proper management.
  • Continuous Integration and Delivery: Emphasizes robust CI/CD practices to manage microservices effectively, ensuring quick and reliable deployments.
  • Monitoring and Management: Suggests comprehensive monitoring solutions to track the health and performance of each service independently.

How does Building Microservices by Sam Newman address testing in microservices?

  • Types of Tests: Categorizes tests into technology-facing and business-facing, including unit, integration, and end-to-end tests for service reliability.
  • Consumer-Driven Contracts: Introduces consumer-driven contracts to validate service interactions, ensuring changes in one service don't break dependent services.
  • Automated Testing: Advocates for automated testing to maintain quality and speed in deployment, allowing confident release of changes.

What is the significance of Conway’s Law in Building Microservices by Sam Newman?

  • Organizational Structure and Architecture: Discusses Conway’s Law, which states that system designs reflect the communication structures of organizations.
  • Team Autonomy: Emphasizes organizing microservices around autonomous teams that own specific services, fostering accountability and ownership.
  • Impact on Design: Highlights the importance of aligning team structures with service boundaries for effective collaboration and faster feature delivery.

What are the best quotes from Building Microservices by Sam Newman and what do they mean?

  • Freedom to React: "Microservices give us significantly more freedom to react and make different decisions," highlighting agility compared to monolithic architectures.
  • Service Autonomy: "The golden rule: can you make a change to a service and deploy it by itself without changing anything else?" emphasizes designing independent services.
  • Postel's Law: "Be conservative in what you do, be liberal in what you accept from others," underscores flexibility in service interactions while maintaining strict internal standards.

What are some architectural safety measures discussed in Building Microservices by Sam Newman?

  • Circuit Breakers: Prevent cascading failures by stopping further calls to a failing service, allowing it to recover without being overwhelmed.
  • Bulkheads: Isolate different parts of a system to prevent a failure in one area from affecting others, enhancing resilience and stability.
  • Timeouts: Setting appropriate timeouts for service calls to avoid hanging requests, ensuring services can fail fast and recover effectively.

How does Building Microservices by Sam Newman suggest handling service discovery?

  • Dynamic Service Registries: Discusses using tools like Consul and Eureka for managing service discovery, allowing easy registration and discovery of services.
  • DNS as a Solution: Mentions DNS for service discovery, though it may not suit highly dynamic environments, suggesting load balancers to mitigate limitations.
  • Human-Friendly Interfaces: Emphasizes creating user-friendly interfaces for service discovery, aiding developers in finding and understanding available services.

Rezensionen

4.22 von 5
Durchschnitt von 5k+ Bewertungen von Goodreads und Amazon.

Building Microservices erhält gemischte Bewertungen, wobei viele das umfassende Überblick über Microservices-Konzepte und die praktischen Ratschläge loben. Leser schätzen den vorsichtigen Ansatz des Autors und die realen Beispiele. Kritiker bemängeln die fehlende Tiefe bei einigen Themen und die potenzielle Überbewertung von Microservices. Viele finden es für Anfänger wertvoll, aber weniger nützlich für erfahrene Architekten. Das Buch behandelt verschiedene Aspekte von Microservices, einschließlich Design, Bereitstellung, Testen und Skalierung. Einige Leser wünschten sich konkretere Implementierungsdetails, während andere die hochrangige Perspektive auf Softwarearchitektur schätzten.

Über den Autor

Sam Newman ist ein renommierter Softwarearchitekt und Berater, der sich auf Microservices, Cloud-Computing und Continuous Delivery spezialisiert hat. Mit umfangreicher Erfahrung auf diesem Gebiet hat er mit zahlreichen Organisationen zusammengearbeitet, um deren Softwarearchitekturen zu implementieren und zu verbessern. Newman ist ein häufiger Redner auf Konferenzen und hat mehrere Bücher über Softwareentwicklung verfasst. Sein Schreibstil wird für seine Klarheit, Praxisnähe und Anschaulichkeit gelobt, da er aus seinen realen Erfahrungen schöpft. Als Vordenker im Bereich der Microservices hat Newmans Arbeit die Herangehensweise der Branche an den Aufbau verteilter Systeme maßgeblich beeinflusst. Seine Expertise geht über technische Aspekte hinaus und umfasst auch organisatorische und kulturelle Überlegungen in der Softwareentwicklung.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Get personalized suggestions
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Apr 26,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Appearance
Loading...
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →