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.
. , , .
. â . , , . : ; .
, . â . . , (, , ).
. . :
. , (, ) . (-).
( , , ). . . .
, . , Chef, Puppet Ansible. â , . â , deb-. . , . â .
LXC- â . . Docker â , , Kubernetes.
- , , . , , -. E2e , .
- - â (), (). . â Mountebank.
(e2e) . CI, , . CDC ( ).
- . ( ).
. .
-, .
- : â . . -.
( - ) â . (, , - -). , . , . , .
.
-, , . , .
-, . , (, logstash) (, Kibana) .
( , ) -. , - .
: - .
. , .
. â , , . â , . . , .
, :
- . , - - . , â , .
- HTTP(S) Basic Auth. -, HTTPS, SSL-. -, ( Basic Auth).
- . , â , , .
- . , .
- - (HMAC). , , . ( JWT) . â , .
- 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.