Cuprins
- Ce este Cloud Run?
- Ce sunt serviciile serverless?
- Cloud Run din perspectiva programatorilor
- Cloud Run din perspectiva managementului
- Funcționalități Cloud Run
- Cloud Run și scalabilitate nelimitată a serviciilor
- Cui îi este dedicat Cloud Run? Comparație Cloud Run vs. Google Kubernetes Engine vs. Compute Engine
- Serviciile interconectate Google Cloud Platform
- Compute și Serverless: puterea de calcul a Google
- Cât timp salvează implementarea aplicațiilor în containere cu Cloud Run?
- Care sunt costurile serviciului Cloud Run?
Cloudul preia o parte semnificativă din încărcarea echipelor tehnice în cadrul unei companii. Mult mai scalabil decât o infrastructură tradițională de IT, arhitecturile cloud sunt create pentru a fluidiza performanța într-o companie, susținând dezvoltarea și creșterea. Printre cele mai populare astfel de servicii – în rândul companiilor, dar și al specialiștilor freelance – se numără cele din gama Compute & Serverless, puterea mașinilor virtuale și serviciile de tip “container”.
Ce este Cloud Run?
Google Cloud Run este o soluție nouă pentru crearea și rularea aplicațiilor fără server, bazate pe containere Docker. Platforma vine ca o alternativă la platforma open source de orchestrare a containerelor Kubernetes. Practic, Google Cloud Run este o platformă care preia o imagine de container Docker și o rulează ca un serviciu HTTP cu scalare automată. Un mare plus al Cloud Run în fața platformelor originale fără server (serverless) este opțiunea de a rula aplicații arbitrare în cloud care deservesc mai multe puncte finale.
Cloud Run este, altfel spus, o platformă cloud bazată pe Knative, care vă permite să construiți și să implementați rapid aplicații containerizate. Este fără server, ceea ce înseamnă că utilizatorul nu trebuie să supravegheze nicio componentă a infrastructurii – întreținerea fizică a mașinii, actualizările software, echilibrarea sarcinii sau scalarea. Se concentrează doar pe scrierea codului în orice limbaj de programare cunoaște, folosind ”librăriile” preferate sau propriile fișiere binare.
Ce sunt serviciile serverless?
Sunt un model de arhitectură în cloud care permite developerilor să construiască și să ruleze aplicații fără server. Mai departe, un provider de cloud preia serviciile de rutină precum provizionare, menținere și scalarea infrastructurii de server. Astfel, developerii se ocupă doar de construirea efectivă a aplicațiilor.
Serverless oferă o serie de avantaje companiilor față de infrastructura tradițională bazată pe cloud sau pe servere. Pentru dezvoltatori, serverless se traduce în scalabilitate mai mare, mai multă flexbilitate, un timp mai rapid pentru lansările de aplicații și actualizările acestora, toate aceste beneficii în timp ce costurile sunt ținute sub control. Se elimină astfel grijile cu privire la funcționarea, furnizarea și gestionarea serverelor. Totuși, infrastructura serverless nu este o opțiune magică pentru toți dezvoltatorii de aplicații web.
Cloud Run din perspectiva programatorilor
Programatorii familiarizați deja cu Docker sau soluții tradiționale PaaS se vor acomoda rapid cu Cloud Run. Misiunea unui programator este de a livra rapid aplicații lucrate în cloud (aplicații web, API-uri de mobil etc.). Însă alegerea unei soluții cloud potrivite vine adesea cu provocări.
Pe de-o parte, puteți alege să gestionați personal serverele. Dar această rută presupune și provizionarea și configurarea acestora, pe lângă preocupările legate de scalare pe măsură ce tiparurile de trafic se schimbă. În plus, odată cu supra-provizionarea resurselor, se pot ivi probleme de costuri ridicate.
Pe de altă parte, există soluții serverless care pot și ele limita limbajele de programare și librăriile pe care le puteți folosi sau pot pretinde schimbări de cod și pot îngreuna mutarea aplicațiilor în sine.
Cloud Run vine ca o soluție de mijloc care acoperă punctele forte ale celor două tipuri de infrastructură. Puteți folosi Cloud Run pentru a lansa orice container HTTP. Vă permite astfel să scrieți cod în limbajul preferat, cu framework-ul sau librăria binară potrivită nevoilor voastre. Puteți mai departe specifica limbajul, dependențele și scriptul într-un Dockerfile și, cu o singură comandă, să le urcați într-un container și să finalizați procesul. Aplicația este gata lansată și rulează exclusiv din cloud.
Limbaje de programare disponibile în Cloud Run
Optarea pentru un anumit limbaj de programare nu va face nicio diferență în crearea și rularea aplicațiilor companiei cu Cloud Run. Platforma acceptă toate limbajele de programare care pot fi rulate într-un container. În aceste condiții, recomandarea este să optați pentru un framework cu care echipa este deja familiarizat.
Cloud Run din perspectiva managementului
Unul dintre punctele forte ale Google Cloud Run este arhitectura focusată pe containere, alături de dezvoltarea și lansarea de aplicații. Împreună cu caracteristica serverless, produsul Google devine o alegere câștigătoare pentru orice project manager.
În plus, Cloud Run ușurează munca developerilor care construiesc servere web statless și container-based, facilitându-le tranziția către o tehnologie serverless flexibilă. Fără a fi nevoie să dimensionați serverele container, Cloud Run vă va oferi și o rată de recuperare a investiției mai bună.
Funcționalități Cloud Run
- Include orice tehnologie. Deoarece serviciul funcționează pe bază de containere, vă permite să creați coduri de aplicație folosind orice limbaj de programare (inclusiv Go, Python, Java, Ruby sau Node.js), librării sau fișiere binare.
- Folosirea tuturor posibilităților containerelor. Cloud Run poate descărca orice imagini de container și se integrează ușor cu tehnologii precum Cloud Build, Artifact Registry și Docker.
- Integrare cu alte servicii cloud. Deoarece Cloud Run este un element al Google Cloud Platform, este relativ ușor să creați un mediu integrat folosind mai multe servicii GCP.
- Nu se limitează la un singur serviciu cloud. Serviciul se bazează pe tehnologia open source Knative și pe containere, datorită cărora resursele sunt portabile. Astfel, se evită dependența de un singur furnizor de cloud (cloud lock-in).
- Serviciu integrat. Odată configurat, nu necesită actualizări repetate pentru a gestiona corect mediul aplicației.
- Scalare automată instantanee. În situații de trafic crescut, serviciul este scalat automat pentru a asigura o disponibilitate ridicată, iar când traficul scade, se reduce numărul de interogări de funcționare, asigurând astfel costuri proporționale consumului.
- Stabilitate datorită redundanței. Resursele care rulează în Cloud Run în modelul regional sunt transferate constant între corespondenți pentru a asigura că datele nu se vor pierde chiar și în cazul unei eșecuri a camerei serverului Google Cloud.
- Securitate. Doar imaginile containerului autorizat pot fi implementate cu autorizare binară. Resursele rulează în medii izolate, cu identități și niveluri de acces specifice. Puteți utiliza propria cheie criptată pentru securitate și puteți gestiona datele de acces prin serviciul Secret Manager.
- Control si monitorizare. Serviciul este integrat cu instrumentele Cloud Monitoring, Cloud Logging, Cloud Trace și Error Reporting pentru a asigura rularea aplicației. Nivelul de utilizare a serviciului poate fi monitorizat în GUI Metrics, împreună cu jurnalele din containere. În plus, Cloud Run are o funcționalitate încorporată care vă permite să restaurați rapid versiunea anterioară a containerului (rollback).
Cloud Run și scalabilitate nelimitată a serviciilor
În cloud computing, scalarea este un proces automatizat care adaugă sau elimină servicii, spațiu de stocare, funcții de rețea pentru a acomoda volumul de lucru sau cereri. Practic, prin scalabilitate, se asigură rularea aplicației sau a serviciului indiferent de variața numărului de utilizatori. Scalarea se referă în general la adăugarea sau reducerea numărului de servere sau instanțe active valorificate în raport cu cerințele de resurse.
Cloud Run asigură faptul că, pe măsură ce activitatea companiei se dilată sau contractă, echipamentele soft IT țin pasul cu aceste trenduri. În Cloud Run, fiecare revizie este automat scalată la numărul de instanțe de container necesare pentru a face față cererilor care vin. În circumstanțele în care nu se înregistrează trafic, instanțele sunt scalate automat la zero. Puteți seta totuși un număr limită pentru instanțele de container de la care se poate porni și până la cât se poate ajunge, într-o încercare de a gestiona eficient resursele financiare.
Pentru a evita mai departe situații care vă încetinesc funcționarea serviciilor, serviciile cloud Google vă oferă posibilitatea alocării resurselor dinamice. Mai exact, Cloud Run vă susține aplicațiile indiferent de numărul de cereri sau trafic, garantând acest ajutor sub forma flexibilă pay-as-you-use.
Cui îi este dedicat Cloud Run? Comparație Cloud Run vs. Google Kubernetes Engine vs. Compute Engine
Cloud Run: Administrare, monitorizare, costuri
Cloud Run este o platformă gestionată fără server care vă ajută să rulați aplicații scalabile containerizate. Puteți opta pentru limbajul de programare preferat, orice sistem de librării sau chiar propriile fișiere binare. Se integrează ușr cu alte servicii cu ecosistem container.
Cloud Run taxează doar resursele folosite, aproximând la cea mai apropiată sută de milisecunde. În plus, fiecare dintre aceste resurse au un prag până la care serviciile sunt complet gratuite. Pentru a afla mai multe detalii despre prețurile pentru Cloud Run, consultați specialiștii FOTC.
Google Kubernetes Engine
Google Kubernetes Engine (GKE), disponibil pe Google Cloud Platform, este un serviciu care orchestrează containerele în clustere și node-uri, scurtând procesul de adaptare a aplicațiilor la cerințele de infrastructură. GKE susține productivtatea programatorilor cu șabloane pre-construite și instrumente integrate care susțin la rândul lor dezvoltarea de noi aplicații. Simplifică operațiunile cu funcții precum auto-scalare, auto-upgrade sau auto-reparare.
Dacă nu sunteți convinși care este cea mai bună soluție pentru produsul dvs., vă rugăm să ne contactați. Arhitectul nostru certificat Cloud Architect vă va sprijini în analiza și selectarea tehnologiei potrivite.
Citiți și:
- Kubernetes vs. Docker Swarm – compararea platformelor de orchestrație
- Kubernetes. Ce este și cum să începeți?
Google Compute Engine
Google Compute Engine, de asemenea parte a GCP, este responsabil de livrarea mașinilor virtuale (virtual machines) în infrastructura globală Google. GCE este o soluție ideală pe piața cloudurilor publice, oferind stabilitate, prețuri competitve, backup și măsuri de securitate. Cele mai comune și optimizate utilizări ale Google compute engine sunt mașinile virtuale, procesarea datelor genomice sau BYOL (bring your own license images).
Serviciile interconectate Google Cloud Platform
Compute și Serverless: puterea de calcul a Google
Google Cloud Platform oferă aproape 200 de servicii cloud gestionate, inclusiv mașini virtuale și platforme de dezvoltare (Compute & Serverless). Acestea sunt servicii care oferă acces la puterea de calcul și specificațiile aproape nelimitate ale Google, a căror configurație în modelul on-premise ar fi foarte costisitoare.
Serviciile de calcul și servere care se pot contracta indivudual testa în combinații includ:
- Compute Engine – un serviciu de mașină virtuală în modelul Infrastructure as a Service,
- App Engine – o platformă de dezvoltare pentru scrierea și implementarea codului, cu procese automate de servicii de infrastructură,
- Google Kubernetes Engine – Kubernetes în cloud, adică orchestrare de containere și clustere,
- Cloud Run – un serviciu fără server dedicat creării și dezvoltării de aplicații în containere,
- Cloud Functions – un serviciu în modelul Function as a Service care vă permite să publicați, să apelați și să executați un cod de funcție ca răspuns la un anumit eveniment.
Cât timp salvează implementarea aplicațiilor în containere cu Cloud Run?
Cum se creează o aplicație web cu ajutorul Cloud Run – Tutorial
În următorul tutorial vă arătăm cum să creați o aplicație simplă Hello World, să o împachetați într-o imagine de container și apoi să implementați imaginea în Cloud Run. Sunt acceptate toate limbajele de programare care pot fi rulate într-un container.
Pe scurt: Application.py → Container → Cloud Run
Înainte de a începe
1. Conectați-vă la consola Google Cloud Platform – console.cloud.google.com.
2. Asigurați-vă că plățile din proiectul dvs. sunt activate (fila Facturare).
3. Instalați și inițializați SDK-ul Cloud.
Crearea unei aplicații Hello World
1. Creați un director și navigați la el.
mkdir helloworld
cd helloworld
2. Creați fișierul main.py și inserați următorul conținut în el:
import os
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
name = os.environ.get("NAME", "World")
return "Hello {}!".format(name)
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
Codul de mai sus pornește un server web simplu Gunicorn cu o aplicație care returnează textul „Hello World” după primirea cererii HTTP. Portul pe care îl ascultă aplicația este definit de o variabilă de mediu sau este 8080.
3. Apoi, creați un fișier requirements.txt, în care introduceți dependențele (modulele) necesare pentru a rula aplicația. Următorul este conținutul fișierului:
Flask==2.0.1
gunicorn==20.1.0
4. Dockerfile este un fișier care definește un container, printre altele, ce ar trebui să se întâmple după lansarea acestuia. În acest caz, porniți serverul web Gunicorn, care ascultă pe portul definit de variabila de mediu PORT.
Imaginea Python oficială este folosită ca imagine de bază – https://hub.docker.com/_/python
FROM python:3.9-slim
Următoarea directivă permite jurnalelor Python să apară imediat în jurnalele Knative:
ENV PYTHONUNBUFFERED True
Utilizați această funcție care copiază codul local în imaginea containerului:
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./
Instalarea dependențelor de producție se face folosind:
RUN pip install --no-cache-dir -r requirements.txt
Serverul web Gunicorn este lansat în timpul pornirii containerului.
Pentru mediile de rulare cu un procesor multi-core, este o idee bună să creșteți numărul de lucrători (gunicorn) la o valoare egală cu numărul de nuclee. Timeout pentru lucrători este setat la 0 pentru a permite Cloud Run să scaleze instanța:
CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
5. Apoi adăugați un fișier .dockerignore pentru a exclude copierea anumitor fișiere. Conținutul fișierului:
Dockerfile
README.md
*.pyc
*.pyo
*.pyd
__pycache__
.pytest_cache
Metoda 1: Implementați aplicația în Cloud Run dintr-un mediu local
Pentru a implementa serviciul Cloud Run, trebuie să aveți permisiunile corespunzătoare pentru proiectul GCP – „Proprietar” sau „Editor”.
1. În directorul aplicației, introduceți următoarea comandă:
gcloud run deploy
2. Dacă vi se solicită să activați API-ul, introduceți y pentru al rula.
3. Când vi se solicită locația codului sursă, apăsați Enter pentru a implementa folderul curent.
4. Când vi se solicită numele serviciului, apăsați Enter pentru a accepta numele implicit helloworld.
5. Dacă vi se solicită să activați API-ul Artifact Registry, apăsați pur și simplu y.
6. Când vi se solicită o regiune, alegeți un nume de locație (de exemplu, europe-central2). Iată o listă a regiunilor Cloud Run.
7. Când sunteți întrebat despre apelurile neautentificate, răspundeți y. Datorită acestui lucru, oricine cunoaște adresa URL a serviciului va putea ajunge la acesta.
8. Apoi așteptați un timp pentru finalizarea implementării. Dacă reușește, linia de comandă va afișa adresa URL a serviciului.
9. Verificați dacă serviciul rulează efectiv lipind adresa URL returnată în browser.
10. Dacă ați ajuns în acest punct, felicitări! Tocmai ați implementat o imagine de container din sursă în Cloud Run. Cloud Run crește automat serviciul odată cu creșterea cererii, adică adaugă mai multe instanțe. Când sarcina scade, numărul de instanțe este și el redus, astfel încât nu veți plăti în plus pentru serviciu.
Metoda 2: Implementarea în consolă din registrul containerului
În Cloud Run, aplicațiile pot fi, de asemenea, implementate diferit din interfața grafică a consolei. Ca sursă a codului, puteți alege o imagine, pregătită anterior și trimisă la depozit (Cloud Artifacts Registry sau Cloud Container Registry) sau puteți selecta depozitul de cod sursă. Mai jos este o scurtă instrucțiune despre cum să implementați folosind depozitul de imagini:
1. Navigați la folderul cu aplicația Hello World pe care ați pregătit-o mai devreme.
2. Construiți imaginea introducând comanda docker build.
După ce imaginea este construită corect, ar trebui să apară următorul mesaj:
Successfully built [ID obrazu]
În cazul tutorialului nostru este:
Successfully built ad890e53825e
3. Merită să verificați dacă imaginea pornește corect local. Pentru a face acest lucru, comanda:
docker run -p 8080 -e PORT=8080 [ID obrazu]
După ce mergeți în browser, la adresa localhost după portul definit anterior (în acest caz 127.0.0.1:8080), ar trebui să vedeți efectul implementării:
4. Următorul pas este să etichetați imaginea astfel încât să poată fi trimisă la registrul containerului:
docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/IMAGE
În cazul descris în tutorial, comanda arată astfel:
docker tag ad890e53825e eu.gcr.io/preemptible-vm-instances/helloworld-2
5. Apoi trimiteți imaginea la registrul de containere:
docker push eu.gcr.io/preemptible-vm-instances/helloworld-2
Dacă acțiunea are succes, terminalul ar trebui să vadă o astfel de vizualizare:
Pentru a verifica dacă imaginea este de fapt în depozit, trebuie doar să introduceți:
gcloud container images list-tags eu.gcr.io/preemptible-vm-instances/helloworld-2
Comanda trebuie să fie modificată cu regiunea în care serviciul se execută, numele proiectului și numele imaginii.
Terminalul ar trebui să returneze valorile:
DIGEST: 44682cb07278
TAGS: latest
6. Dacă aveți deja o imagine în registry, tot ce rămâne de făcut este să mergeți la consola grafică și să implementați containerul.
După ce accesați consola, în fila Cloud Run, faceți clic pe Creare serviciu.
7. În panoul de configurare, faceți clic pe Selectare.
… și selectați imaginea containerului.
8. Apoi selectați regiunea în care urmează să fie implementate serviciile:
9. Următorul pas este selectarea procesorului. Indicați dacă procesorul trebuie alocat numai în timpul interogării sau întotdeauna. Dacă vreți să plătiți doar pentru consumul efectiv, prima variantă este cea recomandată.
Definiți și valorile scalării automate – numărul minim și maxim de instanțe. Dacă setați limita minimă de 1 (sau mai mare), veți plăti pentru serviciu chiar și atunci când nu este utilizat, dar serviciul va porni mai repede omitând pornirea la rece. Dacă nu doriți să plătiți pentru un serviciu neutilizat, setați limita inferioară de 0.
10. Definiți dacă traficul către serviciu urmează să fie autentificat și dacă este permis traficul intern (prin rețea VPS) sau traficul public.
11. Faceți clic pe Creare și așteptați să pornească serviciul.
12. Dacă afișajul arată similar cu captura de ecran de mai jos, înseamnă că serviciul este activ.
Puteți verifica funcționarea acestuia accesând adresa URL generată. În exemplul tutorialului, acesta este https://helloworld-2-4xrlbe3dfq-lm.a.run.app.
13. Aplicația a fost implementată cu succes pe Google Cloud Run. În pasul următor, puteți configura implementarea continuă pentru Cloud Run pentru a vă automatiza implementările. De asemenea, puteți gestiona traficul dintre versiuni pentru a efectua testarea A/B. Pe lângă gestionarea interogărilor HTTPS, puteți defini evenimente care vor declanșa imaginea – în prezent există peste 90 de evenimente disponibile din diverse servicii GCP.
Care sunt costurile serviciului Cloud Run?
Serviciul este facturat pe măsură ce îl utilizați, cost pe secundă. Costurile includ CPU, memorie, numărul de interogări și utilizarea rețelei. Serviciul are și o limită gratuită, care poate fi reînnoită lunară.
CPU | Memorie | Interogări | |
Cost | 0,00002400 USD pe secundă vCPU | 0,00000250 USD per GB pe secundă | 0,40 USD la un milion de interogări |
Gratuit (limita lunară) | 180 000 secunde vCPU | 360 000 GB pe secundă | 2 milioane interogări |
Pentru a obține o estimare exactă, puteți utiliza calculatorul platformei Google Cloud.
Dacă doriți să verificați capabilitățile Cloud Run sau să testați alte servicii GCP, nu ezitați să ne contactați. În calitate de partener oficial Google Cloud, avem în echipă ingineri și arhitecți certificați care vă vor însoți în fiecare etapă a aventurii în cloud.
În plus, FOTC vă oferă un voucher de 500 USD valabil timp de un an pe care îl puteți utiliza pentru orice serviciu Google Cloud Platform. În plus, veți avea și oportunitatea de a acoperi parte dintre costurile de întreținere a infrastructurii în procesul de migrare și veți putea beneficia de alte reduceri pentru o cooperare pe termen lung.