Facebook Pixel
Searching...
Português
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 2015 280 páginas
4.21
4k+ avaliações
Technology
Programming
Computer Science
Ouvir

Principais conclusões

1. Microsserviços: Serviços pequenos e autônomos que trabalham juntos

Microsserviços são serviços pequenos e autônomos que trabalham juntos.

Fundamento dos microsserviços. A arquitetura de microsserviços é construída com base no princípio de desenvolver software como um conjunto de pequenos serviços independentes. Cada serviço é focado em fazer uma coisa bem, executa em seu próprio processo e se comunica por meio de mecanismos leves como APIs HTTP/REST. Essa abordagem permite maior flexibilidade, escalabilidade e manutenção em comparação com arquiteturas monolíticas.

Benefícios e desafios. As principais vantagens dos microsserviços incluem:

  • Melhoria na modularidade
  • Facilidade na escalabilidade de componentes individuais
  • Diversidade tecnológica
  • Melhor isolamento de falhas
  • Ciclos de implantação mais rápidos

No entanto, os microsserviços também introduzem desafios como:

  • Aumento da complexidade operacional
  • Preocupações com sistemas distribuídos (por exemplo, latência de rede, tolerância a falhas)
  • Consistência de dados entre serviços

2. Arquitetura evolutiva: Adaptando-se a requisitos em mudança

O papel do arquiteto é olhar para o quadro geral e entender esse equilíbrio.

Abraçando a mudança. A arquitetura evolutiva enfatiza a necessidade de sistemas se adaptarem a requisitos em mudança ao longo do tempo. Essa abordagem reconhece que é impossível prever todas as necessidades futuras, então foca em criar uma base flexível que possa evoluir.

Princípios chave:

  • Mudança incremental: Fazer pequenas atualizações frequentes em vez de grandes e infrequentes
  • Mudança guiada: Usar princípios e práticas para guiar decisões arquitetônicas
  • Múltiplas arquiteturas: Reconhecer que diferentes partes do sistema podem evoluir em ritmos diferentes

Arquitetos nesse modelo atuam mais como planejadores urbanos, estabelecendo diretrizes e restrições, em vez de ditar cada detalhe. Isso permite que as equipes tomem decisões locais enquanto garantem a coesão geral do sistema.

3. Modelagem de serviços: Definindo limites e contextos

Focamos nossos limites de serviço em limites de negócios, tornando óbvio onde o código reside para uma determinada funcionalidade.

Design orientado ao domínio. Modelar serviços de forma eficaz requer um entendimento profundo do domínio de negócios. O design orientado ao domínio (DDD) fornece conceitos valiosos para definir limites de serviço:

  • Contextos delimitados: Áreas do domínio com limites claros
  • Linguagem ubíqua: Uma linguagem comum compartilhada por desenvolvedores e especialistas do domínio
  • Agregados: Conjuntos de objetos de domínio tratados como uma unidade

Identificando limites de serviço:

  • Alinhar com capacidades de negócios
  • Encapsular dados e comportamento
  • Minimizar dependências entre serviços
  • Considerar a estrutura da equipe e padrões de comunicação

Limites bem definidos levam a serviços mais coesos e acoplamento mais frouxo entre eles, facilitando o desenvolvimento e implantação independentes.

4. Estratégias de integração: Escolhendo a abordagem certa para comunicação

Seja conservador no que você faz, seja liberal no que aceita dos outros.

Importância da integração. A integração eficaz é crucial para que os microsserviços funcionem juntos sem problemas. A escolha da tecnologia de integração impacta significativamente a flexibilidade, desempenho e manutenção do sistema.

Padrões chave de integração:

  • Comunicação síncrona: REST, gRPC
  • Comunicação assíncrona: Filas de mensagens, streaming de eventos
  • Gateways de API: Para roteamento e composição de solicitações
  • Malha de serviços: Para lidar com comunicação entre serviços

Melhores práticas:

  • Use protocolos agnósticos de tecnologia (por exemplo, HTTP)
  • Implemente leitores tolerantes para lidar com mudanças de forma graciosa
  • Projete para falhas com disjuntores e compartimentos
  • Considere arquiteturas orientadas a eventos para acoplamento frouxo

A estratégia de integração certa depende do seu caso de uso específico, requisitos de desempenho e expertise da equipe.

