{"id":55881,"date":"2020-01-31T00:00:00","date_gmt":"2020-01-30T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij"},"modified":"2020-02-18T14:04:02","modified_gmt":"2020-02-18T11:04:02","slug":"sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij","title":{"rendered":"Sfaturi \u0219i surse de informa\u021bie pentru crearea aplica\u021biilor f\u0103r\u0103 server","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Sfaturi \u0219i surse de informa\u021bie pentru crearea aplica\u021biilor f\u0103r\u0103 server\" src=\"\/wp-content\/uploads\/2020\/01\/a29ca83a52a809d148aebbd6821d4ef9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDe\u0219i tehnologiile serverless au c\u00e2\u0219tigat rapid popularitate \u00een ultimii ani, exist\u0103 \u00eenc\u0103 multe ne\u00een\u021belegeri \u0219i temeri asociate cu acestea. Dependen\u021ba de furnizor, instrumentele, gestionarea costurilor, pornirea la rece, monitorizarea \u0219i ciclul de via\u021b\u0103 al dezvolt\u0103rii - toate aceste subiecte sunt discutate activ atunci c\u00e2nd se vorbe\u0219te despre tehnologiile serverless. \u00cen acest articol, vom explora c\u00e2teva dintre temele men\u021bionate \u0219i vom \u00eemp\u0103rt\u0103\u0219i sfaturi \u0219i linkuri c\u0103tre surse de informa\u021bii utile, care vor ajuta \u00eencep\u0103torii s\u0103 creeze aplica\u021bii serverless puternice, flexible \u0219i economice.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Ne\u00een\u021belegeri legate de tehnologiile serverless<\/h2>\n<p>\nMul\u021bi consider\u0103 c\u0103 serverlessness \u0219i procesarea datelor non-server (<noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/serverless.html#unpacking-faas\">Functions as a Service<\/a><\/noindex>, FaaS) sunt aproape acela\u0219i lucru. Asta \u00eenseamn\u0103 c\u0103 diferen\u021ba nu este mare \u0219i ar merita s\u0103 implement\u0103m inova\u021bia. De\u0219i AWS Lambda a fost una dintre \u00abstelele\u00bb ascensiunii tehnologiilor serverless \u0219i unul dintre cele mai populare elemente ale arhitecturii serverless, aceast\u0103 arhitectur\u0103 reprezint\u0103 mai mult dec\u00e2t FaaS.<\/p>\n<p>Principiul de baz\u0103 al tehnologiilor serverless este c\u0103 nu trebuie s\u0103 v\u0103 face\u021bi griji cu privire la gestionarea \u0219i scalarea infrastructurii, pl\u0103ti\u021bi doar pentru ceea ce folosi\u021bi. Aceste criterii se potrivesc cu numeroase servicii - AWS DynamoDB, S3, SNS sau SQS, Graphcool, Auth0, Now, Netlify, Firebase \u0219i multe altele. \u00cen general, serverlessness implic\u0103 utilizarea tuturor posibilit\u0103\u021bilor de calcul \u00een cloud f\u0103r\u0103 a fi necesar\u0103 gestionarea infrastructurii \u0219i optimizarea acesteia pentru scalare. De asemenea, aceasta \u00eenseamn\u0103 c\u0103 securitatea la nivel de infrastructur\u0103 nu mai este problema dumneavoastr\u0103, ceea ce reprezint\u0103 un avantaj enorm, av\u00e2nd \u00een vedere dificultatea \u0219i complexitatea respect\u0103rii standardelor de securitate. \u00cen sf\u00e2r\u0219it, nu trebuie s\u0103 cump\u0103ra\u021bi infrastructura pus\u0103 la dispozi\u021bia dumneavoastr\u0103.<\/p>\n<p>Serverlessness poate fi considerat\u0103 \u00abo stare de spirit\u00bb: o anumit\u0103 mentalitate \u00een proiectarea solu\u021biilor. Evita\u021bi abord\u0103rile care necesit\u0103 \u00eentre\u021binerea oric\u0103rei infrastrucuri. Cu o abordare serverless, ne petrecem timpul rezolv\u00e2nd probleme care influen\u021beaz\u0103 direct proiectul \u0219i aduc beneficii utilizatorilor no\u0219tri: cre\u0103m o logic\u0103 de afaceri robust\u0103, dezvoltam interfe\u021be utilizator \u0219i scriem API-uri adaptative \u0219i fiabile.<\/p>\n<p>De exemplu, dac\u0103 putem evita gestionarea \u0219i \u00eentre\u021binerea platformei de c\u0103utare pe text liber, a\u0219a vom proceda. Aceast\u0103 abordare a construc\u021biei aplica\u021biilor poate accelera semnificativ lansarea produsului pe pia\u021b\u0103, deoarece nu mai trebuie s\u0103 v\u0103 face\u021bi griji cu privire la gestionarea unei infrastructuri complexe. Elimina\u021bi responsabilit\u0103\u021bile \u0219i costurile de gestionare a infrastructurii \u0219i concentra\u021bi-v\u0103 pe crearea aplica\u021biilor \u0219i serviciilor de care au nevoie clien\u021bii dumneavoastr\u0103. Patrick Debois a numit aceast\u0103 abordare <noindex><a rel=\"nofollow\" href=\"https:\/\/www.slideshare.net\/jedi4ever\/from-serverless-to-service-full-how-the-role-of-devops-is-evolving?ref=https:\/\/twitter.com\/i\/cards\/tfw\/v1\/736144044112384000?cardname=player&amp;earned=true&amp;lang=en&amp;card_height=130\">\u2018servicefull\u2019<\/a><\/noindex>, acest termen fiind acceptat \u00een comunitatea serverless. Func\u021biile trebuie considerate ca un liant pentru servicii sub form\u0103 de module implementabile (\u00een locul implement\u0103rii unei biblioteci \u00eentregi sau a unei aplica\u021bii web). Aceasta asigur\u0103 o granularitate incredibil\u0103 \u00een gestionarea implement\u0103rii \u0219i modific\u0103rilor din aplica\u021bie. Dac\u0103 nu pute\u021bi implementa func\u021biile \u00een acest mod, ar putea \u00eensemna c\u0103 func\u021biile au prea multe sarcini \u0219i ar trebui refactorizate.<\/p>\n<p>Unii se simt incomoda\u021bi de dependen\u021ba de furnizor \u00een dezvoltarea aplica\u021biilor cloud. Acelea\u0219i lucruri se aplic\u0103 \u0219i tehnologiilor serverless, iar pu\u021bin probabil ca aceasta s\u0103 fie rezultatul unei confuzii. Din experien\u021ba noastr\u0103, crearea de aplica\u021bii serverless pe AWS, \u00een combina\u021bie cu capacitatea AWS Lambda de a unifica alte servicii AWS - toate acestea contribuie, \u00een oarecare m\u0103sur\u0103, la beneficiile arhitecturilor serverless. Este un exemplu bun de sinergie, c\u00e2nd rezultatul combin\u0103rii este mai mare dec\u00e2t suma p\u0103r\u021bilor. \u00cencerc\u00e2nd s\u0103 evita\u021bi dependen\u021ba de furnizor, s-ar putea s\u0103 v\u0103 confrunta\u021bi cu probleme \u0219i mai mari. C\u00e2nd lucra\u021bi cu containere, este mai u\u0219or s\u0103 gestiona\u021bi propriul nivel de abstractizare \u00eentre furnizorii cloud. Dar c\u00e2nd vine vorba despre solu\u021bii serverless, eforturile nu se vor justifica, mai ales dac\u0103 lua\u021bi \u00een considerare eficien\u021ba economic\u0103 de la \u00eenceput. Asigura\u021bi-v\u0103 c\u0103 \u00een\u021belege\u021bi cum ofer\u0103 furnizorii servicii. Unele servicii specializate depind de puncte de integrare cu al\u021bi furnizori \u0219i pot oferi din cutie posibilitatea de conectare \u00een stil plug-and-play. Este mai simplu s\u0103 invoca\u021bi Lambda dintr-un punct final API Gateway dec\u00e2t s\u0103 intermedia\u021bi o cerere \u00eentr-un container sau un exemplu EC2. Graphcool ofer\u0103 o configurare u\u0219oar\u0103 cu Auth0, ceea ce este mai simplu dec\u00e2t utilizarea unor instrumente externe de autentificare.<\/p>\n<p>Alegerea furnizorului potrivit pentru aplica\u021bia dumneavoastr\u0103 serverless este o decizie la nivel de arhitectur\u0103. C\u00e2nd crea\u021bi o aplica\u021bie, nu v\u0103 a\u0219tepta\u021bi s\u0103 reveni\u021bi vreodat\u0103 la gestionarea serverelor. Alegerea unui furnizor cloud nu difer\u0103 de alegerea utiliz\u0103rii containerelor sau a unei baze de date, sau chiar a unui limbaj de programare. <\/p>\n<p>Reflecta\u021bi la:<\/p>\n<ul>\n<li>Ce servicii ave\u021bi nevoie \u0219i de ce. \n<\/li>\n<li>Ce servicii ofer\u0103 furnizorii cloud \u0219i cum le pute\u021bi integra cu solu\u021bia dvs. FaaS aleas\u0103. \n<\/li>\n<li>Ce limbaje de programare sunt suportate (cu tipizare dinamic\u0103 sau static\u0103, compilate sau interpretate, ce benchmark-uri exist\u0103, ce performan\u021be la pornire rece, care este ecosistemul open source etc.).\n<\/li>\n<li>Care sunt cerin\u021bele dvs. de securitate (SLA, 2FA, OAuth, HTTPS, SSL etc.).\n<\/li>\n<li>Cum s\u0103 gestiona\u021bi CI\/CD-ul \u0219i ciclurile de dezvoltare software.\n<\/li>\n<li>Ce solu\u021bii din clasa infrastructure-as-code pute\u021bi utiliza.\n<\/li>\n<\/ul>\n<p>\nDac\u0103 extinde\u021bi o aplica\u021bie existent\u0103 \u0219i ad\u0103uga\u021bi func\u021bii serverless \u00een mod incremental, acest lucru poate restric\u021biona oarecum func\u021bionalit\u0103\u021bile disponibile. Cu toate acestea, aproape toate tehnologiile serverless ofer\u0103 anumite API-uri (prin REST sau cozi de mesaje) care permit crearea de extensii independent de nucleul aplica\u021biei \u0219i cu integrare simpl\u0103. C\u0103uta\u021bi servicii cu API-uri clare, documenta\u021bie bun\u0103 \u0219i o comunitate puternic\u0103, \u0219i nu ve\u021bi da gre\u0219. Simplitatea integr\u0103rii poate fi adesea o metric\u0103 cheie \u0219i, probabil, aceasta este una dintre principalele motive pentru succesul AWS de c\u00e2nd a fost lansat\u0103 Lambda \u00een 2015.<\/p>\n<h2>C\u00e2nd este util serverless<\/h2>\n<p>\nTehnologiile serverless pot fi aplicate practic oriunde. Cu toate acestea, avantajele lor nu se limiteaz\u0103 doar la metodele de aplicare. Pragul de intrare pentru calculul \u00een cloud este ast\u0103zi at\u00e2t de sc\u0103zut datorit\u0103 tehnologiilor serverless. Dac\u0103 dezvoltatorii au o idee, dar nu \u0219tiu cum s\u0103 gestioneze infrastructura cloud \u0219i s\u0103 optimizeze costurile, nu trebuie s\u0103 caute un inginer pentru asta. Dac\u0103 o start-up vrea s\u0103 creeze o platform\u0103, dar se teme c\u0103 cheltuielile ar putea sc\u0103pa de sub control, poate apela cu u\u0219urin\u021b\u0103 la solu\u021bii serverless.<\/p>\n<p>Datorit\u0103 economiei de costuri \u0219i a u\u0219urin\u021bei \u00een scalare, solu\u021biile serverless sunt la fel de aplicabile at\u00e2t pentru sistemele interne, c\u00e2t \u0219i pentru cele externe, p\u00e2n\u0103 la aplica\u021bii web cu milioane de utilizatori. Facturile sunt m\u0103surate mai degrab\u0103 \u00een cen\u021bi dec\u00e2t \u00een euro. \u00cenchirierea celui mai simplu exemplu de AWS EC2 (t1.micro) pe parcursul unei luni va costa \u20ac15, chiar dac\u0103 nu face\u021bi nimic cu el (cine nu a uitat vreodat\u0103 s\u0103-l opreasc\u0103?). Spre compara\u021bie, pentru a atinge un nivel similar de cheltuieli \u00een aceea\u0219i perioad\u0103, ar trebui s\u0103 rula\u021bi Lambda cu 512 MB timp de 1 secund\u0103 de aproximativ 3 milioane de ori. \u0218i dac\u0103 nu folosi\u021bi aceast\u0103 func\u021bie, atunci nu pl\u0103ti\u021bi nimic.<\/p>\n<p>Deoarece tehnologia serverless depinde \u00een principal de evenimente, este destul de simplu s\u0103 ad\u0103uga\u021bi o infrastructur\u0103 serverless \u00een sisteme mai vechi. De exemplu, folosind AWS S3, Lambda \u0219i Kinesis, pute\u021bi crea un serviciu de analiz\u0103 pentru un sistem de retail vechi care s\u0103 poat\u0103 primi date prin API.<\/p>\n<p>Cele mai multe platforme f\u0103r\u0103 server suport\u0103 diverse limbaje. De obicei, sunt Python, JavaScript, C#, Java \u0219i Go. \u00cen general, nu exist\u0103 limit\u0103ri \u00een utilizarea bibliotecilor pentru aceste limbaje, a\u0219a c\u0103 pute\u021bi folosi bibliotecile open source preferate. Totu\u0219i, este recomandat s\u0103 nu abuza\u021bi de dependen\u021be, astfel \u00eenc\u00e2t func\u021biile dvs. s\u0103 ruleze optim \u0219i s\u0103 nu anuleze avantajele scalabilit\u0103\u021bii uria\u0219e a aplica\u021biilor dvs. f\u0103r\u0103 server. Cu c\u00e2t trebuie s\u0103 \u00eenc\u0103rca\u021bi mai multe pachete \u00een container, cu at\u00e2t mai lung\u0103 va fi durata de pornire rece.<\/p>\n<p>Pornirea rece se refer\u0103 la situa\u021bia \u00een care este necesar\u0103 ini\u021bializarea containerului, a mediului de execu\u021bie \u0219i a gestion\u0103rii erorilor \u00eenainte de a putea fi utilizate. Din aceast\u0103 cauz\u0103, \u00eent\u00e2rzierea \u00een executarea func\u021biilor poate ajunge la 3 secunde, ceea ce nu este ideal pentru utilizatorii ner\u0103bd\u0103tori. Totu\u0219i, pornirile reci apar la prima accesare dup\u0103 c\u00e2teva minute de inactivitate a func\u021biei. A\u0219adar, mul\u021bi consider\u0103 c\u0103 aceasta este o nepl\u0103cere minor\u0103 ce poate fi ocolit\u0103 prin ping-uirea regulat\u0103 a func\u021biei, pentru a o men\u021bine activ\u0103. Sau o ignor\u0103 complet.<\/p>\n<p>De\u0219i AWS a lansat<noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/rds\/aurora\/serverless\/\"> baza de date SQL f\u0103r\u0103 server Serverless Aurora<\/a><\/noindex>, totu\u0219i bazele de date SQL nu sunt ideale pentru astfel de aplica\u021bii, deoarece la executarea tranzac\u021biilor depind de conexiuni, care pot deveni rapid un punct critic \u00een cazul unui trafic mare pe AWS Lambda. Da, dezvoltatorii \u00eembun\u0103t\u0103\u021besc constant Serverless Aurora \u0219i merit\u0103 s\u0103 experimenta\u021bi cu ea, \u00eens\u0103 ast\u0103zi solu\u021biile NoSQL precum<noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/dynamodb\/\"> DynamoDB<\/a><\/noindex>sunt mult mai potrivite pentru sistemele f\u0103r\u0103 server. Cu toate acestea, este f\u0103r\u0103 \u00eendoial\u0103 c\u0103 aceast\u0103 situa\u021bie se va schimba foarte cur\u00e2nd.<\/p>\n<p>Instrumentele impun, de asemenea, numeroase limit\u0103ri, \u00een special \u00een ceea ce prive\u0219te testarea local\u0103. De\u0219i exist\u0103 solu\u021bii precum Docker-Lambda, DynamoDB Local \u0219i LocalStack, acestea necesit\u0103 munc\u0103 minu\u021bioas\u0103 \u0219i o cantitate semnificativ\u0103 de configurare. Totu\u0219i, toate aceste proiecte sunt \u00een continu\u0103 dezvoltare, a\u0219a c\u0103 este doar o chestiune de timp p\u00e2n\u0103 c\u00e2nd instrumentele vor atinge nivelul necesar.<\/p>\n<h2>Impactul tehnologiilor f\u0103r\u0103 server asupra ciclului de dezvoltare<\/h2>\n<p>\nDeoarece infrastructura dvs. este doar o configura\u021bie, pute\u021bi scrie \u0219i desf\u0103\u0219ura codul folosind scripturi, cum ar fi scripturile shell. Sau pute\u021bi folosi solu\u021bii de tip configuration-as-code precum <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/cloudformation\/\">AWS CloudFormation<\/a><\/noindex>. De\u0219i acest serviciu nu ofer\u0103 o configurare pentru toate domeniile, permite totu\u0219i specificarea de resurse concrete pentru utilizarea ca func\u021bii Lambda. Acolo unde CloudFormation e\u0219ueaz\u0103, po\u021bi scrie propria resurs\u0103 (func\u021bie Lambda) care s\u0103 umple acest gol. Astfel, po\u021bi face orice, chiar s\u0103 configurezi dependen\u021be \u00een afara mediu AWS.<\/p>\n<p>Deoarece totul este doar o configurare, po\u021bi parametriza scripturile tale de desf\u0103\u0219urare pentru medii, regiuni \u0219i utilizatori specifici, mai ales dac\u0103 aplici solu\u021bii de tip infrastructure-as-code, cum ar fi CloudFormation. De exemplu, po\u021bi desf\u0103\u0219ura o copie a infrastructurii pentru fiecare ramur\u0103 din depozit, pentru a o testa complet izolat \u00een timpul dezvolt\u0103rii. Aceasta accelereaz\u0103 radical feedbackul dezvoltatorilor atunci c\u00e2nd doresc s\u0103 \u00een\u021beleag\u0103 dac\u0103 codul lor func\u021bioneaz\u0103 corect \u00een mediu live. Managerii nu trebuie s\u0103-\u0219i fac\u0103 griji cu privire la costul desf\u0103\u0219ur\u0103rii mai multor medii, deoarece se pl\u0103te\u0219te doar utilizarea efectiv\u0103.<\/p>\n<p>DevOps se confrunt\u0103 cu mai pu\u021bine griji, deoarece trebuie doar s\u0103 se asigure c\u0103 dezvoltatorii au configura\u021bia corect\u0103. Nu mai este necesar\u0103 gestionarea instan\u021belor, a echilibratoarelor de sarcin\u0103 sau a grupurilor de securitate. De aceea, termenul NoOps este din ce \u00een ce mai des folosit, de\u0219i este \u00eenc\u0103 important s\u0103 \u0219tii cum s\u0103 configurezi infrastructura, mai ales \u00een ceea ce prive\u0219te configura\u021bia IAM \u0219i optimizarea resurselor de cloud.<\/p>\n<p>Exist\u0103 instrumente foarte puternice pentru monitorizare \u0219i vizualizare, cum ar fi Epsagon, Thundra, Dashbird \u0219i IOPipe. Acestea permit urm\u0103rirea st\u0103rii curente a aplica\u021biilor f\u0103r\u0103 server, oferind jurnale \u0219i tras\u0103ri, \u00eenregistr\u00e2nd metrici de performan\u021b\u0103 \u0219i puncte slabe ale arhitecturii, realiz\u00e2nd analize \u0219i previziuni de costuri, \u0219i multe altele. Ele nu doar c\u0103 ofer\u0103 inginerilor DevOps, dezvoltatorilor \u0219i arhitec\u021bilor o imagine detaliat\u0103 asupra performan\u021bei aplica\u021biilor, ci permit \u0219i managerilor s\u0103 urm\u0103reasc\u0103 situa\u021bia \u00een timp real, cu costuri pe resurse pe secunde \u0219i previziuni de cheltuieli. Organizarea acestuia \u00eentr-o infrastructur\u0103 gestionat\u0103 este mult mai dificil\u0103.<\/p>\n<p>Proiectarea aplica\u021biilor f\u0103r\u0103 server este mult mai simpl\u0103, deoarece nu este necesar s\u0103 desf\u0103\u0219ura\u021bi servere web, s\u0103 gestiona\u021bi ma\u0219ini virtuale sau containere, s\u0103 actualiza\u021bi servere, sisteme de operare, gateway-uri de internet etc. Abstractizarea de toate aceste responsabilit\u0103\u021bi permite arhitecturii f\u0103r\u0103 server s\u0103 se concentreze pe ceea ce este esen\u021bial \u2014 satisfacerea nevoilor afacerii \u0219i clien\u021bilor.<\/p>\n<p>De\u0219i instrumentarul ar putea fi mai bun (se \u00eembun\u0103t\u0103\u021be\u0219te \u00een fiecare zi), dezvoltatorii pot s\u0103 se concentreze pe implementarea logicii de afaceri \u0219i pe distribuirea optim\u0103 a complexit\u0103\u021bii aplica\u021biei \u00eentre diferite servicii \u00een cadrul arhitecturii. Gestionarea aplica\u021biilor f\u0103r\u0103 server se efectueaz\u0103 pe baza evenimentelor \u0219i este abstractizat\u0103 de furnizorul de cloud (de exemplu, SQS, evenimente S3 sau fluxuri DynamoDB). Prin urmare, dezvoltatorii trebuie s\u0103 scrie doar logica de afaceri pentru a reac\u021biona la anumite evenimente, f\u0103r\u0103 a-\u0219i face griji cu privire la modul de implementare a bazelor de date \u0219i a cozilor de mesaje sau cum s\u0103 organizeze lucrul optim cu datele \u00een spa\u021biile de stocare hardware specifice.<\/p>\n<p>Codul poate fi executat \u0219i depanat local, la fel ca \u00een orice proces de dezvoltare. Testarea modular\u0103 r\u0103m\u00e2ne neschimbat\u0103. Posibilitatea de a desf\u0103\u0219ura \u00eentreaga infrastructur\u0103 a aplica\u021biei folosind o configura\u021bie personalizat\u0103 a stivei permite dezvoltatorilor s\u0103 primeasc\u0103 rapid feedback important, f\u0103r\u0103 a se g\u00e2ndi la costul test\u0103rii sau impactul asupra mediilor gestionate costisitoare.<\/p>\n<h2>Instrumente \u0219i metode pentru construirea aplica\u021biilor f\u0103r\u0103 server<\/h2>\n<p>\nNu exist\u0103 o modalitate specific\u0103 de a construi aplica\u021bii f\u0103r\u0103 server, la fel cum nu exist\u0103 un set de servicii pentru aceast\u0103 sarcin\u0103. Liderul dintre solu\u021biile puternice f\u0103r\u0103 server ast\u0103zi este AWS, dar acorda\u021bi aten\u021bie \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/gcp\">Google Cloud<\/a><\/noindex>,<noindex><a rel=\"nofollow\" href=\"https:\/\/zeit.co\/\"> Zeit<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/firebase.google.com\/\">Firebase<\/a><\/noindex>. Dac\u0103 utiliza\u021bi AWS, ca abordare pentru construirea aplica\u021biilor, se poate recomanda <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/serverless\/sam\/\">Serverless Application Model<\/a><\/noindex> (SAM), \u00een special atunci c\u00e2nd utiliza\u021bi C#, deoarece \u00een Visual Studio exist\u0103 un instrumentar excelent. SAM CLI poate face tot ce face Visual Studio, a\u0219a c\u0103 nu ve\u021bi pierde nimic dac\u0103 trece\u021bi la un alt IDE sau editor de text. Desigur, SAM func\u021bioneaz\u0103 \u0219i cu alte limbaje.<\/p>\n<p>Dac\u0103 scrie\u021bi \u00een alte limbi, atunci Serverless Framework este un instrument open source excelent, care permite configurarea oric\u0103ror aspecte prin intermediul unor fi\u0219iere YAML foarte puternice. De asemenea, Serverless Framework suport\u0103 diferite servicii cloud, a\u0219a c\u0103 \u00eel recomand\u0103m celor care caut\u0103 o solu\u021bie multi-cloud. Are o comunitate vast\u0103, care a creat o mul\u021bime de pluginuri pentru orice necesitate. <\/p>\n<p>Pentru testarea local\u0103, instrumentele open source Docker-Lambda, Serverless Local, DynamoDB Local \u0219i LocalStack sunt foarte potrivite. Tehnologiile serverless sunt \u00eenc\u0103 \u00een stadiu incipient de dezvoltare, la fel ca \u0219i instrumentele pentru acestea, a\u0219a c\u0103, la configurarea unor scenarii de testare complexe, va trebui s\u0103 depune\u021bi eforturi considerabile. Totu\u0219i, desf\u0103\u0219urarea unui stack \u00een mediu \u0219i testarea acolo sunt incredibil de ieftine. \u0218i nu trebuie s\u0103 face\u021bi o copie local\u0103 exact\u0103 a mediilor cloud.<\/p>\n<p>Pentru a reduce dimensiunile pachetelor desf\u0103\u0219urate \u0219i a accelera \u00eenc\u0103rcarea, utiliza\u021bi AWS Lambda Layers. <\/p>\n<p>Folosi\u021bi limbajele de programare potrivite pentru sarcinile specifice. Fiecare limbaj are propriile sale avantaje \u0219i dezavantaje. Exist\u0103 multe benchmark-uri, dar JavaScript, Python \u0219i C# (.NET Core 2.1+) sunt lideri \u00een ceea ce prive\u0219te performan\u021ba AWS Lambda. Recent, AWS Lambda a introdus Runtime API, care permite specificarea limbajului dorit \u0219i a mediului de execu\u021bie, a\u0219a c\u0103 experimenta\u021bi.<\/p>\n<p>Men\u021bine\u021bi o dimensiune mic\u0103 a pachetelor pentru desf\u0103\u0219urare. Cu c\u00e2t sunt mai mici, cu at\u00e2t se \u00eencarc\u0103 mai rapid. Evita\u021bi utilizarea bibliotecilor mari, mai ales dac\u0103 utiliza\u021bi doar c\u00e2teva func\u021bionalit\u0103\u021bi din ele. Dac\u0103 programa\u021bi \u00een JavaScript, folosi\u021bi instrumente de construire precum Webpack pentru a optimiza construc\u021bia \u0219i a include doar ceea ce ave\u021bi cu adev\u0103rat nevoie. \u00cen .NET Core 3.0 exist\u0103 QuickJit \u0219i Compilare \u00een Pa\u0219i, care \u00eembun\u0103t\u0103\u021besc performan\u021ba \u0219i ajut\u0103 mult la lans\u0103rile reci.<\/p>\n<p>Dependen\u021ba func\u021biilor f\u0103r\u0103 server de evenimente poate \u00eengreuna ini\u021bial coordonarea logicii de afaceri. \u00cen acest sens, cozii de mesaje \u0219i finite automate pot fi extrem de utile. Func\u021biile Lambda pot invoca unele dintre ele, dar face\u021bi asta doar dac\u0103 nu a\u0219tepta\u021bi un r\u0103spuns (\u201elansat \u0219i uitat\u201d) \u2014 nu dori\u021bi s\u0103 primi\u021bi o factur\u0103 pentru a a\u0219tepta finalizarea unei alte func\u021bii. Cozile de mesaje sunt utile pentru a izola p\u0103r\u021bile logicii de afaceri, pentru a gestiona punctele de congestie ale aplica\u021biilor \u0219i pentru a procesa tranzac\u021bii (prin cozi FIFO). Func\u021biile AWS Lambda pot fi asociate cu cozi SQS ca \u0219i cozi \u201esuspendate\u201d de mesaje, care urm\u0103resc mesajele e\u0219uate pentru o analiz\u0103 ulterioar\u0103. Func\u021biile AWS Step Functions (finite automate) sunt foarte utile pentru gestionarea proceselor complexe care necesit\u0103 crearea de lan\u021buri de func\u021bii. \u00cen loc ca o func\u021bie Lambda s\u0103 invoce o alt\u0103 func\u021bie, func\u021biile Step pot coordona tranzi\u021biile de stare, pot transfera date \u00eentre func\u021bii \u0219i pot gestiona starea global\u0103 a func\u021biilor. Acest lucru permite definirea condi\u021biilor de retry sau ce trebuie s\u0103 face\u021bi \u00een cazul unei erori specifice \u2014 un instrument extrem de puternic \u00een anumite condi\u021bii.<\/p>\n<h2>Concluzie<\/h2>\n<p>\n\u00cen ultimii ani, tehnologiile f\u0103r\u0103 server au evoluat cu o vitez\u0103 nemaiv\u0103zut\u0103. Aceast\u0103 schimbare de paradigm\u0103 este \u00eenso\u021bit\u0103 de anumite concep\u021bii gre\u0219ite. Datorit\u0103 abstractiz\u0103rii infrastructurii \u0219i gestion\u0103rii scal\u0103rii, solu\u021biile f\u0103r\u0103 server ofer\u0103 beneficii semnificative: de la simplificarea dezvolt\u0103rii \u0219i a proceselor DevOps, p\u00e2n\u0103 la o reducere considerabil\u0103 a cheltuielilor opera\u021bionale.<br \/>\n\u0218i de\u0219i abordarea f\u0103r\u0103 server nu este lipsit\u0103 de dezavantaje, exist\u0103 metode de \u00eencredere \u0219i modele de proiectare prin care pot fi create aplica\u021bii rezistente f\u0103r\u0103 server sau integrate elemente f\u0103r\u0103 server \u00een arhitecturi existente.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nix\/blog\/486180\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0425\u043e\u0442\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c, \u0441 \u043d\u0438\u043c\u0438 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u0438 \u043e\u043f\u0430\u0441\u0435\u043d\u0438\u0439. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 \u0432\u0435\u043d\u0434\u043e\u0440\u0430, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u0430\u043c\u0438, \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u2014 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0442\u0435\u043c\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043e \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0445 \u0442\u0435\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u043c\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":55882,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55881","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0425\u043e\u0442\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u043e\u0432\u0435\u0442\u044b \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0425\u043e\u0442\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-30T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:04:02+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Sfaturi \u0219i surse de informa\u021bii pentru crearea de aplica\u021bii f\u0103r\u0103 server | ProHoster","description":"De\u0219i f\u0103r\u0103 server.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u043e\u0432\u0435\u0442\u044b \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 | ProHoster","og:description":"\u0425\u043e\u0442\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-30T21:00:00+00:00","article:modified_time":"2020-02-18T11:04:02+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55881","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:35:40","updated":"2022-10-07 20:58:46","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/55881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=55881"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/55881\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/55882"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=55881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=55881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=55881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}