Arhitectura microservicii

Arhitectura de microservicii  este o variantă a arhitecturii software orientată spre servicii , care vizează interacțiunea cât mai mici posibil, module slab cuplate și ușor modificate - microservicii , care s-a răspândit la mijlocul anilor 2010 în legătură cu dezvoltarea practicilor de dezvoltare agile și DevOps [1] [2] [3] .

În timp ce în arhitecturile tradiționale orientate spre servicii modulele pot fi sisteme software destul de complexe în sine, iar interacțiunea dintre ele se bazează adesea pe protocoale standardizate grele (cum ar fi SOAP , XML-RPC ), într-o arhitectură de microservicii, sistemele sunt construite din componente care funcționează relativ funcții elementare și interacționarea utilizând protocoale de comunicare de rețea rentabile (în stil REST folosind, de exemplu, JSON , Protocol Buffers , Thrift ). Prin creșterea granularității modulelor, arhitectura își propune să reducă gradul de cuplare și să crească conectivitatea , ceea ce facilitează adăugarea și schimbarea funcțiilor în sistem în orice moment [4] .

Proprietăți

Proprietăți specifice arhitecturii microservicii [1] :

Filosofia microserviciilor copiază de fapt filozofia Unix conform căreia fiecare program ar trebui să „facă un lucru și să-l facă bine” și să interacționeze cu alte programe în moduri simple: microservicii sunt minime și dedicate unei singure funcții. Principalele modificări în acest sens sunt impuse culturii organizaționale, care ar trebui să includă automatizarea dezvoltării și testării, precum și cultura de proiectare, care este necesară pentru a asigura soluționarea erorilor anterioare, excluderea codului moștenit, dacă este posibil. (microserviciile sunt adesea înlocuite în întregime, deoarece funcțiile lor sunt elementare).

Cel mai popular mediu pentru rularea microserviciilor este sistemele de management al aplicațiilor containerizate (cum ar fi Kubernetes și suplimentele sale OpenShift și CloudFoundry , Docker Swarm , Apache Mesos ), caz în care fiecare dintre microservicii este de obicei izolat într-un containere separate sau containere pentru grupuri mici, disponibile prin rețea altor microservicii și consumatori externi și este gestionată de un mediu de orchestrare care oferă toleranță la erori și echilibrare a sarcinii. O practică tipică este includerea unui sistem de integrare continuă în bucla de rulare pentru a automatiza actualizarea și implementarea microserviciilor.

Istorie

Deși termenul „microservicii” există încă de la mijlocul anilor 2000, originile conceptului datează de la Atelierul anual de arhitecți software din Veneția 2011. În 2012, microservicii au fost prezentate la conferința 33d Degree de la Cracovia și au existat și o serie de publicații despre „SOA granular”, subliniind abordarea microserviciilor. În 2012-2014, introducerea microserviciilor în cadrul propriilor dezvoltări software a fost anunțată de specialiști din companii precum Amazon , Netflix , Twitter , din 2015, cărți despre arhitectura microserviciilor au fost publicate în mod regulat la edituri de top, mai multe conferințe regulate fiind susținute integral. dedicate microserviciilor.

Critica

Arhitectura a fost criticată constant încă din momentul formării sale, printre noile probleme care apar în timpul implementării ei se remarcă:

Note

  1. 12 Martin Fowler . microservicii . martinfowler.com (10 martie 2014). Consultat la 29 iunie 2016. Arhivat din original la 14 februarie 2018.
  2. Balalaie, A.; Heydarnoori, A.; Jamshidi, P. Arhitectura de microservicii permite DevOps: Migrarea la o arhitectură nativă în cloud   // Software IEEE : jurnal. - 2016. - 1 mai ( vol. 33 , nr. 3 ). - P. 42-52 . — ISSN 0740-7459 . - doi : 10.1109/MS.2016.64 .
  3. Desfăşurare continuă: Strategii . Consultat la 7 octombrie 2016. Arhivat din original pe 9 octombrie 2016.
  4. Oliver Wolf. Introducere în microservicii . Consultat la 29 iunie 2016. Arhivat din original pe 11 iunie 2016.
  5. 12 Jan Stenberg . Experiențe de eșec cu microservicii (11 august 2014). Preluat la 29 iunie 2016. Arhivat din original la 3 martie 2016.

Literatură