Facebook Pixel
Searching...
Español
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
por Sam Newman 2014 473 páginas
4.22
5k+ calificaciones
Escuchar
Listen to Summary

Puntos clave

1. Microservicios: Servicios pequeños y autónomos que trabajan juntos

Los microservicios son servicios pequeños y autónomos que trabajan juntos.

Fundamento de los microservicios. La arquitectura de microservicios se basa en el principio de desarrollar software como un conjunto de servicios pequeños e independientes. Cada servicio se enfoca en hacer una cosa bien, se ejecuta en su propio proceso y se comunica a través de mecanismos ligeros como las APIs HTTP/REST. Este enfoque permite una mayor flexibilidad, escalabilidad y mantenibilidad en comparación con las arquitecturas monolíticas.

Beneficios y desafíos. Las ventajas clave de los microservicios incluyen:

  • Mejora de la modularidad
  • Escalado más fácil de componentes individuales
  • Diversidad tecnológica
  • Aislamiento mejorado de fallos
  • Ciclos de despliegue más rápidos

Sin embargo, los microservicios también presentan desafíos como:

  • Mayor complejidad operativa
  • Preocupaciones de sistemas distribuidos (por ejemplo, latencia de red, tolerancia a fallos)
  • Consistencia de datos entre servicios

2. Arquitectura evolutiva: Adaptándose a los requisitos cambiantes

El papel del arquitecto es ver el panorama general y entender este equilibrio.

Abrazando el cambio. La arquitectura evolutiva enfatiza la necesidad de que los sistemas se adapten a los requisitos cambiantes con el tiempo. Este enfoque reconoce que es imposible predecir todas las necesidades futuras, por lo que se enfoca en crear una base flexible que pueda evolucionar.

Principios clave:

  • Cambio incremental: Realizar actualizaciones pequeñas y frecuentes en lugar de grandes e infrecuentes
  • Cambio guiado: Usar principios y prácticas para guiar las decisiones arquitectónicas
  • Múltiples arquitecturas: Reconocer que diferentes partes del sistema pueden evolucionar a diferentes ritmos

Los arquitectos en este modelo actúan más como planificadores urbanos, estableciendo directrices y restricciones, en lugar de dictar cada detalle. Esto permite a los equipos tomar decisiones locales mientras se asegura la cohesión general del sistema.

3. Modelado de servicios: Definiendo límites y contextos

Nos enfocamos en los límites de nuestros servicios en los límites del negocio, haciendo obvio dónde reside el código para una funcionalidad dada.

Diseño dirigido por el dominio. Modelar servicios de manera efectiva requiere una comprensión profunda del dominio del negocio. El diseño dirigido por el dominio (DDD) proporciona conceptos valiosos para definir los límites de los servicios:

  • Contextos delimitados: Áreas del dominio con límites claros
  • Lenguaje ubicuo: Un lenguaje común compartido por desarrolladores y expertos del dominio
  • Agregados: Conjuntos de objetos del dominio tratados como una unidad

Identificación de límites de servicio:

  • Alinear con capacidades del negocio
  • Encapsular datos y comportamiento
  • Minimizar dependencias entre servicios
  • Considerar la estructura del equipo y los patrones de comunicación

Los límites bien definidos conducen a servicios más cohesivos y un acoplamiento más suelto entre ellos, facilitando el desarrollo y despliegue independientes.

4. Estrategias de integración: Elegir el enfoque adecuado para la comunicación

Sé conservador en lo que haces, sé liberal en lo que aceptas de los demás.

Importancia de la integración. La integración efectiva es crucial para que los microservicios trabajen juntos sin problemas. La elección de la tecnología de integración impacta significativamente en la flexibilidad, el rendimiento y la mantenibilidad del sistema.

Patrones clave de integración:

  • Comunicación sincrónica: REST, gRPC
  • Comunicación asincrónica: Colas de mensajes, transmisión de eventos
  • Puertas de enlace API: Para enrutamiento y composición de solicitudes
  • Malla de servicios: Para manejar la comunicación entre servicios

Mejores prácticas:

  • Usar protocolos agnósticos a la tecnología (por ejemplo, HTTP)
  • Implementar lectores tolerantes para manejar cambios con gracia
  • Diseñar para fallos con disyuntores y compartimentos
  • Considerar arquitecturas impulsadas por eventos para un acoplamiento suelto

