Zusammenfassung des Buches "Erstellen von Microservices"

Ich verstehe nichts ĂŒber Microservice-Architektur und habe mich daher entschlossen, Sam Newmans Buch "Creating Microservices" zu lesen und zu skizzieren. Meiner Meinung nach war es eine gute EinfĂŒhrung fĂŒr Leute, die anfangen, sich mit diesem Thema zu beschĂ€ftigen.


Microservices


Die Idee der Microservice-Architektur basiert auf mehreren Konzepten: themenorientiertes Design, kontinuierliche Bereitstellung, On-Demand-Virtualisierung, Infrastrukturautomatisierung, kleine eigenstĂ€ndige Teams und skalierbare Systeme. Microservice ist ein kleiner (in zwei Wochen vollstĂ€ndig umgeschriebener) autonomer Dienst, der nur eine Aufgabe ausfĂŒhrt. Gleichzeitig werden die Grenzen von Microservices auf der Grundlage von GeschĂ€ftsgrenzen gebildet.


Vorteile des Ansatzes:


  • technologische HeterogenitĂ€t ist möglich;
  • eleganter Abbau ist leicht zu erreichen;
  • einzelne Teile des Systems skalieren unabhĂ€ngig voneinander;
  • unabhĂ€ngige Bereitstellung von Diensten;
  • einfache Aufteilung der Verantwortlichkeiten zwischen den Teams.

Es scheint möglich zu sein, die Microservice-Architektur zu ersetzen, indem der Code einfach in Bibliotheken abgelegt wird. Dies löst jedoch nur einen Teil der Probleme - technische HeterogenitĂ€t, einfache Skalierung und unabhĂ€ngige Bereitstellung sind nicht möglich. Außerdem bleibt das Problem der unkontrollierten KonnektivitĂ€t bestehen.


In einigen Sprachen (z. B. Erlang) können einzelne Teile des Programms (Module) unabhÀngig voneinander skaliert und bereitgestellt werden. Dies ist jedoch eher eine Ausnahme von der Regel.


Microservices sind keine Wunderwaffe. Sie unterliegen allen Problemen verteilter Systeme. Es ist wichtig zu lernen, wie ein solches System qualitativ bereitgestellt, getestet und ĂŒberwacht wird. Die Microservice-Architektur ist nicht fĂŒr alle Unternehmen geeignet.


Entwicklungsarchitekt


Bei der Entwicklung eines Systems, das aus vielen Diensten besteht, nimmt die Rolle des Architekten zu.


. . , , . — . , , , .


— , , .


:


  • ;
  • ;
  • .


( ) .


— , . , , .


. , . .


( 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


: , . .



Am einfachsten ist es, DNS zu verwenden. Wenn seine FÀhigkeiten nicht ausreichen, können Sie Dinge wie Zookeeper, Consul oder Eureka verwenden.


Dokumentation


API-Services mĂŒssen dokumentiert werden. Es ist sehr wĂŒnschenswert, dass der Code und die Dokumentation miteinander verbunden sind und dass es unmöglich ist, eine Sache zu Ă€ndern. Zum Beispiel können Sie Swagger oder HAL nehmen.


Zusammenfassung


Die Microservice-Architektur basiert auf mehreren Prinzipien:


  • Modellierung um GeschĂ€ftskonzepte;
  • Kultur der Automatisierung;
  • versteckte Details der internen Implementierung;
  • umfassende Dezentralisierung;
  • unabhĂ€ngige Bereitstellung;
  • isolierte AusfĂ€lle;
  • umfassende Beobachtung.

All Articles