Nucleul Microsoft Azure oferă o mulțime de servicii pentru aproape fiecare scenariu de care ați putea avea nevoie. Puteți clasifica aceste servicii în tipuri de cloud computing, cum ar fi IaaS, PaaS și SaaS, pentru a determina cantitatea de control și responsabilitate pe care o aveți față de timpul pe care îl puteți petrece pentru a construi lucruri care contează.
Dați-mi voie să explic aceste tipuri un pic mai departe:
- IaaS (Infrastructure-as-a-Service)
- PaaS (Platform-as-a-Service)
- SaaS (Software-as-a-Service)
- Top Azure PaaS Services
- Web Apps
- Aplicații mobile
- Logic Apps
- Azure Functions
- Azure WebJobs
- Ce să folosiți când
- Caracteristici comune ale serviciilor de aplicații
- Desfășurarea serviciilor
- Azure Event Grid
- Azure Service Bus
- Azure Storage
- Blob Storage
- Table Storage
- Queue Storage
- File Storage
- Disk Storage
- Azure Cosmos DB
- Azure Cognitive Services
- Azure CDN
- Azure Redis Cache
- Azure API Management
- Concluzie
IaaS (Infrastructure-as-a-Service)
Serviciile IaaS tipice sunt Container Service și Virtual Machines. Acestea vă permit să aveți mult control asupra modului în care le rulați, dar necesită, de asemenea, să fiți responsabil pentru lucruri precum sistemul de operare, antivirusul și echilibrarea încărcării. Din acest motiv, dvs. și echipa dvs. puteți petrece mai puțin timp lucrând la adăugarea de valoare de afaceri.
PaaS (Platform-as-a-Service)
Exemple de servicii PaaS sunt App Services, Azure Search și Azure CDN. Nu trebuie să vă faceți griji cu privire la sistemul de operare sau chiar la server, puteți doar să vă rulați aplicația. Sunteți responsabil pentru unele configurări ale serverului, cum ar fi scalarea, deși pentru unele servicii, cum ar fi Azure Functions, acest lucru se întâmplă automat.
SaaS (Software-as-a-Service)
Exemple de servicii SaaS sunt lucruri precum Azure IoT Suite și Office 365. SaaS este cel mai înalt nivel de abstractizare și vă permite doar să folosiți aplicația, nici măcar nu trebuie să o construiți. Trebuie doar să o configurați. Nu trebuie să vă faceți griji cu privire la sistemul de operare sau chiar la scalarea aplicației. Acest lucru vă permite să lucrați la valoarea afacerii, dar vă oferă puțin control asupra aplicației dumneavoastră.
Pentru dezvoltatorii de software, PaaS este un tip de cloud computing foarte bun de utilizat. Aveți suficient control pentru a lucra doar la aplicația dvs. și a o ajusta pentru a fi perfectă și nu trebuie să vă faceți griji cu privire la toate chestiunile legate de operațiuni. Lucrurile pur și simplu rulează fără să vă faceți griji cu privire la patch-urile sistemului de operare sau la echilibrarea încărcăturii.
Azure are o ofertă PaaS foarte puternică, care este foarte atractivă pentru dezvoltatori. Acest articol va discuta despre cele mai bune servicii Azure PaaS pentru dezvoltatori, care pot face ca aplicația dvs. să fie mai bună.
Top Azure PaaS Services
Unul dintre serviciile Azure PaaS de bază este Azure App Services. Azure App Services oferă mai multe tipuri de servicii, fiecare orientat spre găzduirea aplicației dvs. sau a logicii de afaceri pentru un anumit caz de utilizare. În plus, tipurile App Service au în comun capacități comune, cum ar fi auto-scalare, autentificare și autorizare și domenii personalizate și SSL.
Să trecem în revistă tipurile App Service:
Web Apps
Azure App Service Web Apps sunt esențiale dacă doriți să găzduiți o aplicație web ASP.NET standard. Web Apps sunt o abstractizare a unui server web precum IIS sau Tomcat și pot rula aplicații care sunt scrise în .NET, PHP, Python, Node.js, Java și altele. Acestea sunt foarte ușor de configurat și vă oferă o mulțime de avantaje din start, cum ar fi faptul că, în mod implicit, sunt disponibile în 99,95% din timp. Nu trebuie să vă faceți griji cu privire la timpii de nefuncționare. Serviciile de aplicații sunt acum disponibile atât pentru Windows, cât și pentru Linux.
Aplicații mobile
Azure vă poate ajuta, de asemenea, atunci când creați aplicații mobile. Puteți găzdui un backend pentru aplicația dvs. mobilă în Azure App Services Mobile Apps. Vă puteți conecta cu ușurință la acest backend utilizând SDK-urile pentru Azure Mobile Apps care sunt disponibile pentru IOS, Android, Windows, Xamarin.IOS, Xamarin.Android și Xamarin.Forms.
Backend-ul mobil vă oferă câteva beneficii unice. Unul dintre ele este capacitatea de a face sincronizare offline. Acest lucru permite unui utilizator să continue să lucreze cu aplicația dacă este offline și să sincronizeze datele cu backend-ul atunci când se conectează din nou. O altă capacitate sunt notificările push. Aceasta vă permite să trimiteți notificări despre aplicația dvs. pe dispozitivul utilizatorului. În plus, Mobile Apps are aceleași capacități pe care le are Web Apps, cum ar fi scalarea automată și disponibilitatea ridicată.
Logic Apps
Azure App Service Logic Apps sunt diferite de Web Apps și Mobile Apps prin faptul că nu găzduiți o aplicație în ea, ci orchestrați logica de afaceri cu aceasta. Gândiți-vă la Logic Apps ca la o modalitate de a automatiza un proces de afaceri prin simpla configurare a acestuia.
O Logic App este pornită de un Trigger. Acesta poate fi un timp (la fiecare 15 minute) sau o sursă exterioară, cum ar fi un mesaj nou pe o coadă de așteptare. Declanșatorul transmite valori în fluxul de lucru (cum ar fi conținutul mesajului din coada de așteptare), care pot fi utilizate în întreaga aplicație logică. Restul fluxului aplicației Logic App constă în apelarea Conectorilor, care sunt API-uri către servicii terțe, cum ar fi Office365 sau Twitter sau propriile API-uri.
Aplicațiile Logic App se extind automat și nu plătiți pentru ele decât atunci când se execută. Acest lucru se numește uneori „fără server”, deoarece înseamnă că vă puteți concentra complet pe aplicația sau logica dvs. și nu pe infrastructura subiacentă.
Azure Functions
Azure App Services Function Apps pot găzdui una sau mai multe Azure Functions. Folosiți Azure Functions pentru a găzdui aplicații mici, cum ar fi sarcini de fundal sau un microserviciu care rulează doar pentru o perioadă scurtă de timp.
Azure Functions pot fi declanșate de cronometre configurabile, cum ar fi pe un program (la fiecare 15 minute) sau de un serviciu extern, cum ar fi atunci când un nou Blob este adăugat la Azure Blob Storage. Atunci când este declanșat, codul din Azure Function poate utiliza valoarea din declanșator, cum ar fi Blob-ul care a fost adăugat. De asemenea, puteți adăuga legături de ieșire la o funcție Azure Function pentru a emite o valoare către un serviciu extern, fără a scrie nicio instalație. Aceasta ar putea fi, de exemplu, o ieșire Blob Storage, unde pur și simplu returnați un Blob fără a fi nevoie să scrieți cod pentru a vă conecta la Azure Storage.
La fel ca Logic Apps, Azure Functions sunt „fără server”, deoarece se extind automat și plătiți pentru ele doar atunci când se execută.
Azure WebJobs
O altă modalitate de a executa sarcini de fundal este să le executați în Azure WebJobs. WebJobs fac parte din App Services și rulează în interiorul unui App Service, cum ar fi o aplicație web sau o aplicație mobilă. Puteți scrie și găzdui cod în WebJobs care este pornit de un declanșator, cum ar fi un cronometru (la fiecare 15 minute) sau un serviciu extern, cum ar fi un mesaj nou într-o coadă.
WebJobs funcționează în mod similar cu Azure Functions în sensul că rulează bucăți mici de cod care pot fi declanșate de surse externe care nu necesită niciun cod de instalații pentru a fi configurate.
Sunt diferite de Azure Functions prin faptul că trebuie să le scalați manual. Plătiți pentru App Service care găzduiește Web Job-ul dumneavoastră, care este o taxă lunară, indiferent dacă WebJob-ul rulează sau nu.
Citește mai mult: Comparați Azure Functions vs. Azure WebJobs
Ce să folosiți când
Atunci ce App Service ar trebui să folosiți când? Acest tabel vă poate ajuta:
Aplicații web | Aplicații mobile | Aplicații logice | Funcții | Funcții | WebJobs | |||||
Agențiază aplicații web și API-uri | X | |||||||||
Host backend pentru aplicații mobile | X | |||||||||
Hostesc fluxuri de lucru logice de afaceri | X | |||||||||
Găzduiește sarcini de fundal | X | X | ||||||||
Se scalează automat și plătește doar atunci când rulează | X | X | X | X | X | X | ||||
Controlați scalarea și plătiți o taxă lunară | X | X | X | X | X |
Caracteristici comune ale serviciilor de aplicații
Serviciile de aplicații Azure au în comun câteva caracteristici minunate, care le fac foarte atractive pentru utilizare. Iată câteva dintre ele:
- Autentificare și autorizare ușoară
- Livrare continuă
- Domenii personalizate
- Conexiuni hibride
- Vă permite să vă conectați la resurse on-premise, cum ar fi serviciile web sau bazele de date
- Scalare (automată)și echilibrare a încărcăturii
- Sloturi de implementare
- Acestea vă permit să testați noua versiune a aplicației dvs. și să o implementați în producție fără timp de nefuncționare. Acestea vă permit chiar să direcționați o parte din traficul de producție către noua versiune a aplicației dvs. pentru a vedea dacă funcționează conform așteptărilor.
- Aflați mai multe despre sloturile de desfășurare aici
Desfășurarea serviciilor
Crearea unei noi aplicații Web sau Logic App este simplă prin intermediul portalului Azure, dar ar trebui să vă automatizați cu adevărat desfășurările, astfel încât să le puteți repeta în medii diferite și să executați exact aceeași configurație. Puteți face acest lucru prin crearea de șabloane Azure Resource Manager (ARM) pe care le implementați din Visual Studio sau într-o conductă de livrare continuă folosind un serviciu precum Visual Studio Team Services.
Schemele ARM descriu resursele dvs. cum ar fi aplicațiile Web, bazele de date Azure SQL și grupurile de resurse în documente JSON. Le puteți crea folosind șablonul de proiect Azure Resource Group în Visual Studio și vă puteți inspira făcând clic pe butonul Automation Script pe orice resursă din Azure Portal.
Azure Event Grid
Un serviciu relativ nou, Azure Event Grid, acționează ca un liant între servicii. Azure Event Grid poate direcționa evenimente de la orice sursă către orice destinație.
Chiar fiecare serviciu Azure poate publica evenimente pe care Azure Event Grid le poate primi și utiliza pentru a declanșa aplicația dumneavoastră. De asemenea, puteți face ca aplicațiile și serviciile dvs. să publice evenimente pe care Azure Event Grid le poate utiliza pentru a le direcționa către alte servicii.
Azure Event Grid se scalează automat și plătiți doar pentru numărul de operațiuni pe care le utilizați.
Azure Event Grid elimină nevoia de interogare. Aplicațiile dvs. pot asculta și reacționa la evenimente din orice serviciu care a publicat evenimente către Azure Event Grid.
De exemplu, puteți face ca Azure Event Grid să asculte modificările din lista dvs. de distribuție și să declanșeze o aplicație Azure Logic App atunci când se schimbă ceva.
Azure Service Bus
Unul dintre cele mai vechi și mai utilizate și mai fiabile servicii din Azure este Azure Service Bus. Acesta este format din mai multe servicii, mai ales Azure Service Bus Queues și Azure Service Bus Topics.
O aplicație poate pune mesaje pe o Azure Service Bus Queue. Fiecare mesaj este citit din coadă și este procesat de o aplicație. Cozile de așteptare Azure Service Bus au unele capacități avansate pe care le obțineți din start, cum ar fi detectarea duplicatelor și o sub-coadă de așteptare a literelor moarte în care sunt mutate mesajele care nu pot fi procesate.
Azure Service Bus Topics sunt puțin diferite. Aplicațiile pot pune mesaje pe un Azure Service Bus Topic și mai multe aplicații pot citi și procesa mesajul. Acestea primesc mesajele care au atributele de care sunt interesate. Acestea se abonează la „subiecte” din coada de așteptare. Azure Service Bus Topics au aceleași capacități avansate ca și cozile de așteptare.
Ambele servicii vă permit să decuplați aplicația care pune mesajele în coadă de așteptare de aplicația care procesează mesajele. Acest model permite aplicației de procesare să proceseze sarcinile în ritmul său propriu, fără a face utilizatorul să aștepte după ea. Acest lucru este util atunci când procesarea poate dura ceva timp și nu doriți ca utilizatorul să fie nevoit să aștepte, de exemplu atunci când procesați o cerere de comandă care poate dura 5 minute.
Azure Storage
Un element de bază în orice aplicație este stocarea datelor. Azure Storage oferă mai multe opțiuni pentru stocarea datelor, cum ar fi fișiere sau rânduri de date. Acesta oferă mai multe servicii diferite care sunt toate relativ ieftine, se extind aproape la infinit și pe regiuni geografice și oferă caracteristici precum criptarea și autentificarea. Obțineți toate acestea din start, doar prin crearea unui cont Azure Storage. Haideți să discutăm despre diferitele tipuri de Azure Storage:
Blob Storage
În Azure Blob Storage stocați fișiere mari, sau „blobs”. Acestea pot fi lucruri precum fișiere VHD sau fișiere audio sau video sau copii de rezervă ale bazelor de date.
Puteți alege un nivel de stocare Blob care determină performanța și costurile. Există nivelul Hot, pentru Blobs pe care le accesați frecvent. Există, de asemenea, nivelul Cool, pe care îl folosiți pentru Blobs pe care nu le accesați atât de des, poate o dată pe lună. Și mai există și nivelul Arhivă, pentru blocurile pe care nu le folosiți aproape niciodată. Atunci când solicitați un Blob de la Archive tier, ar putea dura ore până când îl puteți accesa.
Table Storage
Puteți stoca date semi-relaționale în rânduri și coloane folosind Azure Table Storage. Acest lucru este perfect pentru lucruri precum datele de logare. Stocați datele în tabele care sunt similare cu cele din SQL Server, dar sunt mai puțin stricte în sensul că nu au relații între ele. Azure Table Storage este rapid și relativ ieftin, la fel ca celelalte tipuri de Azure Storage.
Queue Storage
Puteți stoca mesaje mici care pot fi preluate și procesate ulterior în Azure Storage Queues, la fel ca Azure Service Bus Queues. Aceasta este o ofertă un pic ciudată, deoarece se suprapune cu cozile Azure Service Bus Queues. Ele sunt diferite prin faptul că Service Bus Queues au detectare a duplicatelor, iar Storage Queues nu. De asemenea, mesajele Service Bus Queue rămân disponibile după 7 zile, în timp ce mesajele Storage Queue pot fi stocate doar pentru 7 zile.
File Storage
Puteți utiliza Azure File Storage ca un hard disk suplimentar pe care îl montați pe computerul dvs. sau pe o VM. Acesta este un serviciu excelent pentru a începe cu cloud-ul prin migrarea fișierelor dvs. în el. Puteți face ca aplicațiile să îl folosească prin simpla direcționare a acestora către Azure File Storage în locul propriului lor hard disk. Acest lucru vă permite să începeți să vă mutați în cloud.
Disk Storage
Azure Disk Storage este o caracteristică premium și este foarte performantă și utilă pentru situațiile în care trebuie să efectuați o muncă intensivă de I/O, cum ar fi pe un hard disk primar al unei VM. Acesta acționează ca un disc scalabil, de înaltă performanță, pe care îl puteți monta pe o VM.
Azure Cosmos DB
Noua versiune și denumire a Azure DocumentDB este Azure Cosmos DB. Azure Cosmos DB este o ofertă de baze de date care se potrivește perfect în cloud. Fiind un serviciu PaaS, trebuie doar să rotiți un Cosmos DB și sunteți gata de plecare. Dacă foloseai Azure DocumentDB, acum folosești automat Azure Cosmos DB. Codul dvs. nu trebuie să fie modificat.
Există câteva lucruri care fac Cosmos DB extraordinar:
- Puteți programa împotriva lui folosind diferite „API-uri”, cum ar fi SQL, JavaScript, MongoDB, Gremlin și Table Storage. Nu mai alegeți un tip de bază de date, alegeți doar modul în care doriți să vorbiți cu ea, Cosmos DB se ocupă de restul
- Nu mai este nevoie să creați indici, Cosmos DB face acest lucru automat pentru dumneavoastră
- Cosmos DB este foarte performant. Garantează chiar și o latență scăzută în SLA-ul său
- Obțineți scalabilitate geografică din start. Trebuie doar să indicați în ce parte a lumii doriți să fie datele dvs. și acestea sunt replicate în timp real. În acest fel, vă puteți asigura că datele dvs. sunt aproape de utilizatori
Învățați cum să începeți cu Azure Cosmos DB în aceste tutoriale de 5 minute.
Cosmos DB este cel mai potrivit pentru date non-relaționale sau semi-relaționale.
Azure Cognitive Services
Adaugați inteligență aplicațiilor dvs. nu a fost niciodată atât de ușor ca cu Azure Cognitive Services. Acestea sunt un set de API-uri care oferă abilități aproape magice, alimentate de AI și Machine Learning. Există aproximativ 30 de Cognitive Services și urmează să apară și mai multe. Iată câteva exemple:
- Emotion API, care analizează fețele din fotografii și videoclipuri pentru a detecta emoții precum fericirea, tristețea, dezgustul și așa mai departe
- Language Understanding Intelligent Service (sau LUIS), care poate înțelege de fapt contextul lingvistic în peste 12 limbi. Puteți folosi acest lucru pentru a crea un robot inteligent care să înțeleagă de fapt ceea ce îi spuneți
- Speaker Recognition API, care identifică vorbitorii pe baza vorbirii. Puteți folosi acest lucru pentru a vă autentifica folosind vocea sau pentru a identifica persoane pe baza vocii lor
- Computer Vision API, care poate detecta informații despre conținutul vizual găsit în imagini, cum ar fi faptul că fundalul este apă și cer sau că jacheta pe care o poartă persoana este neagră
Serviciile cognitive sunt foarte ușor de utilizat, deoarece le folosiți pur și simplu din cloud și nu trebuie să gestionați nicio infrastructură sau configurație.
Vă puteți folosi propriile date pentru a antrena serviciile pentru a vă îmbunătăți rezultatele. Făcând acest lucru, API-ul Face ar putea, de exemplu, să returneze numele și vârsta colegilor dvs. de serviciu. În plus, serviciile cognitive învață din mers, prin datele pe care le furnizați. Acest lucru le face mai inteligente și mai precise.
Pentru a utiliza un serviciu cognitiv, pur și simplu apelați punctul final API, cum ar fi https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect cu o cheie de abonament pe care o primiți atunci când vă înscrieți și îi furnizați parametrii de care are nevoie, cum ar fi un Byte Array al unei imagini, în cazul Face API. Acesta returnează un răspuns JSON ca acesta (unele linii sunt omise pentru a economisi spațiu):
Rezultat detectare față:
}, "smile": 0.826, "headPose": { "pitch": 0.0, "roll": -16.9, "yaw": 21.3 }, "gender": "female", "age": 23.8, "facialHair": { "moustache": 0.0, "beard": 0.0, "sideburns": 0.0 }, "glasses": "ReadingGlasses", "makeup": { "eyeMakeup": true, "lipMakeup": true }, "emotion": { "anger": 0.103, "contempt": 0.003, "disgust": 0.038, "fear": 0.003, "happiness": 0.826, "neutral": 0.006, "sadness": 0.001, "surprise": 0.02 }, … }]
Puteți vedea în ieșire că acest serviciu particular returnează o mulțime de date. Acesta detectează chiar și unde se află trăsăturile faciale în imagine și dacă persoana poartă machiaj. Cred că este cu adevărat uimitor.
Azure CDN
Vă puteți accelera aplicațiile prin descărcarea traficului către Azure CDN. Azure CDN (Content Delivery Network) acționează ca un punct final pentru conținutul dvs. static, cum ar fi fișiere video, imagini, JavaScript și CSS. Prin faptul că Azure CDN servește aceste fișiere, aplicația dvs. nu trebuie să o facă și dispune de mai multe resurse pentru a gestiona mai multe cereri. În plus, Azure CDN replică conținutul static la punctele de prezență (PoPs) din întreaga lume, plasând astfel conținutul static aproape de locul în care se află utilizatorii dvs. și limitând latența, ceea ce este bun pentru performanță.
Puteți utiliza Azure CDN prin crearea unui Azure CDN Endpoint, cuplarea acestuia la o sursă, cum ar fi Azure Storage și încărcarea fișierelor în Azure Storage. Azure CDN replică automat fișierele către PoP-urile din întreaga lume și puteți crea un link către fișiere prin intermediul unui URL precum https://custom.azureedge.net/cd/myimag.png. De asemenea, puteți utiliza un nume de domeniu personalizat pentru URL.
Azure Redis Cache
O altă modalitate de a vă accelera aplicațiile este prin punerea în cache a datelor folosind Azure Redis Cache. Atunci când obțineți date dintr-o memorie cache în loc de un alt depozit de date, cum ar fi o bază de date, vă accelerați aplicația.
Aceasta se datorează faptului că o memorie cache precum Azure Redis Cache păstrează datele în memorie și stochează datele într-un format simplu cheie/valoare. Din acest motiv, datele pot fi servite mai rapid, deoarece nu trebuie să fie recuperate de pe disc și nu trebuie să fie recuperate prin executarea unei interogări complexe.
Azure Redis Cache oferă un cache-as-a-service și oferă capacități avansate, cum ar fi clusterizarea și georeplicarea. Se bazează pe popularul Redis Cache open-source Redis Cache și este acum susținut de SLA-urile Microsoft și de asistență pentru întreprinderi. Azure Redis Cache este opțiunea de cache pentru aplicațiile din Azure.
Azure API Management
Puteți utiliza Azure API Management pentru a îmbunătăți API-urile dvs. sau API-urile terțe pe care le utilizați. Azure API Management acționează ca o poartă de acces între API-ul dvs. și lumea exterioară. Acest lucru vă permite să vă îmbunătățiți API-ul.
Cu API Management, puteți crea un portal unde utilizatorii API-ului dvs. pot merge pentru a-și gestiona abonamentul (abonamentele) și pentru a testa aplicația. Un exemplu de astfel de portal pentru dezvoltatori este site-ul web al unuia dintre serviciile Cognitive Services, care utilizează, de asemenea, API Management:
Puteți controla utilizarea API-ului prin stabilirea unor limite per utilizator sau tip de abonament. Aceasta este o modalitate bună de a vă monetiza API-ul, oferind, de exemplu, un nivel de utilizare gratuită până la 10 cereri pe zi, iar dacă aveți nevoie de mai mult, începeți să plătiți. Dacă utilizatorii încearcă să folosească mai mult, fără abonamentul potrivit, solicitările lor sunt limitate.
În plus, puteți îmbunătăți API-urile făcându-le mai performante. Puteți pune în cache răspunsurile API, astfel încât acestea să nu fie nevoite să obțină răspunsurile făcând calcule sau compunând date dintr-o sursă de date.
Și vă puteți proteja API-urile cu chei, parole, certificate și filtrare IP. În plus, puteți transforma intrările și ieșirile către și dinspre API-urile dumneavoastră. Ați putea, de exemplu, să transformați XML de intrare în JSON sau să faceți același lucru cu răspunsurile.
Azure API Management este foarte puternic și sporește controlul pe care îl aveți asupra API-urilor dvs. (și a API-urilor terților pe care le expuneți prin API Management). Și vă permite să faceți acest lucru fără a modifica API-ul.
Concluzie
Serviciile din acest articol sunt toate exemple de servicii Azure PaaS. Toate acestea sunt foarte ușor de pus în funcțiune și necesită o întreținere minimă. Ele vor rămâne în funcțiune, se auto-repară și, practic, „funcționează pur și simplu”.
Valoarea pe care aceste servicii o pot oferi este enormă și ușor de încorporat în aplicațiile dumneavoastră. Acest lucru se ocupă cu adevărat de o mulțime de sarcini sanitare și repetitive pe care obișnuiam să le construim și să le facem noi înșine.
Azure PaaS ne permite să ne concentrăm pe construirea de lucruri care contează. Nu uitați să vă concentrați întotdeauna pe îmbunătățirea aplicațiilor dvs. de asemenea, utilizând un instrument APM pentru întregul ciclu de viață, cum ar fi Stackify Retrace. Aflați mai multe.