La estrategia de integración adecuada depende de su caso de uso específico, requisitos de rendimiento y experiencia del equipo.

5. Dividiendo el monolito: Transición a microservicios

Piensa en nuestro monolito como un bloque de mármol. Podríamos volarlo por completo, pero eso rara vez termina bien. Tiene mucho más sentido ir desbastándolo de manera incremental.

Enfoque incremental. La transición de una arquitectura monolítica a microservicios se realiza mejor de manera gradual. Esto permite a los equipos aprender y adaptarse mientras minimizan el riesgo.

Pasos para dividir un monolito:

  1. Identificar costuras en la base de código existente
  2. Extraer contextos delimitados en módulos separados
  3. Refactorizar estructuras de datos y bases de datos compartidas
  4. Crear APIs para la comunicación entre módulos
  5. Extraer módulos en servicios separados
  6. Implementar nuevas características como microservicios

Desafíos a considerar:

  • Dependencias de datos entre servicios
  • Integridad transaccional a través de límites de servicio
  • Impacto en el rendimiento de la comunicación en red
  • Complejidad operativa de gestionar múltiples servicios

Comience con las extracciones más fáciles y menos riesgosas para ganar confianza y experiencia antes de abordar partes más complejas del sistema.

6. Técnicas de despliegue: Asegurando fiabilidad y escalabilidad

Si hacer algo es correcto pero difícil, debemos esforzarnos por hacerlo más fácil.

Despliegue automatizado. Un despliegue fiable y escalable es crítico para el éxito de los microservicios. Las prácticas de Integración Continua y Entrega Continua (CI/CD) son esenciales para gestionar la complejidad de despliegue incrementada.

Técnicas clave de despliegue:

  • Infraestructura como Código (IaC)
  • Contenerización (por ejemplo, Docker)
  • Plataformas de orquestación (por ejemplo, Kubernetes)
  • Despliegues azul-verde
  • Lanzamientos canarios

Consideraciones de despliegue:

  • Descubrimiento de servicios y gestión de configuración
  • Monitoreo y registro
  • Seguridad y control de acceso
  • Migraciones de bases de datos y consistencia de datos

Invierta en herramientas y automatización para hacer los despliegues más fáciles, rápidos y fiables. Esto permite a los equipos desplegar con frecuencia y confianza, realizando todos los beneficios de la arquitectura de microservicios.

7. Pruebas de microservicios: Manteniendo la calidad en un sistema distribuido

Cuantas más partes móviles, más frágiles pueden ser nuestras pruebas y menos deterministas son.

Estrategia de pruebas integral. Probar microservicios requiere un enfoque multinivel para asegurar tanto la calidad de los servicios individuales como el comportamiento general del sistema.

Pirámide de pruebas para microservicios:

  • Pruebas unitarias: Pruebas rápidas y enfocadas para componentes individuales
  • Pruebas de integración: Verificar interacciones entre servicios
  • Pruebas de contrato: Asegurar que los servicios cumplan con las interfaces acordadas
  • Pruebas de extremo a extremo: Validar el comportamiento completo del sistema

Desafíos de pruebas:

  • Complejidad incrementada debido a la naturaleza distribuida
  • Gestión de datos de prueba entre servicios
  • Simulación de entornos similares a producción
  • Manejo de interacciones asincrónicas

Enfatice los ciclos de retroalimentación rápida con pruebas unitarias e integradas, mientras usa menos pruebas de extremo a extremo, cuidadosamente elegidas, para validar rutas críticas. Considere usar contratos impulsados por el consumidor para gestionar las dependencias de servicios de manera efectiva.

8. Monitoreo y seguridad: Manteniendo los microservicios saludables y protegidos

Un buen registro, y específicamente la capacidad de agregar registros de múltiples sistemas, no se trata de prevención, pero puede ayudar a detectar y recuperarse de cosas malas que suceden.

Enfoque holístico. El monitoreo y la seguridad efectivos son cruciales para mantener un ecosistema de microservicios saludable. Estos aspectos se vuelven más desafiantes e importantes en sistemas distribuidos.

Mejores prácticas de monitoreo:

  • Registro centralizado y agregación de registros
  • Trazado distribuido (por ejemplo, usando IDs de correlación)
  • Alertas en tiempo real y paneles de control
  • Monitoreo del rendimiento de aplicaciones (APM)
  • Monitoreo sintético para rutas críticas