5. Dividindo o monólito: Transição para microsserviços

Pense no nosso monólito como um bloco de mármore. Poderíamos explodir tudo, mas isso raramente termina bem. Faz muito mais sentido apenas ir esculpindo-o incrementalmente.

Abordagem incremental. A transição de uma arquitetura monolítica para microsserviços é melhor feita gradualmente. Isso permite que as equipes aprendam e se adaptem enquanto minimizam riscos.

Passos para dividir um monólito:

  1. Identificar costuras no código existente
  2. Extrair contextos delimitados em módulos separados
  3. Refatorar estruturas de dados e bancos de dados compartilhados
  4. Criar APIs para comunicação entre módulos
  5. Extrair módulos em serviços separados
  6. Implementar novos recursos como microsserviços

Desafios a considerar:

  • Dependências de dados entre serviços
  • Integridade transacional entre limites de serviço
  • Impacto de desempenho da comunicação de rede
  • Complexidade operacional de gerenciar múltiplos serviços

Comece com as extrações mais fáceis e menos arriscadas para ganhar confiança e experiência antes de enfrentar partes mais complexas do sistema.

6. Técnicas de implantação: Garantindo confiabilidade e escalabilidade

Se fazer algo é certo, mas difícil, devemos nos esforçar para tornar as coisas mais fáceis.

Implantação automatizada. Implantação confiável e escalável é crítica para o sucesso dos microsserviços. Práticas de Integração Contínua e Entrega Contínua (CI/CD) são essenciais para gerenciar a complexidade aumentada de implantação.

Técnicas chave de implantação:

  • Infraestrutura como Código (IaC)
  • Containerização (por exemplo, Docker)
  • Plataformas de orquestração (por exemplo, Kubernetes)
  • Implantações azul-verde
  • Lançamentos canário

Considerações de implantação:

  • Descoberta de serviços e gerenciamento de configuração
  • Monitoramento e registro
  • Segurança e controle de acesso
  • Migrações de banco de dados e consistência de dados

Invista em ferramentas e automação para tornar as implantações mais fáceis, rápidas e confiáveis. Isso permite que as equipes implantem frequentemente com confiança, realizando todos os benefícios da arquitetura de microsserviços.

7. Testando microsserviços: Mantendo a qualidade em um sistema distribuído

Quanto mais partes móveis, mais frágeis nossos testes podem ser, e menos determinísticos eles são.

Estratégia abrangente de testes. Testar microsserviços requer uma abordagem em várias camadas para garantir tanto a qualidade individual do serviço quanto o comportamento geral do sistema.

Pirâmide de testes para microsserviços:

  • Testes unitários: Testes rápidos e focados para componentes individuais
  • Testes de integração: Verificar interações entre serviços
  • Testes de contrato: Garantir que os serviços atendam às interfaces acordadas
  • Testes de ponta a ponta: Validar o comportamento de todo o sistema

Desafios de teste:

  • Complexidade aumentada devido à natureza distribuída
  • Gerenciamento de dados de teste entre serviços
  • Simulação de ambientes semelhantes à produção
  • Manipulação de interações assíncronas

Enfatize ciclos de feedback rápidos com testes unitários e de integração, enquanto usa menos testes de ponta a ponta, cuidadosamente escolhidos, para validar caminhos críticos. Considere usar contratos orientados pelo consumidor para gerenciar dependências de serviços de forma eficaz.

8. Monitoramento e segurança: Mantendo microsserviços saudáveis e protegidos

Um bom registro, e especificamente a capacidade de agregar logs de múltiplos sistemas, não é sobre prevenção, mas pode ajudar a detectar e se recuperar de coisas ruins que acontecem.

Abordagem holística. Monitoramento e segurança eficazes são cruciais para manter um ecossistema de microsserviços saudável. Esses aspectos se tornam mais desafiadores e importantes em sistemas distribuídos.

Melhores práticas de monitoramento:

  • Registro centralizado e agregação de logs
  • Rastreamento distribuído (por exemplo, usando IDs de correlação)
  • Alertas em tempo real e painéis de controle
  • Monitoramento de Desempenho de Aplicações (APM)
  • Monitoramento sintético para caminhos críticos

