METABYTE
Inapoi la articole

Folosește protocoale, nu servicii: de ce codul tău are nevoie de o dietă

Un sfat care îți va salva arhitectura de obezitate: înlocuiește serviciile grase cu protocoale slabe.

7 mai 20262 min de citit
Folosește protocoale, nu servicii: de ce codul tău are nevoie de o dietă

Imaginați-vă că mergeți la restaurant, iar chelnerul, în loc de meniu, vă aduce documentația completă a bucătăriei: "Acesta este serviciul de livrare a ingredientelor, acesta este serviciul de tăiat legume..." Cam așa arată codul în care, în loc de protocoale clare de comunicare, ai o grămadă de servicii umflate. Dezvoltatorul Not Not P (da, un astfel de pseudonim) sugerează tratarea acestei arhitecturi obosite.

Ideea este simplă ca o bătaie: conveniți asupra formatului datelor și acțiunilor (protocol), nu trageți după voi un serviciu întreg cu metodele sale. E ca și cum ați trece de la "îl sun pe Vasile, el îi transmite lui Petre" la un simplu "trimite JSON pe portul 8080". Mai puțini intermediari — mai puțină durere de cap la deploy.

Desigur, lumea e plină de arhitecturi hype, unde microserviciile se înmulțesc ca iepurii. Dar autorul ne amintește: dacă serviciul tău știe doar "getUser" și "saveUser", poate că e timpul să nu-l mai numești serviciu? Un protocol cu două operații nu este un serviciu, ci o funcție. Și pentru o funcție nu-ți este rușine, rușine este pentru 47 de coloane în JIRA de dragul ei.

De ce funcționează

  • Flexibilitate: protocolul poate fi reutilizat în diferite servicii, fără a rescrie API-ul de fiecare dată.
  • Testabilitate: e mai ușor să testezi un protocol decât să mochezi un serviciu întreg cu dependențele sale.
  • Evoluție: protocolul trăiește mai mult decât implementarea specifică — schimbați serviciile, păstrând contractul.

Comentariul studioului METABYTE: Și nouă ne plac protocoalele slabe — sunt ca un caiet de sarcini clar, dar fără pagini în plus. Dacă proiectul vostru a început să semene cu un elefant într-un magazin de porțelan, poate e timpul să treceți la o dietă pe bază de protocoale?

URMATORUL PAS

Ti-a placut abordarea?

Aplicam aceleasi principii in proiectele clientilor: AI, automatizari, produse care nu se sting dupa lansare.