Résumé du livre "Création de microservices"

Je ne comprends rien Ă  l'architecture des microservices, j'ai donc dĂ©cidĂ© de lire et de dĂ©crire le livre de Sam Newman, CrĂ©ation de microservices. À mon avis, cela s'est avĂ©rĂ© ĂȘtre une bonne introduction pour les personnes qui commencent Ă  se plonger dans ce sujet.


Microservices


L'idĂ©e de l'architecture de microservices repose sur plusieurs concepts: conception orientĂ©e sujet, livraison continue, virtualisation Ă  la demande, automatisation des infrastructures, petites Ă©quipes autonomes et systĂšmes Ă©volutifs. Le microservice est un petit service autonome (qui peut ĂȘtre complĂštement rĂ©Ă©crit en deux semaines) qui ne rĂ©alise qu'une seule tĂąche. Dans le mĂȘme temps, les limites des microservices sont formĂ©es sur la base des limites commerciales.


Avantages de l'approche:


  • l'hĂ©tĂ©rogĂ©nĂ©itĂ© technologique est possible;
  • une dĂ©gradation Ă©lĂ©gante est facilement obtenue;
  • les parties individuelles du systĂšme Ă©voluent indĂ©pendamment;
  • dĂ©ploiement indĂ©pendant des services;
  • partage simple des responsabilitĂ©s entre les Ă©quipes.

Il semblerait qu'il soit possible de remplacer l'architecture de microservice en plaçant simplement le code dans des bibliothÚques. Mais cela ne résout qu'une partie des problÚmes - hétérogénéité technique, mise à l'échelle simple, déploiement indépendant sont impossibles. De plus, le problÚme de la connectivité non contrÎlée demeure.


Dans certaines langues (par exemple, Erlang), des parties individuelles du programme (modules) peuvent ĂȘtre mises Ă  l'Ă©chelle et dĂ©ployĂ©es indĂ©pendamment. Mais c'est plutĂŽt une exception Ă  la rĂšgle.


Les microservices ne sont pas une solution miracle. Ils sont soumis à tous les problÚmes des systÚmes distribués. Il est important d'apprendre à déployer, tester et surveiller un tel systÚme de maniÚre qualitative. L'architecture de microservices n'est pas adaptée à toutes les entreprises.


Architecte de développement


Lors du développement d'un systÚme composé de nombreux services, le rÎle de l'architecte augmente.


. . , , . — . , , , .


— , , .


:


  • ;
  • ;
  • .


( ) .


— , . , , .


. , . .


( 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


: , . .



Le moyen le plus simple consiste à utiliser DNS. Si ses capacités ne suffisent pas, vous pouvez utiliser des choses comme Zookeeper, Consul ou Eureka.


Documentation


Les services API doivent ĂȘtre documentĂ©s. Il est hautement souhaitable que le code et la documentation soient connectĂ©s et qu'il soit impossible de changer une chose. Par exemple, vous pouvez prendre Swagger ou HAL.


Sommaire


L'architecture des microservices est basée sur plusieurs principes:


  • modĂ©lisation autour de concepts commerciaux;
  • culture de l'automatisation;
  • dĂ©tails cachĂ©s de la mise en Ɠuvre interne;
  • dĂ©centralisation complĂšte;
  • dĂ©ploiement indĂ©pendant;
  • Ă©checs isolĂ©s;
  • observation complĂšte.

All Articles