Costos ocultos de cambiar a microservicios

En un mundo ideal, podría simplemente tomar el código fuente de un monolito, dividir su código entre microservicios y, al conectarlos, obtener el mismo sistema, pero en una nueva arquitectura. Esto nunca sucede en la vida. La vida aporta mucha complejidad a esta imagen perfecta. ¿Cuáles son los desafíos específicos que pueden duplicar o triplicar su presupuesto de migración de microservicios?





Describiré los factores que están retrasando la transición a los microservicios y haciéndola mucho más cara de lo esperado inicialmente. Recibirá una lista de verificación para evaluar estos factores y será más realista al calcular el presupuesto de transición.





Hablé de este tema en ArchDays 2020 . Siga el enlace para encontrar diapositivas y videos (que se publicarán próximamente) del discurso https://blog.byndyu.ru/2020/12/archdays-2020.html .





# 1 Cambiando el enfoque para trabajar con datos maestros

Un monolito suele tener una o dos grandes bases de datos que contienen datos maestros variados. El propio monolito contiene código que gestiona estos datos maestros. Por ejemplo, si la parte "verde" de la base de datos es el directorio de direcciones, entonces el código monolito "verde" controla las direcciones. Resulta que hay muchos datos maestros en la base de datos del monolito y hay muchos sistemas maestros en el código del monolito:





En los microservicios, los datos maestros se administran de manera diferente: hay muchas bases de datos, no se pueden mezclar datos maestros entre microservicios y solo un microservicio puede administrar los datos maestros. Por ejemplo, el microservicio "verde" ahora ha recibido su propia base de datos con direcciones, y solo él puede realizar cambios en estos datos maestros. Otros microservicios pueden leer datos con direcciones, pero solo a través del microservicio "verde":





- - . , :





  1. ,





  2. ,





  3. ,





  4. - ,





  5. "" ,





  6. ,





  7. .





- - .





9 , - .





№2

, - . , , , , .





, . - "" . .





( ), (. .4).





. , , . , , , .





№3

, -, , -. . “”:





IT-, - -. , API .





№4

. . , , :





:





  1. API: , , API .. Apigee.





  2. DevOps- IaC .





  3. .





№5 SLA

SLA . . , , , API. SLA, .





SRE , SLO, SLA = SLO + .





, SLA :





SLA , SLA, , . .





№6

, , CI/CD -, . , fault tolerance : , .





, "" , :





  1. -, , , chaos engineering.





  2. , Circuit Breaker Tolerant Reader.





  3. : service discovery, health-check,...





№7

-, , ""?





: - (build-and-run team) . . . :





  1. . , Service per team.





  2. InnerSource, . InnerSource .





  3. : , , . , , . , , .





, . .





, , . :





, . , , . .





№8

, . , , . . , .





, . , SOAP, protobuf, WCF, .NET Core, WCF . , . , .





, .





№9

, . .





. , , "" - . , . - , . .





№10

, . . , , , .





, :





  1. , .





  2. .





.





, , . , :





  1. -





  2. -





  3. IT-









  4. SLA





  5. fault tolerance





















, .





, , ? , , AgileDays 2017 microservices.io. , , .






:





  1. The Death of Microservice Madness in 2018, Dave Kerr





  2. The hidden costs of microservices, Wayne Geils, Mike Hostetler





  3. Microservice Trade-Offs, Martin Fowler





  4. Pattern: Microservice Architecture, Chris Richardson





  5. The Hidden Costs of Microservices, Justin Leitgeb





  6. Desafíos y beneficios del estilo arquitectónico de microservicios Parte 1 + Parte 2 , André Fachat












All Articles