Considerações de segurança:

  • Autenticação e autorização entre serviços
  • Gateways de API para segurança de borda
  • Gerenciamento de segredos
  • Segmentação de rede
  • Auditorias de segurança regulares e testes de penetração

Implemente uma estratégia de defesa em profundidade, protegendo tanto o perímetro quanto os serviços individuais. Use automação para garantir a aplicação consistente de políticas de segurança em todos os serviços.

9. Lei de Conway: Alinhando organização e design de sistema

A lei de Conway destaca os perigos de tentar impor um design de sistema que não corresponde à organização.

Impacto organizacional. A Lei de Conway afirma que o design do sistema espelha as estruturas de comunicação dentro de uma organização. Esse princípio tem implicações significativas para a arquitetura de microsserviços.

Alinhando equipes e serviços:

  • Organize equipes em torno de capacidades de negócios
  • Empodere equipes com propriedade de ponta a ponta dos serviços
  • Minimize dependências entre equipes
  • Fomente uma cultura de colaboração e responsabilidade compartilhada

Considerações:

  • Tamanho e composição da equipe
  • Padrões e ferramentas de comunicação
  • Processos de tomada de decisão
  • Desenvolvimento de habilidades e compartilhamento de conhecimento

Reconheça que a estrutura organizacional e a arquitetura do sistema estão interligadas. Evolua ambos em conjunto para criar um ambiente propício ao desenvolvimento e operação bem-sucedidos de microsserviços.

10. Escalando microsserviços: Lidando com crescimento e falhas

Em escala, mesmo que você compre o melhor equipamento, o hardware mais caro, você não pode evitar o fato de que coisas podem e vão falhar.

Projetando para escala e resiliência. Arquiteturas de microsserviços devem ser projetadas para lidar tanto com o crescimento na demanda quanto com falhas inevitáveis de forma graciosa.

Estratégias de escalabilidade:

  • Escalabilidade horizontal (adicionando mais instâncias)
  • Escalabilidade vertical (aumentando recursos por instância)
  • Cache (em memória, distribuído)
  • Fragmentação e replicação de banco de dados
  • Processamento assíncrono e arquiteturas orientadas a eventos

Padrões de resiliência:

  • Disjuntores para prevenir falhas em cascata
  • Compartimentos para isolamento de falhas
  • Timeouts e tentativas com recuo exponencial
  • Degradação graciosa da funcionalidade

Considerações do teorema CAP:

  • Consistência
  • Disponibilidade
  • Tolerância a partições

Entenda que são necessários trade-offs ao escalar sistemas distribuídos. Priorize com base em seus requisitos e restrições específicos. Implemente práticas de observabilidade e engenharia do caos para melhorar continuamente a resiliência do sistema.

Última atualização:

Avaliações

4.21 de 5
Média de 4k+ avaliações do Goodreads e da Amazon.

Construindo Microsserviços recebe críticas mistas, com muitos elogiando sua visão abrangente dos conceitos de microsserviços e conselhos práticos. Os leitores apreciam a abordagem cautelosa do autor e os exemplos do mundo real. Os críticos apontam a falta de profundidade do livro em alguns tópicos e seu potencial para superestimar os microsserviços. Muitos o consideram valioso para iniciantes, mas menos útil para arquitetos experientes. O livro aborda vários aspectos dos microsserviços, incluindo design, implantação, teste e escalabilidade. Alguns leitores desejaram mais detalhes concretos de implementação, enquanto outros valorizaram sua perspectiva de alto nível sobre arquitetura de software.

Sobre o autor

Sam Newman é um renomado arquiteto de software e consultor especializado em microsserviços, computação em nuvem e entrega contínua. Com vasta experiência na área, ele trabalhou com inúmeras organizações para implementar e melhorar suas arquiteturas de software. Newman é um palestrante frequente em conferências e autor de vários livros sobre desenvolvimento de software. Seu estilo de escrita é elogiado por ser claro, prático e envolvente, baseando-se em suas experiências do mundo real. Como um líder de pensamento no espaço de microsserviços, o trabalho de Newman influenciou significativamente a abordagem da indústria na construção de sistemas distribuídos. Sua expertise vai além dos aspectos técnicos, abrangendo considerações organizacionais e culturais no desenvolvimento de software.

0:00
-0:00
1x
Dan
Scarlett
Adam
Amy
Liv
Emma
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
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 Oct 30,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,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/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance