Resumo do livro "Criando microsserviços"

Como não entendo nada da arquitetura de microsserviços, decidi ler e descrever o livro de Sam Newman, Criando microsserviços. Na minha opinião, acabou sendo uma boa introdução para as pessoas que estão começando a mergulhar nesse tópico.


Microsserviços


A idéia da arquitetura de microsserviço é baseada em vários conceitos: design orientado ao assunto, entrega contínua, virtualização sob demanda, automação de infraestrutura, pequenas equipes independentes e sistemas escaláveis. O microsserviço é um serviço autônomo pequeno (pode ser totalmente reescrito em duas semanas) que executa apenas uma tarefa. Ao mesmo tempo, os limites dos microsserviços são formados com base nos limites dos negócios.


Vantagens da abordagem:


  • a heterogeneidade tecnológica é possível;
  • degradação elegante é facilmente alcançada;
  • partes individuais do sistema escalam independentemente
  • implantação independente de serviços;
  • compartilhamento simples de responsabilidades entre equipes.

Parece que é possível substituir a arquitetura de microsserviço simplesmente colocando o código nas bibliotecas. Mas isso resolve apenas uma parte dos problemas - heterogeneidade técnica, escala simples e implantação independente são impossíveis. Além disso, o problema da conectividade não controlada permanece.


Em alguns idiomas (por exemplo, Erlang), partes individuais do programa (módulos) podem ser dimensionadas e implantadas independentemente. Mas isso é uma exceção à regra.


Os microsserviços não são uma bala de prata. Eles estão sujeitos a todos os problemas dos sistemas distribuídos. É importante aprender a implantar, testar e monitorar esse sistema de maneira com qualidade. A arquitetura de microsserviço não é adequada para todas as empresas.


Arquiteto de Desenvolvimento


Ao desenvolver um sistema que consiste em muitos serviços, o papel do arquiteto aumenta.


. . , , . — . , , , .


— , , .


:


  • ;
  • ;
  • .


( ) .


— , . , , .


. , . .


( DDD) — .


, , . . , , — .


« », -.


. : , , - . , -.



:


  • - ;
  • ();
  • .

-, , — . , . — . , — .


, «» , , . , - . . , .



, . . «-», .


— . . , ( ). ( ).


, — RPC REST. RPC — , , . REST — , ( REST-).


. - ( ATOM) . , , .



. : , — . -, .



.


— ( 1.5.3 2.0.0) . URI (, /v1/createUser/, /v2/createUser/), , HTTP, .


( 1.5.3 2.0.0), — , . , .



, . .


— . , , .


— API-, . , ( ).


— backend-for-frontend (BFF). (, ) API- .


, API-.



(, CMS CRM). . — , API.



. , , .


. — . , , . : ; .


, . — . . , (, , ).


. . :


  • ;
  • ;
  • , ;
  • ( Netflix).


. , (, ) . (-).


( , , ). . . .


, . , Chef, Puppet Ansible. — , . — , deb-. . , . — .


LXC- — . . Docker — , , Kubernetes.



- , , . , , -. E2e , .


- - — (), (). . — Mountebank.


(e2e) . CI, , . CDC ( ).


- . ( ).


. .


-, .


- : — . . -.


( - ) — . (, , - -). , . , . , .



.


-, , . , .


-, . , (, logstash) (, Kibana) .


( , ) -. , - .


: - .


. , .



. — , , . — , . . , .


, :


  1. . , - - . , — , .
  2. HTTP(S) Basic Auth. -, HTTPS, SSL-. -, ( Basic Auth).
  3. . , — , , .
  4. . , .
  5. - (HMAC). , , . ( JWT) . — , .
  6. API-. , , API-. , , .

. , .


. , IP- . .


. , .



«, , ­, »


, , , .




— , , - . , .


: , , . . , , .


— (graceful degradation).


— . , - .


— . , , , . , , - .


— , . , , ( ), . . «», , .


, .

— . . .



— . . .


— . . - , .


— , (), . . .


. , .



, -, :


  • , , ;
  • - , , , , ;
  • , , , .

, , .


HTTP . cache-control expires ETag . HTTP, , .


. , . , , - . , .


— . ( , , ) . , .


CAP


: , . .



A maneira mais fácil é usar o DNS. Se seus recursos não forem suficientes, você pode usar coisas como Zookeeper, Consul ou Eureka.


Documentação


Os serviços de API precisam ser documentados. É altamente desejável que o código e a documentação estejam conectados e que seja impossível mudar uma coisa. Por exemplo, você pode usar Swagger ou HAL.


Sumário


A arquitetura de microsserviço é baseada em vários princípios:


  • modelagem em torno de conceitos de negócios;
  • cultura de automação;
  • detalhes ocultos da implementação interna;
  • descentralização abrangente;
  • implantação independente;
  • falhas isoladas;
  • observação abrangente.

All Articles