Facebook Pixel
Searching...
Italiano
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
di Sam Newman 2014 473 pagine
4.22
5k+ valutazioni
Ascolta
Listen to Summary

Punti chiave

1. Microservizi: Piccoli servizi autonomi che lavorano insieme

I microservizi sono piccoli servizi autonomi che collaborano tra loro.

Fondamenti dei microservizi. L'architettura a microservizi si basa sul principio di sviluppare software come una suite di piccoli servizi indipendenti. Ogni servizio è focalizzato su un compito specifico, opera nel proprio processo e comunica tramite meccanismi leggeri come le API HTTP/REST. Questo approccio consente una maggiore flessibilità, scalabilità e manutenibilità rispetto alle architetture monolitiche.

Vantaggi e sfide. I principali vantaggi dei microservizi includono:

  • Maggiore modularità
  • Scalabilità più semplice dei singoli componenti
  • Diversità tecnologica
  • Migliore isolamento dei guasti
  • Cicli di distribuzione più rapidi

Tuttavia, i microservizi introducono anche sfide come:

  • Maggiore complessità operativa
  • Preoccupazioni relative ai sistemi distribuiti (ad es., latenza di rete, tolleranza ai guasti)
  • Coerenza dei dati tra i servizi

2. Architettura evolutiva: Adattarsi ai requisiti in cambiamento

Il ruolo dell'architetto è guardare il quadro generale e comprendere questo equilibrio.

Abbracciare il cambiamento. L'architettura evolutiva sottolinea la necessità che i sistemi si adattino ai requisiti in cambiamento nel tempo. Questo approccio riconosce che è impossibile prevedere tutte le esigenze future, quindi si concentra sulla creazione di una base flessibile che possa evolversi.

Principi chiave:

  • Cambiamento incrementale: Effettuare aggiornamenti piccoli e frequenti piuttosto che grandi e rari
  • Cambiamento guidato: Utilizzare principi e pratiche per orientare le decisioni architettoniche
  • Architetture multiple: Riconoscere che diverse parti del sistema possono evolversi a ritmi diversi

In questo modello, gli architetti agiscono più come pianificatori urbani, stabilendo linee guida e vincoli, piuttosto che dettare ogni dettaglio. Questo consente ai team di prendere decisioni locali garantendo al contempo la coesione complessiva del sistema.

3. Modellazione dei servizi: Definire confini e contesti

Ci concentriamo sui confini dei nostri servizi in base ai confini aziendali, rendendo ovvio dove risiede il codice per una determinata funzionalità.

Design orientato al dominio. Modellare i servizi in modo efficace richiede una profonda comprensione del dominio aziendale. Il design orientato al dominio (DDD) fornisce concetti preziosi per definire i confini dei servizi:

  • Contesti delimitati: Aree del dominio con confini chiari
  • Linguaggio ubiquo: Un linguaggio comune condiviso da sviluppatori ed esperti di dominio
  • Aggregati: Gruppi di oggetti di dominio trattati come un'unità

Identificazione dei confini dei servizi:

  • Allinearsi con le capacità aziendali
  • Incapsulare dati e comportamenti
  • Minimizzare le dipendenze tra i servizi
  • Considerare la struttura del team e i modelli di comunicazione

Confini ben definiti portano a servizi più coesi e a un accoppiamento più sciolto tra di essi, facilitando lo sviluppo e la distribuzione indipendenti.

4. Strategie di integrazione: Scegliere l'approccio giusto per la comunicazione

Sii conservativo in ciò che fai, sii liberale in ciò che accetti dagli altri.

Importanza dell'integrazione. Un'integrazione efficace è cruciale affinché i microservizi lavorino insieme senza problemi. La scelta della tecnologia di integrazione influisce significativamente sulla flessibilità, sulle prestazioni e sulla manutenibilità del sistema.

Modelli di integrazione chiave:

  • Comunicazione sincrona: REST, gRPC
  • Comunicazione asincrona: Code di messaggi, streaming di eventi
  • API gateway: Per il routing e la composizione delle richieste
  • Service mesh: Per gestire la comunicazione tra servizi

Migliori pratiche:

  • Utilizzare protocolli indipendenti dalla tecnologia (ad es., HTTP)
  • Implementare lettori tolleranti per gestire i cambiamenti in modo fluido
  • Progettare per il fallimento con circuit breaker e compartimenti stagni
  • Considerare architetture basate su eventi per un accoppiamento sciolto

La giusta strategia di integrazione dipende dal tuo caso d'uso specifico, dai requisiti di prestazione e dalle competenze del team.

5. Suddividere il monolite: Transizione ai microservizi

Considera il nostro monolite come un blocco di marmo. Potremmo farlo esplodere tutto, ma raramente finisce bene. Ha molto più senso lavorarci sopra in modo incrementale.

Approccio incrementale. La transizione da un'architettura monolitica a microservizi è meglio effettuata gradualmente. Questo consente ai team di apprendere e adattarsi riducendo al minimo il rischio.

Passi per suddividere un monolite:

  1. Identificare le giunture nel codice esistente
  2. Estrarre contesti delimitati in moduli separati
  3. Rifattorizzare le strutture dati condivise e i database
  4. Creare API per la comunicazione intermodulare
  5. Estrarre i moduli in servizi separati
  6. Implementare nuove funzionalità come microservizi

Sfide da considerare:

  • Dipendenze dei dati tra i servizi
  • Integrità transazionale oltre i confini dei servizi
  • Impatto sulle prestazioni della comunicazione di rete
  • Complessità operativa nella gestione di più servizi

Inizia con le estrazioni più semplici e meno rischiose per costruire fiducia ed esperienza prima di affrontare parti più complesse del sistema.

6. Tecniche di distribuzione: Garantire affidabilità e scalabilità

Se fare qualcosa è giusto ma difficile, dobbiamo sforzarci di semplificare le cose.

Distribuzione automatizzata. Un'implementazione affidabile e scalabile è fondamentale per il successo dei microservizi. Le pratiche di Integrazione Continua e Distribuzione Continua (CI/CD) sono essenziali per gestire la complessità aumentata della distribuzione.

Tecniche di distribuzione chiave:

  • Infrastruttura come codice (IaC)
  • Containerizzazione (ad es., Docker)
  • Piattaforme di orchestrazione (ad es., Kubernetes)
  • Distribuzioni blue-green
  • Rilasci canary

Considerazioni sulla distribuzione:

  • Scoperta dei servizi e gestione della configurazione
  • Monitoraggio e registrazione
  • Sicurezza e controllo degli accessi
  • Migrazioni di database e coerenza dei dati

Investi in strumenti e automazione per rendere le distribuzioni più semplici, veloci e affidabili. Questo consente ai team di distribuire frequentemente con fiducia, realizzando i pieni benefici dell'architettura a microservizi.

7. Testare i microservizi: Mantenere la qualità in un sistema distribuito

Più parti in movimento ci sono, più fragili possono essere i nostri test e meno deterministici.

Strategia di test completa. Testare i microservizi richiede un approccio multilivello per garantire sia la qualità dei singoli servizi che il comportamento complessivo del sistema.

Piramide dei test per i microservizi:

  • Test unitari: Test rapidi e mirati per singoli componenti
  • Test di integrazione: Verificare le interazioni tra i servizi
  • Test di contratto: Assicurarsi che i servizi soddisfino le interfacce concordate
  • Test end-to-end: Validare il comportamento dell'intero sistema

Sfide nei test:

  • Complessità aumentata a causa della natura distribuita
  • Gestire i dati di test tra i servizi
  • Simulare ambienti simili alla produzione
  • Gestire interazioni asincrone

Sottolinea i loop di feedback rapidi con test unitari e di integrazione, utilizzando meno test end-to-end, scelti con attenzione, per convalidare i percorsi critici. Considera l'uso di contratti guidati dai consumatori per gestire efficacemente le dipendenze tra i servizi.

8. Monitoraggio e sicurezza: Mantenere i microservizi sani e protetti

Una buona registrazione, e in particolare la capacità di aggregare i log da più sistemi, non riguarda la prevenzione, ma può aiutare a rilevare e recuperare da eventi negativi.

Approccio olistico. Un monitoraggio e una sicurezza efficaci sono cruciali per mantenere un ecosistema di microservizi sano. Questi aspetti diventano più impegnativi e importanti nei sistemi distribuiti.

Migliori pratiche di monitoraggio:

  • Registrazione centralizzata e aggregazione dei log
  • Tracciamento distribuito (ad es., utilizzando ID di correlazione)
  • Allerta in tempo reale e dashboard
  • Monitoraggio delle prestazioni delle applicazioni (APM)
  • Monitoraggio sintetico per percorsi critici

Considerazioni sulla sicurezza:

  • Autenticazione e autorizzazione tra servizi
  • API gateway per la sicurezza al confine
  • Gestione dei segreti
  • Segmentazione della rete
  • Audit di sicurezza regolari e test di penetrazione

Implementa una strategia di difesa in profondità, proteggendo sia il perimetro che i singoli servizi. Utilizza l'automazione per garantire l'applicazione coerente delle politiche di sicurezza in tutti i servizi.

9. La legge di Conway: Allineare organizzazione e design del sistema

La legge di Conway evidenzia i pericoli di cercare di imporre un design di sistema che non corrisponde all'organizzazione.

Impatto organizzativo. La legge di Conway afferma che il design del sistema rispecchia le strutture di comunicazione all'interno di un'organizzazione. Questo principio ha implicazioni significative per l'architettura a microservizi.

Allineare team e servizi:

  • Organizzare i team attorno alle capacità aziendali
  • Dare potere ai team con la proprietà end-to-end dei servizi
  • Minimizzare le dipendenze tra team
  • Promuovere una cultura di collaborazione e responsabilità condivisa

Considerazioni:

  • Dimensione e composizione del team
  • Modelli e strumenti di comunicazione
  • Processi decisionali
  • Sviluppo delle competenze e condivisione della conoscenza

Riconosci che la struttura organizzativa e l'architettura del sistema sono intrecciate. Evolvi entrambi in tandem per creare un ambiente favorevole allo sviluppo e all'operazione di microservizi di successo.

10. Scalare i microservizi: Gestire la crescita e il fallimento

Su larga scala, anche se acquisti il miglior kit, l'hardware più costoso, non puoi evitare il fatto che le cose possono e falliranno.

Progettare per la scalabilità e la resilienza. Le architetture a microservizi devono essere progettate per gestire sia la crescita della domanda che i fallimenti inevitabili in modo elegante.

Strategie di scalabilità:

  • Scalabilità orizzontale (aggiungere più istanze)
  • Scalabilità verticale (aumentare le risorse per istanza)
  • Caching (in memoria, distribuito)
  • Sharding e replica del database
  • Elaborazione asincrona e architetture basate su eventi

Modelli di resilienza:

  • Circuit breaker per prevenire guasti a cascata
  • Compartimenti stagni per isolamento dei guasti
  • Timeout e ritentativi con backoff esponenziale
  • Degradazione elegante delle funzionalità

Considerazioni sul teorema CAP:

  • Coerenza
  • Disponibilità
  • Tolleranza alle partizioni

Comprendi che i compromessi sono necessari quando si scalano sistemi distribuiti. Prioritizza in base ai tuoi requisiti e vincoli specifici. Implementa pratiche di osservabilità e ingegneria del caos per migliorare continuamente la resilienza del sistema.

Ultimo aggiornamento:

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.

Recensioni

4.22 su 5
Media di 5k+ valutazioni da Goodreads e Amazon.

Costruire Microservizi riceve recensioni contrastanti, con molti che lodano la sua panoramica completa sui concetti di microservizi e sui consigli pratici. I lettori apprezzano l'approccio cauto dell'autore e gli esempi tratti dalla vita reale. I critici notano la mancanza di profondità su alcuni argomenti e il rischio di un'eccessiva promozione dei microservizi. Molti lo trovano utile per i principianti, ma meno per architetti esperti. Il libro affronta vari aspetti dei microservizi, tra cui design, distribuzione, test e scalabilità. Alcuni lettori avrebbero desiderato maggiori dettagli concreti sull'implementazione, mentre altri hanno apprezzato la sua prospettiva ad alto livello sull'architettura software.

Informazioni sull'autore

Sam Newman è un rinomato architetto software e consulente specializzato in microservizi, cloud computing e continuous delivery. Con una vasta esperienza nel settore, ha collaborato con numerose organizzazioni per implementare e migliorare le loro architetture software. Newman è un relatore frequente in conferenze e ha scritto diversi libri sullo sviluppo software. Il suo stile di scrittura è apprezzato per la chiarezza, la praticità e l'engagement, attingendo dalle sue esperienze nel mondo reale. Come leader di pensiero nel campo dei microservizi, il lavoro di Newman ha influenzato in modo significativo l'approccio dell'industria alla costruzione di sistemi distribuiti. La sua competenza si estende oltre gli aspetti puramente tecnici, abbracciando anche considerazioni organizzative e culturali nello sviluppo software.

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 →