Consideraciones de seguridad:

  • Autenticación y autorización de servicio a servicio
  • Puertas de enlace API para seguridad perimetral
  • Gestión de secretos
  • Segmentación de red
  • Auditorías de seguridad regulares y pruebas de penetración

Implemente una estrategia de defensa en profundidad, asegurando tanto el perímetro como los servicios individuales. Use la automatización para asegurar la aplicación consistente de políticas de seguridad en todos los servicios.

9. Ley de Conway: Alineando organización y diseño del sistema

La ley de Conway destaca los peligros de intentar imponer un diseño de sistema que no coincide con la organización.

Impacto organizacional. La Ley de Conway establece que el diseño del sistema refleja las estructuras de comunicación dentro de una organización. Este principio tiene implicaciones significativas para la arquitectura de microservicios.

Alineando equipos y servicios:

  • Organizar equipos en torno a capacidades del negocio
  • Empoderar a los equipos con propiedad de extremo a extremo de los servicios
  • Minimizar dependencias entre equipos
  • Fomentar una cultura de colaboración y responsabilidad compartida

Consideraciones:

  • Tamaño y composición del equipo
  • Patrones y herramientas de comunicación
  • Procesos de toma de decisiones
  • Desarrollo de habilidades y compartición de conocimientos

Reconozca que la estructura organizacional y la arquitectura del sistema están entrelazadas. Evolucione ambos en conjunto para crear un entorno propicio para el desarrollo y operación exitosos de microservicios.

10. Escalando microservicios: Manejo del crecimiento y fallos

A gran escala, incluso si compras el mejor equipo, el hardware más caro, no puedes evitar el hecho de que las cosas pueden y fallarán.

Diseñando para la escala y la resiliencia. Las arquitecturas de microservicios deben diseñarse para manejar tanto el crecimiento en la demanda como los fallos inevitables de manera elegante.

Estrategias de escalado:

  • Escalado horizontal (agregar más instancias)
  • Escalado vertical (aumentar recursos por instancia)
  • Caché (en memoria, distribuida)
  • Fragmentación y replicación de bases de datos
  • Procesamiento asincrónico y arquitecturas impulsadas por eventos

Patrones de resiliencia:

  • Disyuntores para prevenir fallos en cascada
  • Compartimentos para aislamiento de fallos
  • Tiempos de espera y reintentos con retroceso exponencial
  • Degradación gradual de la funcionalidad

Consideraciones del teorema CAP:

  • Consistencia
  • Disponibilidad
  • Tolerancia a particiones

Entienda que se requieren compensaciones al escalar sistemas distribuidos. Priorice según sus requisitos y restricciones específicos. Implemente prácticas de observabilidad e ingeniería del caos para mejorar continuamente la resiliencia del sistema.

Última actualización:

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.

Reseñas

4.22 de 5
Promedio de 5k+ calificaciones de Goodreads y Amazon.

Building Microservices recibe críticas mixtas, con muchos elogiando su visión general exhaustiva de los conceptos de microservicios y sus consejos prácticos. Los lectores aprecian el enfoque cauteloso del autor y los ejemplos del mundo real. Los críticos señalan la falta de profundidad del libro en algunos temas y su potencial para sobrevalorar los microservicios. Muchos lo consideran valioso para principiantes, pero menos útil para arquitectos experimentados. El libro abarca varios aspectos de los microservicios, incluyendo diseño, implementación, pruebas y escalado. Algunos lectores desearon más detalles concretos de implementación, mientras que otros valoraron su perspectiva de alto nivel sobre la arquitectura de software.

Sobre el autor

Sam Newman es un reconocido arquitecto de software y consultor especializado en microservicios, computación en la nube y entrega continua. Con una amplia experiencia en el campo, ha trabajado con numerosas organizaciones para implementar y mejorar sus arquitecturas de software. Newman es un orador frecuente en conferencias y ha escrito múltiples libros sobre desarrollo de software. Su estilo de escritura es elogiado por ser claro, práctico y atractivo, basándose en sus experiencias del mundo real. Como líder de pensamiento en el ámbito de los microservicios, el trabajo de Newman ha influido significativamente en el enfoque de la industria para construir sistemas distribuidos. Su experiencia se extiende más allá de los aspectos técnicos, abarcando consideraciones organizacionales y culturales en el desarrollo de 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 →