ABONAMENTE VIDEO REDACȚIA
RO
EN
Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 145
Abonament PDF

Monoliți vs. Microservicii: întoarcerea la arhitectura monolitică

Cristian Măgerușan
Senior Software Engineer @ Cognizant



PROGRAMARE

Când arhitectura bazată pe microservicii a devenit populară, vechile proiecte au început să fie treptat migrate sau rescrise ca microservicii. De asemenea, majoritatea noilor proiecte au fost construite în jurul microserviciilor. Dat fiind că în ultimul timp, se poate observa o reîntoarcere la arhitectura monolitică, dorim să explicăm cauza, efectele, avantajele și dezavantajele acestei tranziții.

Mai întâi, trebuie definite arhitectura monolitică și cea bazată pe microservicii:

Problema

Putem observa un tipar când vorbim de adopția de noi tehnologii și tehnici unde se învață un nou instrument, să zicem un ciocan, astfel încât subit toate problemele încep să semene cu niște cuie. Când microserviciile au început să se dezvolte acum un deceniu, pentru mulți, microserviciile au reprezentat soluția la toate problemele. Așa cum s-a putut observa, în unele cazuri, microserviciile doar au creat multiple alte probleme.

Arhitecturi monolitice

Avantaje:

Dezavantaje:

Arhitectura cu microservicii

Avantaje:

Dezavantaje:

Întoarcerea la arhitectura monolitică

O schimbare în tendințe

Uneori, adevărul este undeva la mijloc și nu putem declara cert că o abordare este superioară alteia, deoarece ambele au avantaje și dezavantaje. Trebuie să evaluăm fiecare proiect de la caz la caz și să decidem care arhitectură este mai potrivită.

În ultimii ani, s-a putut observa o modificare în tendințe, astfel încât unele organizații au reconsiderat arhitecturile monolitice sau abordările hibride.

Motive pentru schimbare:

  1. Complexitate operațională: Microserviciile introduc un volum operațional semnificativ, ceea ce necesită orchestrare complexă, monitorizare și depanare (debugging).

  2. Costuri: Mentenanța mai multor servicii aduce costuri suplimentare în ceea ce privește infrastructura și resursele umane.

  3. Productivitatea programatorilor: Programatorii pot avea productivitate mai mare în cadrul unei baze de cod unificate.

  4. Performanța: Aplicațiile monolitice pot performa mai bine în anumite scenarii datorită comunicării reduse între servicii.

Abordarea hibridă: monoliți modulari

Arhitectura modulară monolitică păstrează simplitatea monoliților, dar încorporează modularitatea necesară pentru gestionarea complexității.

Un monolit modular include module slab cuplate. Modulele reprezintă seturi de funcționalități coezive. Modulele sunt, de asemenea, independente unele față de altele.

Beneficii

Monoliții modulari au multe beneficii:

Monoliți modulari vs. microservicii

Cea mai mare diferență între monoliții modulari și microservicii o reprezintă strategia de instalare. Microserviciile elevează limitele logice din cadrul unui monolit modular la rangul de limite fizice.

Microserviciile oferă o strategie clară pentru modularitate și pentru descompunerea contextelor auto-limitate. Se poate obține acest obiectiv și fără a construi un sistem distribuit. Problema este că programatorii folosesc microserviciile pentru a implementa limita până la care funcționează o bucată de cod.

În schimb, ați putea construi un monolit modular pentru a obține aceleași beneficii. Monoliții modulari oferă coeziune înaltă, cuplare slabă, încapsulare de date, accent pe funcționalitățile de business și nu numai.

Microserviciile oferă toate aceste beneficii, dar, suplimentar, oferă instalări independente, scalabilitate independentă și posibilitatea de a folosi tehnologii diferite per serviciu.

"Alegeți microserviciile pentru beneficii, nu pentru că baza de cod monolitică este un dezastru." - Simon Brown

Comunicarea între monoliți modulari

Comunicare sincronă cu Method Calls

Primul și cel mai ușor tipar de comunicare este cel realizat prin method calls (apelare de metode) între module. Method calls sunt sincrone și foarte rapide, deoarece acestea au loc in memory (în memorie).

Modulul A apelează o metodă declarată în API-ul public al Modulului B și așteaptă să primească un rezultat.

Fiecare modul expune un API public ce poate funcționa precum o interfață.

Modulele depind de interfață la compilare. La runtime, dependency injection (injecția de depedințe) oferă baza respectivei implementări.

Beneficiile acestei abordări sunt:

Dezavantajul acestei abordări îl reprezintă cuplarea puternică: Comunicarea sincronă presupune că modulele vor fi puternic cuplate. Dacă unul din aceste module este indisponibil, modulele dependente vor fi afectate. Puteți introduce un mecanism de retry (reîncercare), dar nu veți ajunge departe.

Comunicare asincronă cu coadă de mesaje (message queues)

Al doilea tipar de comunicare este mesageria asincronă între module.

Modulul A trimite un mesaj unui broker de mesaje în manieră fire-and-forget. Modulul B se abonează la mesajele relevante și le gestionează corespunzător.

Modulele nu trebuie să fie conștiente unele de altele, dar trebuie să cunoască contractele mesajelor. În scenariul nostru, contractul este API-ul public al unui modul.

Beneficiile acestei abordări sunt:

Comunicarea asincronă oferă cuplare slabă, deoarece modulele comunică folosind mesaje. Modulul B nu trebuie să fie disponibil pentru ca Modulul A să trimită un mesaj.

Dezavantajul evident al acestei abordări este complexitatea crescută.

Concluzii

Alegerea corectă a arhitecturii pentru organizația voastră ține de echilibru. Puteți implementa principiul separării obiectivelor de lucru și să scalați API-uri diferite, folosind o arhitectură monolitică modulară, bucurându-vă în același timp de unele din beneficiile microserviciilor.

Pentru a decide dacă este benefic să treceți la o arhitectură monolitică ori să reparați problemele în cadrul unui monolit distribuit, luați în calcul compromisurile și timpul avut la dispoziție. Analizați efortul necesar și productivitatea deficitară ce derivă din utilizarea microserviciilor în timp, iar apoi comparați aceste aspecte cu costurile migrării la un monolit. De asemenea, luați în calcul factori precum mărimea echipei, expertiza disponibilă și structura organizațională.

Înainte de a tranziționa spre o arhitectură monolitică, să aveți în vedere următoarele aspecte:

Evaluați dacă un monolit se potrivește cel mai bine cu mărimea echipei voastre, cu structura acesteia, cu competențele sale și cu capacitatea operațională.

Asigurați-vă că migrarea se aliniază cu obiectivele de business și că aceasta aduce plus-valoare.

Nu subestimați timpul și resursele necesare migrării; poate dura mai mult decât ați anticipat.

Dacă doriți să dezvoltați un sistem nou, în special aplicații web, trebuie să începeți de la monoliți.

LANSAREA NUMĂRULUI 149

Marți, 26 Octombrie, ora 18:00

sediul Cognizant

Facebook Meetup StreamEvent YouTube

NUMĂRUL 147 - Automotive

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects