Em um mundo ideal, você poderia simplesmente pegar o código-fonte de um monólito, dividir seu código entre microsserviços e, conectando-os, obter o mesmo sistema, mas em uma nova arquitetura. Isso nunca acontece na vida. A vida traz muita complexidade a esta imagem perfeita. Quais são os desafios específicos que podem dobrar ou triplicar seu orçamento de migração de microsserviços?
Descreverei os fatores que estão atrasando a transição para microsserviços e tornando-a muito mais cara do que inicialmente esperado. Você receberá uma lista de verificação para avaliar esses fatores e será mais realista sobre seu orçamento de transição.
Falei com este tópico no ArchDays 2020 . Siga o link para encontrar slides e vídeos (a serem publicados em breve) da palestra https://blog.byndyu.ru/2020/12/archdays-2020.html .
Nº 1 Mudando a abordagem para trabalhar com dados mestre
Um monólito geralmente tem um ou dois grandes bancos de dados contendo dados mestre variegados. O próprio monólito contém o código que gerencia esses dados mestre. Por exemplo, se a parte "verde" do banco de dados for um diretório de endereços, o código monolítico "verde" controlará os endereços. Acontece que existem muitos dados mestres no banco de dados monolith e no código monolith existem muitos sistemas mestres:
Em microsserviços, os dados mestres são gerenciados de maneira diferente: há muitos bancos de dados, não é possível combinar dados mestres entre microsserviços e apenas um microsserviço pode gerenciar os dados mestres. Por exemplo, o microsserviço "verde" agora recebeu seu próprio banco de dados com endereços e só ele pode fazer alterações nesses dados mestre. Outros microsserviços podem ler dados com endereços, mas apenas por meio do microsserviço "verde":
- - . , :
,
,
,
- ,
"" ,
,
.
- - .
9 , - .
№2
, - . , , , , .
, . - "" . .
( ), (. .4).
. , , . , , , .
№3
, -, , -. . “”:
IT-, - -. , API .
№4
:
№5 SLA
SLA . . , , , API. SLA, .
SRE , SLO, SLA = SLO + .
, SLA :
SLA , SLA, , . .
№6
, , CI/CD -, . , fault tolerance : , .
, "" , :
-, , , chaos engineering.
, Circuit Breaker Tolerant Reader.
: service discovery, health-check,...
№7
-, , ""?
: - (build-and-run team) . . . :
. , Service per team.
InnerSource, . InnerSource .
: , , . , , . , , .
, . .
, , . :
, . , , . .
№8
, . , , . . , .
, . , SOAP, protobuf, WCF, .NET Core, WCF . , . , .
, .
№9
, . .
. , , "" - . , . - , . .
№10
, . . , , , .
, :
, .
.
.
, , . , :
-
-
IT-
SLA
fault tolerance
, .
, , ? , , AgileDays 2017 microservices.io. , , .
:
The Death of Microservice Madness in 2018, Dave Kerr
The hidden costs of microservices, Wayne Geils, Mike Hostetler
Microservice Trade-Offs, Martin Fowler
Pattern: Microservice Architecture, Chris Richardson
The Hidden Costs of Microservices, Justin Leitgeb
Desafios e benefícios do estilo arquitetônico de microsserviço Parte 1 + Parte 2 , André Fachat