În eterna provocare de a livra rapid, eficient și fără erori noi și noi aplicații, există o speranță: arhitectura fără server (serverless). E 2024 și suntem siguri că, cel puțin odată în ultimii doi ani, te-ai gândit serios să adopți paradigma serverless. Dacă nu ești încă suficient de convins că acesta e noul mod de lucru cu care ar trebui să te obișnuiești, și încă foarte rapid, Nimród Földvári, IT Consultant, ne ajută să îți oferim câteva argumente.
Să ne aducem aminte de unde am început....
La fel ca toți cei care au prins deja vechime în IT, Nimród și-a început și el cariera dezvoltând sisteme informatice cu o arhitectură monolitică. „Pe măsură ce avansai cu proiectul, codul se acumula tot mai mult în cadrul monolitului, ceea ce făcea dificilă menținerea unei viziuni detaliate asupra arhitecturii, chiar și în condițiile în care acesta era stratificat. De asemenea, depanarea era o provocare, necesitând timp considerabil pentru a identifica un bug minor într-un sistem vast.”, îți amintește Nimród.
Pe lângă complexitatea codului, problemele majore erau scalabilitatea și durata deployment-ului. Era necesar să se scaleze întregul sistem, chiar dacă doar un singur serviciu era suprasolicitat. Deployment-ul era un proces lent; chiar dacă un bug era rezolvat în 10 minute, dura cel puțin altă jumătate de oră pentru ca clientul să vadă remedierea în producție.
Microserviciile – mai eficiente. Dar suficient?
Arhitectura bazată pe microservicii a ajutat mult în dezvoltarea de sisteme. Simplificând, programatorii au avut șansa să vadă acei „bolovani’ monolitici sparți în pietre mai mici, șlefuite și independente. Nu fără bătăi de cap, bineînțeles, așa cum explică și Nimród: „Deși definirea contextului fiecărui microserviciu era o provocare, delimitarea contextului era esențială pentru o arhitectură eficientă. Comunicarea între microservicii reprezenta o altă provocare, necesitând o atenție deosebită la protocoale și gestionarea erorilor.”
E momentul să înlocuiești serverul cu codul
Nirmód a descoperit paradigma serverless în 2022 și n-a mai fost cale de întoarcere. Spre deosebire de microservicii, care utilizează componente software mai complexe, serverless se concentrează pe funcții mici și granulare. Aceste funcții sunt orchestrate pentru a realiza fluxuri de lucru complexe. Invocarea funcțiilor are loc la declanșarea unor evenimente specifice, cum ar fi cereri HTTP, mesaje SNS, modificări în tabele DynamoDB, etc. Acest model de declanșare duce la o abordare de dezvoltare bazată pe evenimente (event-driven development). Fiind independente și granulare, funcțiile serverless se diferențiază semnificativ de microservicii.
„Spre deosebire de microservicii, unde delimitarea contextului fiecărui microserviciu, este esențială, paradigma serverless elimină complet această necesitate. Acest lucru simplifică semnificativ arhitectura și ușurează procesul de implementare.” explică Nimród Földvári
Iar avantajele paradigmei serverless continuă....
Flexibilitatea este un alt avantaj major al funcțiilor serverless. Spre deosebire de microservicii, care pot fi limitate la anumite limbaje de programare, funcțiile serverless pot fi scrise în diverse limbaje. Acest lucru oferă echipelor de dezvoltare o libertate sporită de a alege limbajul cel mai potrivit pentru fiecare funcție în parte, luând în considerare factori precum performanța, scalabilitatea și ușurința de utilizare.
Un alt avantaj cheie al serverless este scalabilitatea automată. Funcțiile se scalează automat (on demand) în funcție de cerere, eliminând nevoia de configurare manuală a resurselor serverului. Viteza de deployment este semnificativ mai mare, realizându-se doar pentru funcția afectată de modificare, reducând timpul necesar și economisind resurse. Dacă fixăm un bug într-o funcție, se va deploya doar acea funcție, având nevoie doar de câteva milisecunde.
Însă marele beneficiu al arhitecturii serverless este reprezentat de modalitatea de plată. Paradigma clasică de programare implică fie achiziționarea de servere fizice, care necesită configurare și setare prealabilă, fie închirierea de servere virtuale contra unei sume fixe lunare. În ambele cazuri, se plătește pentru resurse indiferent de utilizare. Paradigma serverless se bazează pe plata la utilizare (pay-as-you-go). Se facturează doar resursele utilizate de funcții în timpul executării, minimizând astfel costurile. O funcție este taxată doar dacă este invocată, iar costul depinde de frecvența invocării, durata de execuție și resursele consumate.
O concluzie pentru programatori? Te concentrezi pe app, nu pe hardware.
Beneficiul major al arhitecturii serverless este evident: costuri minimale pentru funcțiile rar utilizate. Spre deosebire de un server fizic plătit fix 24/7, o funcție serverless invocată de câteva ori pe zi va genera costuri semnificativ mai mici. Acest model contribuie și la un mediu mai sustenabil, deoarece consumul redus de resurse reduce amprenta de carbon a aplicațiilor serverless. În cele din urmă, un alt avantaj, reprezintă eliminarea completă a operațiunilor de configurare și administrare a serverelor (no-ops). Spre deosebire de serverele proprii sau virtuale, care necesită cunoștințe specifice de operare, arhitectura fără server exonerează complet dezvoltatorii de această responsabilitate. Furnizorul de cloud se ocupă de toate aspectele legate de servere, oferind o platformă gata de utilizare. Programatorii se pot concentra exclusiv pe activitatea de dezvoltare software, având mai mult timp la dispoziție pentru a crea și implementa noi funcționalități. Acest lucru duce la o productivitate semnificativ mai mare comparativ cu un developer tradițional DevOps, care jonglează între activități de dezvoltare (dev) și operațiuni (ops).
Desigur, lumea serverless nu este perfectă. Există provocări și dificultăți care trebuie gestionate. Dar, cel puțin în acest moment, avantajele depășesc cu mult dezavantajele așa că fă-ți curaj și testează.