{"id":50567,"date":"2021-11-18T12:06:20","date_gmt":"2021-11-18T11:06:20","guid":{"rendered":"https:\/\/fotc.com\/?p=50567"},"modified":"2022-05-16T08:48:19","modified_gmt":"2022-05-16T06:48:19","slug":"cloud-run-implementare-aplicatiilor-cloud-google","status":"publish","type":"post","link":"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/","title":{"rendered":"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google"},"content":{"rendered":"\n<div class=\"wp-block-yoast-seo-table-of-contents yoast-table-of-contents collapsed\"><h2>   Cuprins   <\/h2><ul><li><a href=\"#h-ce-este-cloud-run\" data-level=\"2\">Ce este Cloud Run? <\/a><\/li><li><a href=\"#h-ce-sunt-serviciile-serverless\" data-level=\"2\"> Ce sunt serviciile serverless? <\/a><\/li><li><a href=\"#h-cloud-run-din-perspectiva-programatorilor\" data-level=\"2\"> Cloud Run din perspectiva programatorilor <\/a><ul><li><a href=\"#h-limbaje-de-programare-disponibile-n-cloud-run\" data-level=\"3\"> Limbaje de programare disponibile \u00een Cloud Run <\/a><\/li><\/ul><\/li><li><a href=\"#h-cloud-run-din-perspectiva-managementului\" data-level=\"2\"> Cloud Run din perspectiva managementului <\/a><\/li><li><a href=\"#h-func-ionalit-i-cloud-run\" data-level=\"2\"> Func\u021bionalit\u0103\u021bi Cloud Run <\/a><\/li><li><a href=\"#h-cloud-run-i-scalabilitate-nelimitat-a-serviciilor\" data-level=\"2\"> Cloud Run \u0219i scalabilitate nelimitat\u0103 a serviciilor <\/a><\/li><li><a href=\"#h-cui-i-este-dedicat-cloud-run-compara-ie-cloud-run-vs-google-kubernetes-engine-vs-compute-engine\" data-level=\"2\"> Cui \u00eei este dedicat Cloud Run? Compara\u021bie Cloud Run vs. Google Kubernetes Engine vs. Compute Engine  <\/a><ul><li><a href=\"#h-cloud-run-administrare-monitorizare-costuri\" data-level=\"3\"> Cloud Run: Administrare, monitorizare, costuri <\/a><\/li><li><a href=\"#h-google-kubernetes-engine\" data-level=\"3\"> Google Kubernetes Engine <\/a><\/li><li><a href=\"#h-google-compute-engine\" data-level=\"3\"> Google Compute Engine <\/a><\/li><\/ul><\/li><li><a href=\"#h-serviciile-interconectate-google-cloud-platform\" data-level=\"2\"> Serviciile interconectate Google Cloud Platform <\/a><\/li><li><a href=\"#h-compute-i-serverless-puterea-de-calcul-a-google\" data-level=\"2\"> Compute \u0219i Serverless: puterea de calcul a Google <\/a><\/li><li><a href=\"#h-c-t-timp-salveaz-implementarea-aplica-iilor-n-containere-cu-cloud-run\" data-level=\"2\">  C\u00e2t timp salveaz\u0103 implementarea aplica\u021biilor \u00een containere cu Cloud Run?  <\/a><ul><li><a href=\"#h-cum-se-creeaz-o-aplica-ie-web-cu-ajutorul-cloud-run-tutorial\" data-level=\"3\"> Cum se creeaz\u0103 o aplica\u021bie web cu ajutorul Cloud Run \u2013 Tutorial <\/a><ul><li><a href=\"#h-nainte-de-a-ncepe\" data-level=\"4\"> \u00cenainte de a \u00eencepe <\/a><\/li><li><a href=\"#h-crearea-unei-aplica-ii-hello-world\" data-level=\"4\"> Crearea unei aplica\u021bii Hello World <\/a><\/li><\/ul><\/li><li><a href=\"#h-metoda-1-implementa-i-aplica-ia-n-cloud-run-dintr-un-mediu-local\" data-level=\"3\"> Metoda 1: Implementa\u021bi aplica\u021bia \u00een Cloud Run dintr-un mediu local <\/a><\/li><li><a href=\"#h-metoda-2-implementarea-n-consol-din-registrul-containerului\" data-level=\"3\"> Metoda 2: Implementarea \u00een consol\u0103 din registrul containerului <\/a><\/li><\/ul><\/li><li><a href=\"#h-care-sunt-costurile-serviciului-cloud-run\" data-level=\"2\"> Care sunt costurile serviciului Cloud Run? <\/a><\/li><\/ul><\/div>\n\n\n\n<p>Cloudul preia o parte semnificativ\u0103 din \u00eenc\u0103rcarea echipelor tehnice \u00een cadrul unei companii. Mult mai scalabil dec\u00e2t o infrastructur\u0103 tradi\u021bional\u0103 de IT, arhitecturile cloud sunt create pentru a fluidiza performan\u021ba \u00eentr-o companie, sus\u021bin\u00e2nd dezvoltarea \u0219i cre\u0219terea. Printre cele mai populare astfel de servicii \u2013 \u00een r\u00e2ndul companiilor, dar \u0219i al speciali\u0219tilor freelance \u2013 se num\u0103r\u0103 cele din gama Compute &amp; Serverless, puterea ma\u0219inilor virtuale \u0219i serviciile de tip \u201ccontainer\u201d.<\/p>\n\n\n\n<h2 id=\"h-ce-este-cloud-run\">Ce este Cloud Run? <\/h2>\n\n\n\n<p><a href=\"https:\/\/cloud.google.com\/run\/\" class=\"ek-link\">Google Cloud Run<\/a> este o solu\u021bie nou\u0103 pentru crearea \u0219i rularea aplica\u021biilor f\u0103r\u0103 server, bazate pe containere Docker. Platforma vine ca o alternativ\u0103 la platforma open source de orchestrare a containerelor Kubernetes. Practic, Google Cloud Run este o platform\u0103 care preia o imagine de container Docker \u0219i o ruleaz\u0103 ca un serviciu HTTP cu scalare automat\u0103. Un mare plus al Cloud Run \u00een fa\u021ba platformelor originale f\u0103r\u0103 server (serverless) este op\u021biunea de a rula aplica\u021bii arbitrare \u00een cloud care deservesc mai multe puncte finale.<\/p>\n\n\n\n<p>Cloud Run este, altfel spus, o platform\u0103 cloud bazat\u0103 pe Knative, care v\u0103 permite s\u0103 construi\u021bi \u0219i s\u0103 implementa\u021bi rapid aplica\u021bii containerizate. Este f\u0103r\u0103 server, ceea ce \u00eenseamn\u0103 c\u0103 utilizatorul nu trebuie s\u0103 supravegheze nicio component\u0103 a infrastructurii &#8211; \u00eentre\u021binerea fizic\u0103 a ma\u0219inii, actualiz\u0103rile software, echilibrarea sarcinii sau scalarea. Se concentreaz\u0103 doar pe scrierea codului \u00een orice limbaj de programare cunoa\u0219te, folosind \u201dlibr\u0103riile\u201d preferate sau propriile fi\u0219iere binare.<\/p>\n\n\n\n<h2 id=\"h-ce-sunt-serviciile-serverless\"> Ce sunt serviciile serverless? <\/h2>\n\n\n\n<p>Sunt un model de arhitectur\u0103 \u00een cloud care permite developerilor s\u0103 construiasc\u0103 \u0219i s\u0103 ruleze aplica\u021bii f\u0103r\u0103 server. Mai departe, un provider de cloud preia serviciile de rutin\u0103 precum provizionare, men\u021binere \u0219i scalarea infrastructurii de server. Astfel, developerii se ocup\u0103 doar de construirea efectiv\u0103 a aplica\u021biilor.<\/p>\n\n\n\n<p>Serverless ofer\u0103 o serie de avantaje companiilor fa\u021b\u0103 de infrastructura tradi\u021bional\u0103 bazat\u0103 pe cloud sau pe servere. Pentru dezvoltatori, serverless se traduce \u00een scalabilitate mai mare, mai mult\u0103 flexbilitate, un timp mai rapid pentru lans\u0103rile de aplica\u021bii \u0219i actualiz\u0103rile acestora, toate aceste beneficii \u00een timp ce costurile sunt \u021binute sub control. Se elimin\u0103 astfel grijile cu privire la func\u021bionarea, furnizarea \u0219i gestionarea serverelor. Totu\u0219i, infrastructura serverless nu este o op\u021biune magic\u0103 pentru to\u021bi dezvoltatorii de aplica\u021bii web.<\/p>\n\n\n\n<h2 id=\"h-cloud-run-din-perspectiva-programatorilor\"> Cloud Run din perspectiva programatorilor <\/h2>\n\n\n\n<p>Programatorii familiariza\u021bi deja cu Docker sau solu\u021bii tradi\u021bionale PaaS se vor acomoda rapid cu Cloud Run. Misiunea unui programator este de a livra rapid aplica\u021bii lucrate \u00een cloud (aplica\u021bii web, API-uri de mobil etc.). \u00cens\u0103 alegerea unei solu\u021bii cloud potrivite vine adesea cu provoc\u0103ri.<\/p>\n\n\n\n<p>Pe de-o parte, pute\u021bi alege s\u0103 gestiona\u021bi personal serverele. Dar aceast\u0103 rut\u0103 presupune \u0219i provizionarea \u0219i configurarea acestora, pe l\u00e2ng\u0103 preocup\u0103rile legate de scalare pe m\u0103sur\u0103 ce tiparurile de trafic se schimb\u0103. \u00cen plus, odat\u0103 cu supra-provizionarea resurselor, se pot ivi probleme de costuri ridicate. <\/p>\n\n\n\n<p>Pe de alt\u0103 parte, exist\u0103 solu\u021bii serverless care pot \u0219i ele limita limbajele de programare \u0219i libr\u0103riile pe care le pute\u021bi folosi sau pot pretinde schimb\u0103ri de cod \u0219i pot \u00eengreuna mutarea aplica\u021biilor \u00een sine.<\/p>\n\n\n\n<p>Cloud Run vine ca o solu\u021bie de mijloc care acoper\u0103 punctele forte ale celor dou\u0103 tipuri de infrastructur\u0103. Pute\u021bi folosi Cloud Run pentru a lansa orice container HTTP. V\u0103 permite astfel s\u0103 scrie\u021bi cod \u00een limbajul preferat, cu framework-ul sau libr\u0103ria binar\u0103 potrivit\u0103 nevoilor voastre. Pute\u021bi mai departe specifica limbajul, dependen\u021bele \u0219i scriptul \u00eentr-un Dockerfile \u0219i, cu o singur\u0103 comand\u0103, s\u0103 le urca\u021bi \u00eentr-un container \u0219i s\u0103 finaliza\u021bi procesul. Aplica\u021bia este gata lansat\u0103 \u0219i ruleaz\u0103 exclusiv din cloud.<\/p>\n\n\n\n<h3 id=\"h-limbaje-de-programare-disponibile-n-cloud-run\"> Limbaje de programare disponibile \u00een Cloud Run <\/h3>\n\n\n\n<p>Optarea pentru un anumit limbaj de programare nu va face nicio diferen\u021b\u0103 \u00een crearea \u0219i rularea aplica\u021biilor companiei cu Cloud Run. Platforma accept\u0103 toate limbajele de programare care pot fi rulate \u00eentr-un container. \u00cen aceste condi\u021bii, recomandarea este s\u0103 opta\u021bi pentru un framework cu care echipa este deja familiarizat.<\/p>\n\n\n\n<h2 id=\"h-cloud-run-din-perspectiva-managementului\"> Cloud Run din perspectiva managementului <\/h2>\n\n\n\n<p>Unul dintre punctele forte ale Google Cloud Run este arhitectura focusat\u0103 pe containere, al\u0103turi de dezvoltarea \u0219i lansarea de aplica\u021bii. \u00cempreun\u0103 cu caracteristica serverless, produsul Google devine o alegere c\u00e2\u0219tig\u0103toare pentru orice project manager.<\/p>\n\n\n\n<p>\u00cen plus, Cloud Run u\u0219ureaz\u0103 munca developerilor care construiesc servere web statless \u0219i container-based, facilit\u00e2ndu-le tranzi\u021bia c\u0103tre o tehnologie serverless flexibil\u0103. F\u0103r\u0103 a fi nevoie s\u0103 dimensiona\u021bi serverele container, Cloud Run v\u0103 va oferi \u0219i o rat\u0103 de recuperare a investi\u021biei mai bun\u0103.<\/p>\n\n\n\n<h2 id=\"h-func-ionalit-i-cloud-run\"> Func\u021bionalit\u0103\u021bi Cloud Run <\/h2>\n\n\n\n<ul><li><strong>Include orice tehnologie<\/strong>. Deoarece serviciul func\u021bioneaz\u0103 pe baz\u0103 de containere, v\u0103 permite s\u0103 crea\u021bi coduri de aplica\u021bie folosind orice limbaj de programare (inclusiv Go, Python, Java, Ruby sau Node.js), libr\u0103rii sau fi\u0219iere binare.<\/li><li><strong>Folosirea tuturor posibilit\u0103\u021bilor containerelor<\/strong>. Cloud Run poate desc\u0103rca orice imagini de container \u0219i se integreaz\u0103 u\u0219or cu tehnologii precum Cloud Build, Artifact Registry \u0219i Docker.<\/li><li><strong>Integrare cu alte servicii cloud<\/strong>. Deoarece Cloud Run este un element al Google Cloud Platform, este relativ u\u0219or s\u0103 crea\u021bi un mediu integrat folosind mai multe servicii GCP.<\/li><li><strong>Nu se limiteaz\u0103 la un singur serviciu cloud<\/strong>. Serviciul se bazeaz\u0103 pe tehnologia open source Knative \u0219i pe containere, datorit\u0103 c\u0103rora resursele sunt portabile. Astfel, se evit\u0103 dependen\u021ba de un singur furnizor de cloud (cloud lock-in).<\/li><li><strong>Serviciu integrat<\/strong>. Odat\u0103 configurat, nu necesit\u0103 actualiz\u0103ri repetate pentru a gestiona corect mediul aplica\u021biei.<\/li><li><strong>Scalare automat\u0103 instantanee<\/strong>. \u00cen situa\u021bii de trafic crescut, serviciul este scalat automat pentru a asigura o disponibilitate ridicat\u0103, iar c\u00e2nd traficul scade, se reduce num\u0103rul de interog\u0103ri de func\u021bionare, asigur\u00e2nd astfel costuri propor\u021bionale consumului.<\/li><li><strong>Stabilitate datorit\u0103 redundan\u021bei<\/strong>. Resursele care ruleaz\u0103 \u00een Cloud Run \u00een modelul regional sunt transferate constant \u00eentre coresponden\u021bi pentru a asigura c\u0103 datele nu se vor pierde chiar \u0219i \u00een cazul unei e\u0219ecuri a camerei serverului Google Cloud.&nbsp;<\/li><li><strong>Securitate<\/strong>. Doar imaginile containerului autorizat pot fi implementate cu autorizare binar\u0103. Resursele ruleaz\u0103 \u00een medii izolate, cu identit\u0103\u021bi \u0219i niveluri de acces specifice. Pute\u021bi utiliza propria cheie criptat\u0103 pentru securitate \u0219i pute\u021bi gestiona datele de acces prin serviciul Secret Manager.<\/li><li><strong>Control si monitorizare.<\/strong> Serviciul este integrat cu instrumentele Cloud Monitoring, Cloud Logging, Cloud Trace \u0219i Error Reporting pentru a asigura rularea aplica\u021biei. Nivelul de utilizare a serviciului poate fi monitorizat \u00een GUI Metrics, \u00eempreun\u0103 cu jurnalele din containere. \u00cen plus, Cloud Run are o func\u021bionalitate \u00eencorporat\u0103 care v\u0103 permite s\u0103 restaura\u021bi rapid versiunea anterioar\u0103 a containerului (rollback).<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Cloud Run in a minute\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/lzQNjZIGKaM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 id=\"h-cloud-run-i-scalabilitate-nelimitat-a-serviciilor\"> Cloud Run \u0219i scalabilitate nelimitat\u0103 a serviciilor <\/h2>\n\n\n\n<p>\u00cen cloud computing, scalarea este un proces automatizat care adaug\u0103 sau elimin\u0103 servicii, spa\u021biu de stocare, func\u021bii de re\u021bea pentru a acomoda volumul de lucru sau cereri. Practic, prin scalabilitate, se asigur\u0103 rularea aplica\u021biei sau a serviciului indiferent de varia\u021ba num\u0103rului de utilizatori. Scalarea se refer\u0103 \u00een general la ad\u0103ugarea sau reducerea num\u0103rului de servere sau instan\u021be active valorificate \u00een raport cu cerin\u021bele de resurse.<\/p>\n\n\n\n<p>Cloud Run asigur\u0103 faptul c\u0103, pe m\u0103sur\u0103 ce activitatea companiei se dilat\u0103 sau contract\u0103, echipamentele soft IT \u021bin pasul cu aceste trenduri. \u00cen Cloud Run, fiecare revizie este automat scalat\u0103 la num\u0103rul de instan\u021be de container necesare pentru a face fa\u021b\u0103 cererilor care vin. \u00cen circumstan\u021bele \u00een care nu se \u00eenregistreaz\u0103 trafic, instan\u021bele sunt scalate automat la zero. Pute\u021bi seta totu\u0219i un num\u0103r limit\u0103 pentru instan\u021bele de container de la care se poate porni \u0219i p\u00e2n\u0103 la c\u00e2t se poate ajunge, \u00eentr-o \u00eencercare de a gestiona eficient resursele financiare.<\/p>\n\n\n\n<p>Pentru a evita mai departe situa\u021bii care v\u0103 \u00eencetinesc func\u021bionarea serviciilor, serviciile cloud Google v\u0103 ofer\u0103 posibilitatea aloc\u0103rii resurselor dinamice. Mai exact, Cloud Run v\u0103 sus\u021bine aplica\u021biile indiferent de num\u0103rul de cereri sau trafic, garant\u00e2nd acest ajutor sub forma flexibil\u0103 pay-as-you-use.<\/p>\n\n\n\n<h2 id=\"h-cui-i-este-dedicat-cloud-run-compara-ie-cloud-run-vs-google-kubernetes-engine-vs-compute-engine\"> Cui \u00eei este dedicat Cloud Run? Compara\u021bie Cloud Run vs. Google Kubernetes Engine vs. Compute Engine  <\/h2>\n\n\n\n<h3 id=\"h-cloud-run-administrare-monitorizare-costuri\"> Cloud Run: Administrare, monitorizare, costuri <\/h3>\n\n\n\n<p>Cloud Run este o platform\u0103 gestionat\u0103 f\u0103r\u0103 server care v\u0103 ajut\u0103 s\u0103 rula\u021bi aplica\u021bii scalabile containerizate. Pute\u021bi opta pentru limbajul de programare preferat, orice sistem de libr\u0103rii sau chiar propriile fi\u0219iere binare. Se integreaz\u0103 u\u0219r cu alte servicii cu ecosistem container.<\/p>\n\n\n\n<p>Cloud Run taxeaz\u0103 doar resursele folosite, aproxim\u00e2nd la cea mai apropiat\u0103 sut\u0103 de milisecunde. \u00cen plus, fiecare dintre aceste resurse au un prag p\u00e2n\u0103 la care serviciile sunt complet gratuite. Pentru a afla mai multe detalii despre pre\u021burile pentru Cloud Run, <a href=\"https:\/\/fotc.com\/ro\/contact\/\" class=\"ek-link\">consulta\u021bi speciali\u0219tii FOTC<\/a>.<\/p>\n\n\n\n<h3 id=\"h-google-kubernetes-engine\"> Google Kubernetes Engine <\/h3>\n\n\n\n<p>Google Kubernetes Engine (GKE), disponibil pe Google Cloud Platform, este un serviciu care orchestreaz\u0103 containerele \u00een clustere \u0219i node-uri, scurt\u00e2nd procesul de adaptare a aplica\u021biilor la cerin\u021bele de infrastructur\u0103. GKE sus\u021bine productivtatea programatorilor cu \u0219abloane pre-construite \u0219i instrumente integrate care sus\u021bin la r\u00e2ndul lor dezvoltarea de noi aplica\u021bii. Simplific\u0103 opera\u021biunile cu func\u021bii precum auto-scalare, auto-upgrade sau auto-reparare. <\/p>\n\n\n\n<p>Dac\u0103 nu sunte\u021bi convin\u0219i care este cea mai bun\u0103 solu\u021bie pentru produsul dvs.,&nbsp;v\u0103 rug\u0103m s\u0103 ne contacta\u021bi. Arhitectul nostru certificat&nbsp;<a href=\"https:\/\/fotc.com\/ro\/blog\/cine-este-cloud-architect\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">Cloud Architect<\/a>&nbsp;v\u0103 va sprijini \u00een analiza \u0219i selectarea tehnologiei potrivite.<\/p>\n\n\n\n<p>Citi\u021bi \u0219i:<\/p>\n\n\n\n<ul><li><a href=\"https:\/\/fotc.com\/ro\/blog\/kubernetes-docker-swarm\/\" class=\"ek-link\">Kubernetes vs. Docker Swarm \u2013 compararea platformelor de orchestra\u021bie<\/a><\/li><li><a href=\"https:\/\/fotc.com\/ro\/blog\/kubernetes-tutorial\/\" class=\"ek-link\">Kubernetes. Ce este \u0219i cum s\u0103 \u00eencepe\u021bi?<\/a><\/li><\/ul>\n\n\n\n<h3 id=\"h-google-compute-engine\"> Google Compute Engine <\/h3>\n\n\n\n<p>Google Compute Engine, de asemenea parte a GCP, este responsabil de livrarea ma\u0219inilor virtuale (virtual machines) \u00een infrastructura global\u0103 Google. GCE este o solu\u021bie ideal\u0103 pe pia\u021ba cloudurilor publice, oferind stabilitate, pre\u021buri competitve, backup \u0219i m\u0103suri de securitate. Cele mai comune \u0219i optimizate utiliz\u0103ri ale Google compute engine sunt ma\u0219inile virtuale, procesarea datelor genomice sau BYOL (bring your own license images).<\/p>\n\n\n\n<h2 id=\"h-serviciile-interconectate-google-cloud-platform\"> Serviciile interconectate Google Cloud Platform <\/h2>\n\n\n\n<h2 id=\"h-compute-i-serverless-puterea-de-calcul-a-google\"> Compute \u0219i Serverless: puterea de calcul a Google <\/h2>\n\n\n\n<p><a href=\"https:\/\/fotc.com\/ro\/google-cloud-platform\/\" class=\"ek-link\">Google Cloud Platform<\/a> ofer\u0103 aproape 200 de servicii cloud gestionate, inclusiv ma\u0219ini virtuale \u0219i platforme de dezvoltare (Compute &amp; Serverless). Acestea sunt servicii care ofer\u0103 acces la puterea de calcul \u0219i specifica\u021biile aproape nelimitate ale Google, a c\u0103ror configura\u021bie \u00een modelul on-premise ar fi foarte costisitoare.<\/p>\n\n\n\n<p>Serviciile de calcul \u0219i servere care se pot contracta indivudual testa \u00een combina\u021bii includ:<\/p>\n\n\n\n<ul><li>Compute Engine &#8211; un serviciu de ma\u0219in\u0103 virtual\u0103 \u00een modelul Infrastructure as a Service,<\/li><li>App Engine &#8211; o platform\u0103 de dezvoltare pentru scrierea \u0219i implementarea codului, cu procese automate de servicii de infrastructur\u0103,<\/li><li>Google Kubernetes Engine &#8211; Kubernetes \u00een cloud, adic\u0103 orchestrare de containere \u0219i clustere,<\/li><li>Cloud Run &#8211; un serviciu f\u0103r\u0103 server dedicat cre\u0103rii \u0219i dezvolt\u0103rii de aplica\u021bii \u00een containere,<\/li><li>Cloud Functions &#8211; un serviciu \u00een modelul Function as a Service care v\u0103 permite s\u0103 publica\u021bi, s\u0103 apela\u021bi \u0219i s\u0103 executa\u021bi un cod de func\u021bie ca r\u0103spuns la un anumit eveniment.<\/li><\/ul>\n\n\n\n<h2 id=\"h-c-t-timp-salveaz-implementarea-aplica-iilor-n-containere-cu-cloud-run\">  C\u00e2t timp salveaz\u0103 implementarea aplica\u021biilor \u00een containere cu Cloud Run?  <\/h2>\n\n\n\n<h3 id=\"h-cum-se-creeaz-o-aplica-ie-web-cu-ajutorul-cloud-run-tutorial\"> Cum se creeaz\u0103 o aplica\u021bie web cu ajutorul Cloud Run \u2013 Tutorial <\/h3>\n\n\n\n<p>\u00cen urm\u0103torul tutorial v\u0103 ar\u0103t\u0103m cum s\u0103 crea\u021bi o aplica\u021bie simpl\u0103 Hello World, s\u0103 o \u00eempacheta\u021bi \u00eentr-o imagine de container \u0219i apoi s\u0103 implementa\u021bi imaginea \u00een Cloud Run. Sunt acceptate toate limbajele de programare care pot fi rulate \u00eentr-un container.<\/p>\n\n\n\n<p>Pe scurt: Application.py \u2192 Container \u2192 Cloud Run<\/p>\n\n\n\n<h4 id=\"h-nainte-de-a-ncepe\"> \u00cenainte de a \u00eencepe <\/h4>\n\n\n\n<p>1. Conecta\u021bi-v\u0103 la consola Google Cloud Platform &#8211; <a href=\"https:\/\/console.cloud.google.com\/\" rel=\"nofollow\">console.cloud.google.com<\/a>.<\/p>\n\n\n\n<p>2. Asigura\u021bi-v\u0103 c\u0103 pl\u0103\u021bile din proiectul dvs. sunt activate (fila Facturare).<\/p>\n\n\n\n<p>3. Instala\u021bi \u0219i ini\u021bializa\u021bi <a href=\"https:\/\/cloud.google.com\/sdk\" class=\"ek-link\">SDK-ul Cloud<\/a>.<\/p>\n\n\n\n<h4 id=\"h-crearea-unei-aplica-ii-hello-world\"> Crearea unei aplica\u021bii Hello World <\/h4>\n\n\n\n<p>1. Crea\u021bi un director \u0219i naviga\u021bi la el.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nmkdir helloworld\ncd helloworld\n<\/pre><\/div>\n\n\n<p>2. Crea\u021bi fi\u0219ierul main.py \u0219i insera\u021bi urm\u0103torul con\u021binut \u00een el:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nimport os\n\nfrom flask import Flask\n\napp = Flask(__name__)\n\n\n@app.route(&quot;\/&quot;)\ndef hello_world():\n    name = os.environ.get(&quot;NAME&quot;, &quot;World&quot;)\n    return &quot;Hello {}!&quot;.format(name)\n\n\nif __name__ == &quot;__main__&quot;:\n    app.run(debug=True, host=&quot;0.0.0.0&quot;, port=int(os.environ.get(&quot;PORT&quot;, 8080)))\n<\/pre><\/div>\n\n\n<p>Codul de mai sus porne\u0219te un server web simplu Gunicorn cu o aplica\u021bie care returneaz\u0103 textul \u201eHello World\u201d dup\u0103 primirea cererii HTTP. Portul pe care \u00eel ascult\u0103 aplica\u021bia este definit de o variabil\u0103 de mediu sau este 8080.<\/p>\n\n\n\n<p>3. Apoi, crea\u021bi un fi\u0219ier<strong> requirements.txt<\/strong>, \u00een care introduce\u021bi dependen\u021bele (modulele) necesare pentru a rula aplica\u021bia. Urm\u0103torul este con\u021binutul fi\u0219ierului:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nFlask==2.0.1\ngunicorn==20.1.0\n<\/pre><\/div>\n\n\n<p>4. Dockerfile este un fi\u0219ier care define\u0219te un container, printre altele, ce ar trebui s\u0103 se \u00eent\u00e2mple dup\u0103 lansarea acestuia. \u00cen acest caz, porni\u021bi serverul web Gunicorn, care ascult\u0103 pe portul definit de variabila de mediu PORT.<\/p>\n\n\n\n<p>Imaginea Python oficial\u0103 este folosit\u0103 ca imagine de baz\u0103 &#8211; <a href=\"https:\/\/hub.docker.com\/_\/python\">https:\/\/hub.docker.com\/_\/python<\/a><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nFROM python:3.9-slim\n<\/pre><\/div>\n\n\n<p>Urm\u0103toarea directiv\u0103 permite jurnalelor Python s\u0103 apar\u0103 imediat \u00een jurnalele Knative:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nENV PYTHONUNBUFFERED True\n<\/pre><\/div>\n\n\n<p>Utiliza\u021bi aceast\u0103 func\u021bie care copiaz\u0103 codul local \u00een imaginea containerului:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nENV APP_HOME \/app\nWORKDIR $APP_HOME\nCOPY . .\/\n<\/pre><\/div>\n\n\n<p>Instalarea dependen\u021belor de produc\u021bie se face folosind:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nRUN pip install --no-cache-dir -r requirements.txt\n<\/pre><\/div>\n\n\n<p>Serverul web Gunicorn este lansat \u00een timpul pornirii containerului.<\/p>\n\n\n\n<p>Pentru mediile de rulare cu un procesor multi-core, este o idee bun\u0103 s\u0103 cre\u0219te\u021bi num\u0103rul de lucr\u0103tori (gunicorn) la o valoare egal\u0103 cu num\u0103rul de nuclee. Timeout pentru lucr\u0103tori este setat la 0 pentru a permite Cloud Run s\u0103 scaleze instan\u021ba:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nCMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app\n<\/pre><\/div>\n\n\n<p>5. Apoi ad\u0103uga\u021bi un fi\u0219ier <strong>.dockerignore<\/strong> pentru a exclude copierea anumitor fi\u0219iere. Con\u021binutul fi\u0219ierului:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nDockerfile\nREADME.md\n*.pyc\n*.pyo\n*.pyd\n__pycache__\n.pytest_cache\n<\/pre><\/div>\n\n\n<h3 id=\"h-metoda-1-implementa-i-aplica-ia-n-cloud-run-dintr-un-mediu-local\"> Metoda 1: Implementa\u021bi aplica\u021bia \u00een Cloud Run dintr-un mediu local <\/h3>\n\n\n\n<p>Pentru a implementa serviciul Cloud Run, trebuie s\u0103 ave\u021bi permisiunile corespunz\u0103toare pentru proiectul GCP &#8211; \u201eProprietar\u201d sau \u201eEditor\u201d.<\/p>\n\n\n\n<p>1. \u00cen directorul aplica\u021biei, introduce\u021bi urm\u0103toarea comand\u0103:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ngcloud run deploy\n<\/pre><\/div>\n\n\n<p>2. Dac\u0103 vi se solicit\u0103 s\u0103 activa\u021bi API-ul, introduce\u021bi <strong>y<\/strong> pentru al rula.<\/p>\n\n\n\n<p>3. C\u00e2nd vi se solicit\u0103 loca\u021bia codului surs\u0103, ap\u0103sa\u021bi <strong>Enter <\/strong>pentru a implementa folderul curent.<\/p>\n\n\n\n<p>4. C\u00e2nd vi se solicit\u0103 numele serviciului, ap\u0103sa\u021bi <strong>Enter<\/strong> pentru a accepta numele implicit helloworld.<\/p>\n\n\n\n<p>5. Dac\u0103 vi se solicit\u0103 s\u0103 activa\u021bi API-ul Artifact Registry, ap\u0103sa\u021bi pur \u0219i simplu<strong> y<\/strong>.<\/p>\n\n\n\n<p>6. C\u00e2nd vi se solicit\u0103 o regiune, alege\u021bi un nume de loca\u021bie (de exemplu, europe-central2). Iat\u0103 o <a href=\"https:\/\/cloud.google.com\/run\/docs\/locations\" rel=\"nofollow\" class=\"ek-link\">list\u0103 a regiunilor Cloud Run<\/a>.<\/p>\n\n\n\n<p>7. C\u00e2nd sunte\u021bi \u00eentrebat despre apelurile neautentificate, r\u0103spunde\u021bi <strong>y<\/strong>. Datorit\u0103 acestui lucru, oricine cunoa\u0219te adresa URL a serviciului va putea ajunge la acesta.<\/p>\n\n\n\n<p>8. Apoi a\u0219tepta\u021bi un timp pentru finalizarea implement\u0103rii. Dac\u0103 reu\u0219e\u0219te, linia de comand\u0103 va afi\u0219a adresa URL a serviciului.<\/p>\n\n\n\n<p>9. Verifica\u021bi dac\u0103 serviciul ruleaz\u0103 efectiv lipind adresa URL returnat\u0103 \u00een browser.<\/p>\n\n\n\n<p>10. Dac\u0103 a\u021bi ajuns \u00een acest punct, felicit\u0103ri! Tocmai a\u021bi implementat o imagine de container din surs\u0103 \u00een Cloud Run. Cloud Run cre\u0219te automat serviciul odat\u0103 cu cre\u0219terea cererii, adic\u0103 adaug\u0103 mai multe instan\u021be. C\u00e2nd sarcina scade, num\u0103rul de instan\u021be este \u0219i el redus, astfel \u00eenc\u00e2t nu ve\u021bi pl\u0103ti \u00een plus pentru serviciu.<\/p>\n\n\n\n<h3 id=\"h-metoda-2-implementarea-n-consol-din-registrul-containerului\"> Metoda 2: Implementarea \u00een consol\u0103 din registrul containerului <\/h3>\n\n\n\n<p>\u00cen Cloud Run, aplica\u021biile pot fi, de asemenea, implementate diferit din interfa\u021ba grafic\u0103 a consolei. Ca surs\u0103 a codului, pute\u021bi alege o imagine, preg\u0103tit\u0103 anterior \u0219i trimis\u0103 la depozit (Cloud Artifacts Registry sau Cloud Container Registry) sau pute\u021bi selecta depozitul de cod surs\u0103. Mai jos este o scurt\u0103 instruc\u021biune despre cum s\u0103 implementa\u021bi folosind depozitul de imagini:<\/p>\n\n\n\n<p>1. Naviga\u021bi la folderul cu aplica\u021bia Hello World pe care a\u021bi preg\u0103tit-o mai devreme.<\/p>\n\n\n\n<p>2. Construi\u021bi imaginea introduc\u00e2nd comanda <strong>docker build<\/strong>.<\/p>\n\n\n\n<p>Dup\u0103 ce imaginea este construit\u0103 corect, ar trebui s\u0103 apar\u0103 urm\u0103torul mesaj:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nSuccessfully built &#91;ID obrazu]\n<\/pre><\/div>\n\n\n<p>\u00cen cazul tutorialului nostru este:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nSuccessfully built ad890e53825e\n<\/pre><\/div>\n\n\n<p>3. Merit\u0103 s\u0103 verifica\u021bi dac\u0103 imaginea porne\u0219te corect local. Pentru a face acest lucru, comanda:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run -p 8080 -e PORT=8080 &#91;ID obrazu]\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/fIiZK3dHhOPPHZojQDwh-ANEY7Mvw8m80zP-Kw7XHMWPmdM1oEsZzGq5PObxOxxhMsmy_QM2HHV2JtCpNTdN61HqwV6xACnsrTDfTcSeQhsdtWjD0gEGnaUNeNR8yQaT71FMkmSh=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>Dup\u0103 ce merge\u021bi \u00een browser, la adresa localhost dup\u0103 portul definit anterior (\u00een acest caz 127.0.0.1:8080), ar trebui s\u0103 vede\u021bi efectul implement\u0103rii:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/PtFDDQoT3g-oBL10JgqO91mgFUPsjmaIaa31153ZDefZnCpdl_ghnUSERAlBb-RDTyA-8PxOcwuE58pjtA8RFvW1mvZrcaoJ_mZRC2P3ualCRWhu3XesMylaDmj2j4pdCyIbMyXF=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>4. Urm\u0103torul pas este s\u0103 eticheta\u021bi imaginea astfel \u00eenc\u00e2t s\u0103 poat\u0103 fi trimis\u0103 la registrul containerului:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker tag SOURCE_IMAGE HOSTNAME\/PROJECT-ID\/IMAGE\n<\/pre><\/div>\n\n\n<p>\u00cen cazul descris \u00een tutorial, comanda arat\u0103 astfel:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker tag ad890e53825e eu.gcr.io\/preemptible-vm-instances\/helloworld-2\n<\/pre><\/div>\n\n\n<p>5. Apoi trimite\u021bi imaginea la registrul de containere:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker push eu.gcr.io\/preemptible-vm-instances\/helloworld-2\n<\/pre><\/div>\n\n\n<p>Dac\u0103 ac\u021biunea are succes, terminalul ar trebui s\u0103 vad\u0103 o astfel de vizualizare:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/SP2sOAXml_Pfv9EhQzX69oseuHtX2naz-CndDxjqYGC8l5ypvOLwYerDGC6sYNFkjnw9k6TWN_fdshCrUOcINITEGVHD6YrqGw5UgoEpfkhpa0wB8oce9JLXNRkRkyOZtRG783XQ=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>Pentru a verifica dac\u0103 imaginea este de fapt \u00een depozit, trebuie doar s\u0103 introduce\u021bi:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ngcloud container images list-tags eu.gcr.io\/preemptible-vm-instances\/helloworld-2\n<\/pre><\/div>\n\n\n<p>Comanda trebuie s\u0103 fie modificat\u0103 cu regiunea \u00een care serviciul se execut\u0103, numele proiectului \u0219i numele imaginii.<\/p>\n\n\n\n<p>Terminalul ar trebui s\u0103 returneze valorile:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nDIGEST: 44682cb07278\nTAGS: latest\n<\/pre><\/div>\n\n\n<p>6. Dac\u0103 ave\u021bi deja o imagine \u00een registry, tot ce r\u0103m\u00e2ne de f\u0103cut este s\u0103 merge\u021bi la consola grafic\u0103 \u0219i s\u0103 implementa\u021bi containerul.<\/p>\n\n\n\n<p>Dup\u0103 ce accesa\u021bi consola, \u00een fila Cloud Run, face\u021bi clic pe Creare serviciu.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img width=\"1003\" height=\"723\" src=\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr.png\" alt=\"\" class=\"wp-image-42307\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr.png 1003w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-300x216.png 300w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-768x554.png 768w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-123x89.png 123w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-142x102.png 142w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-243x175.png 243w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-391x282.png 391w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-667x481.png 667w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-254x183.png 254w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-22x16.png 22w\" sizes=\"(max-width: 1003px) 100vw, 1003px\" \/><\/figure>\n\n\n\n<p>7. \u00cen panoul de configurare, face\u021bi clic pe Selectare.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/5gYfUwRRZ6XmvmXnbLGVxwH9XyACODcD10fbY8OVbL_RyBYuqzN9Z0-i2oazoMh_6bTEfz8NXDIfm5w2Uus_1InCdbqYzl00-rLPHDiYHIHxH0PE5CThijT6b56jv21kMc4CPRUx=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>&#8230; \u0219i selecta\u021bi imaginea containerului.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/uLwn_IFFaO8LkMnMBHqxdGENSxLBkK2NEwZYEyKKcfTqQTc0PsXS21lv9ywrUIy75Gq16wCQ4PjFgrtb76mMsOwlflqwudn3WdEmDoYNTmjUdhj3ssGilmEfchyLh65OegWtywlt=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>8. Apoi selecta\u021bi regiunea \u00een care urmeaz\u0103 s\u0103 fie implementate serviciile:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/PzNMoslAIrXBFVQiK7BGwOBeW4tFwsNm0MBDNDTrSgCT0GAgr3NDVfo2MMlLeLaQmB0envOCEnst0itsVG2u1_pW7GOE1W4VJpBXtbxWlVXfG1teIniKB4bqgNVfTkv67P_Gp8Qx=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>9. Urm\u0103torul pas este selectarea procesorului. Indica\u021bi dac\u0103 procesorul trebuie alocat numai \u00een timpul interog\u0103rii sau \u00eentotdeauna. Dac\u0103 vre\u021bi s\u0103 pl\u0103ti\u021bi doar pentru consumul efectiv, prima variant\u0103 este cea recomandat\u0103.<\/p>\n\n\n\n<p>Defini\u021bi \u0219i valorile scal\u0103rii automate &#8211; num\u0103rul minim \u0219i maxim de instan\u021be. Dac\u0103 seta\u021bi limita minim\u0103 de 1 (sau mai mare), ve\u021bi pl\u0103ti pentru serviciu chiar \u0219i atunci c\u00e2nd nu este utilizat, dar serviciul va porni mai repede omit\u00e2nd pornirea la rece. Dac\u0103 nu dori\u021bi s\u0103 pl\u0103ti\u021bi pentru un serviciu neutilizat, seta\u021bi limita inferioar\u0103 de 0. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/pAQv6G31w9LhfL05E79B0-4oNVBff9YEGAGG-Lx7OSxCVEXgvgbE_eZQbDHOlycxJ0-uSrTf0kDuTHumkCaNHXyXIOpbIKWdxiizA9ETsk3OXqvBDJXkJrqYe-jpchTU9RYrgn7h=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>10. Defini\u021bi dac\u0103 traficul c\u0103tre serviciu urmeaz\u0103 s\u0103 fie autentificat \u0219i dac\u0103 este permis traficul intern (prin re\u021bea VPS) sau traficul public.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/O-tcVxfNvQ_CX0WLHkyAycn0YSflPEAcI3d_RZWE5cCmXB3Q2lsygl1aMrBPESD2GuQA_p8oPvuGetElETiTxmQGCJy_aEIVnPoTuEb0iNMKR-i4mYYEaHB9e8hiOwEXHWOQJv3G=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>11. Face\u021bi clic pe Creare \u0219i a\u0219tepta\u021bi s\u0103 porneasc\u0103 serviciul.<\/p>\n\n\n\n<p>12. Dac\u0103 afi\u0219ajul arat\u0103 similar cu captura de ecran de mai jos, \u00eenseamn\u0103 c\u0103 serviciul este activ.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/Esc6EoDhzecQPsPsn31wG1M5aEVRrd3MDEp8cprmgmDLLZjzBLc6IwYw6WiPzOB4xkOFtNZMnbDSUVU2bWzr9kiH0-ipsVSrsPyhrJ7L8TXESHATYsmSd45biiCRKQntAq6sPqGh=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>Pute\u021bi verifica func\u021bionarea acestuia acces\u00e2nd adresa URL generat\u0103. \u00cen exemplul tutorialului, acesta este https:\/\/helloworld-2-4xrlbe3dfq-lm.a.run.app.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/_jODuj2FwQGesimiGMxzE6IMm_KafZOWkeHsEIK04R_7b8QvS2BkRzX3FT_VhZNbHaC4w1UGTYdTtinTZPTvAt7q7P0NXuV_Ls4_25LHR6J4rW9zLmBHQClOL95v0J4VQQzngPRH=s1600\" alt=\"\"\/><\/figure>\n\n\n\n<p>13. Aplica\u021bia a fost implementat\u0103 cu succes pe Google Cloud Run. \u00cen pasul urm\u0103tor, pute\u021bi configura implementarea continu\u0103 pentru Cloud Run pentru a v\u0103 automatiza implement\u0103rile. De asemenea, pute\u021bi gestiona traficul dintre versiuni pentru a efectua testarea A\/B. Pe l\u00e2ng\u0103 gestionarea interog\u0103rilor HTTPS, pute\u021bi defini evenimente care vor declan\u0219a imaginea &#8211; \u00een prezent exist\u0103 peste 90 de evenimente disponibile din diverse servicii GCP.<\/p>\n\n\n\n<h2 id=\"h-care-sunt-costurile-serviciului-cloud-run\"> Care sunt costurile serviciului Cloud Run? <\/h2>\n\n\n\n<p>Serviciul este facturat pe m\u0103sur\u0103 ce \u00eel utiliza\u021bi, cost pe secund\u0103. Costurile includ CPU, memorie, num\u0103rul de interog\u0103ri \u0219i utilizarea re\u021belei. Serviciul are \u0219i o limit\u0103 gratuit\u0103, care poate fi re\u00eennoit\u0103 lunar\u0103.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><\/td><td><strong>CPU<\/strong><\/td><td><strong>Memorie<\/strong><\/td><td><strong>Interog\u0103ri<\/strong><\/td><\/tr><tr><td><strong>Cost<\/strong><\/td><td> 0,00002400 USD pe secund\u0103 vCPU <\/td><td> 0,00000250 USD per GB pe secund\u0103 <\/td><td> 0,40 USD la un milion de interog\u0103ri<\/td><\/tr><tr><td><strong>Gratuit (limita lunar\u0103)<\/strong><\/td><td> 180 000 secunde vCPU <\/td><td> 360 000 GB pe secund\u0103<\/td><td>2 milioane interog\u0103ri<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Pentru a ob\u021bine o estimare exact\u0103, pute\u021bi utiliza calculatorul <a href=\"https:\/\/cloud.google.com\/products\/calculator\" class=\"ek-link\">platformei Google Cloud<\/a>.<\/p>\n\n\n\n<p>Dac\u0103 dori\u021bi s\u0103 verifica\u021bi capabilit\u0103\u021bile Cloud Run sau s\u0103 testa\u021bi alte servicii GCP, <a href=\"https:\/\/fotc.com\/ro\/contact\/\" class=\"ek-link\">nu ezita\u021bi s\u0103 ne contacta\u021bi<\/a>. \u00cen calitate de partener oficial Google Cloud, avem \u00een echip\u0103 ingineri \u0219i arhitec\u021bi certifica\u021bi care v\u0103 vor \u00eenso\u021bi \u00een fiecare etap\u0103 a aventurii \u00een cloud. <\/p>\n\n\n\n<p>\u00cen plus, FOTC v\u0103 ofer\u0103 un voucher de 500 USD valabil timp de un an pe care \u00eel pute\u021bi utiliza pentru orice serviciu Google Cloud Platform. \u00cen plus, ve\u021bi avea \u0219i oportunitatea de a acoperi parte dintre costurile de \u00eentre\u021binere a infrastructurii \u00een procesul de migrare \u0219i ve\u021bi putea beneficia de alte reduceri pentru o cooperare pe termen lung.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cloudul preia o parte semnificativ\u0103 din \u00eenc\u0103rcarea echipelor tehnice \u00een cadrul unei companii. Mult mai scalabil dec\u00e2t o infrastructur\u0103 tradi\u021bional\u0103 de IT, arhitecturile cloud sunt create pentru a fluidiza performan\u021ba \u00eentr-o companie, sus\u021bin\u00e2nd dezvoltarea \u0219i cre\u0219terea. Printre cele mai populare astfel de servicii \u2013 \u00een r\u00e2ndul companiilor, dar \u0219i al speciali\u0219tilor freelance \u2013 se num\u0103r\u0103&#8230;<\/p>\n","protected":false},"author":19,"featured_media":41897,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":13,"_editorskit_typography_data":[],"_editorskit_blocks_typography":"","_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}"},"categories":[562],"tags":[784,735],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v16.7 (Yoast SEO v19.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google<\/title>\n<meta name=\"description\" content=\"Cloud Run v\u0103 permite s\u0103 construi\u021bi \u0219i s\u0103 implementa\u021bi rapid aplica\u021bii containerizate, f\u0103r\u0103 server, ceea ce \u00eenseamn\u0103 c\u0103 utilizatorul nu trebuie s\u0103 supravegheze nicio component\u0103 a infrastructurii - \u00eentre\u021binerea fizic\u0103 a ma\u0219inii, actualiz\u0103rile software, echilibrarea sarcinii sau scalarea.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/\" \/>\n<meta property=\"og:locale\" content=\"ro_RO\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google\" \/>\n<meta property=\"og:description\" content=\"Cloud Run v\u0103 permite s\u0103 construi\u021bi \u0219i s\u0103 implementa\u021bi rapid aplica\u021bii containerizate, f\u0103r\u0103 server, ceea ce \u00eenseamn\u0103 c\u0103 utilizatorul nu trebuie s\u0103 supravegheze nicio component\u0103 a infrastructurii - \u00eentre\u021binerea fizic\u0103 a ma\u0219inii, actualiz\u0103rile software, echilibrarea sarcinii sau scalarea.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/\" \/>\n<meta property=\"og:site_name\" content=\"FOTC\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-18T11:06:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-16T06:48:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Laura Paraschiv\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/\",\"url\":\"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/\",\"name\":\"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google\",\"isPartOf\":{\"@id\":\"https:\/\/fotc.com\/#website\"},\"datePublished\":\"2021-11-18T11:06:20+00:00\",\"dateModified\":\"2022-05-16T06:48:19+00:00\",\"author\":{\"@id\":\"https:\/\/fotc.com\/#\/schema\/person\/e3a6b214e5a3311a79985b4c3dd137fd\"},\"description\":\"Cloud Run v\u0103 permite s\u0103 construi\u021bi \u0219i s\u0103 implementa\u021bi rapid aplica\u021bii containerizate, f\u0103r\u0103 server, ceea ce \u00eenseamn\u0103 c\u0103 utilizatorul nu trebuie s\u0103 supravegheze nicio component\u0103 a infrastructurii - \u00eentre\u021binerea fizic\u0103 a ma\u0219inii, actualiz\u0103rile software, echilibrarea sarcinii sau scalarea.\",\"breadcrumb\":{\"@id\":\"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/#breadcrumb\"},\"inLanguage\":\"ro-RO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/\"]}],\"accessibilityFeature\":[\"tableOfContents\"]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"RO\",\"item\":\"https:\/\/fotc.com\/ro\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Cloud\",\"item\":\"https:\/\/fotc.com\/pl\/blog\/category\/google-cloud-platform-pl\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fotc.com\/#website\",\"url\":\"https:\/\/fotc.com\/\",\"name\":\"FOTC\",\"description\":\"Partner Google Cloud\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fotc.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"ro-RO\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/fotc.com\/#\/schema\/person\/e3a6b214e5a3311a79985b4c3dd137fd\",\"name\":\"Laura Paraschiv\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ro-RO\",\"@id\":\"https:\/\/fotc.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cba586d4f1373c8f4c7a30c466e1a6a0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cba586d4f1373c8f4c7a30c466e1a6a0?s=96&d=mm&r=g\",\"caption\":\"Laura Paraschiv\"},\"description\":\"Laura Paraschiv are peste 5 ani de activitate ca jurnalist \u0219i al\u021bi 5 ani experien\u021b\u0103 de content writer \u0219i marketer. Nu are nicio problem\u0103 \u00een a scrie pentru orice public sau industrie, dar mai mereu se b\u00e2lb\u00e2ie c\u00e2nd trebuie s\u0103 scrie despre sine.\",\"sameAs\":[\"https:\/\/ro.linkedin.com\/in\/laura-teodora-paraschiv\"],\"knowsAbout\":[\"Google Workspace\",\"Google Cloud\"],\"jobTitle\":\"Content Manager\",\"url\":\"https:\/\/fotc.com\/ro\/blog\/author\/laura-paraschiv\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google","description":"Cloud Run v\u0103 permite s\u0103 construi\u021bi \u0219i s\u0103 implementa\u021bi rapid aplica\u021bii containerizate, f\u0103r\u0103 server, ceea ce \u00eenseamn\u0103 c\u0103 utilizatorul nu trebuie s\u0103 supravegheze nicio component\u0103 a infrastructurii - \u00eentre\u021binerea fizic\u0103 a ma\u0219inii, actualiz\u0103rile software, echilibrarea sarcinii sau scalarea.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/","og_locale":"ro_RO","og_type":"article","og_title":"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google","og_description":"Cloud Run v\u0103 permite s\u0103 construi\u021bi \u0219i s\u0103 implementa\u021bi rapid aplica\u021bii containerizate, f\u0103r\u0103 server, ceea ce \u00eenseamn\u0103 c\u0103 utilizatorul nu trebuie s\u0103 supravegheze nicio component\u0103 a infrastructurii - \u00eentre\u021binerea fizic\u0103 a ma\u0219inii, actualiz\u0103rile software, echilibrarea sarcinii sau scalarea.","og_url":"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/","og_site_name":"FOTC","article_published_time":"2021-11-18T11:06:20+00:00","article_modified_time":"2022-05-16T06:48:19+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png","type":"image\/png"}],"author":"Laura Paraschiv","twitter_card":"summary_large_image","twitter_title":"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/","url":"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/","name":"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google","isPartOf":{"@id":"https:\/\/fotc.com\/#website"},"datePublished":"2021-11-18T11:06:20+00:00","dateModified":"2022-05-16T06:48:19+00:00","author":{"@id":"https:\/\/fotc.com\/#\/schema\/person\/e3a6b214e5a3311a79985b4c3dd137fd"},"description":"Cloud Run v\u0103 permite s\u0103 construi\u021bi \u0219i s\u0103 implementa\u021bi rapid aplica\u021bii containerizate, f\u0103r\u0103 server, ceea ce \u00eenseamn\u0103 c\u0103 utilizatorul nu trebuie s\u0103 supravegheze nicio component\u0103 a infrastructurii - \u00eentre\u021binerea fizic\u0103 a ma\u0219inii, actualiz\u0103rile software, echilibrarea sarcinii sau scalarea.","breadcrumb":{"@id":"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/#breadcrumb"},"inLanguage":"ro-RO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/"]}],"accessibilityFeature":["tableOfContents"]},{"@type":"BreadcrumbList","@id":"https:\/\/fotc.com\/ro\/blog\/cloud-run-implementare-aplicatiilor-cloud-google\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"RO","item":"https:\/\/fotc.com\/ro\/"},{"@type":"ListItem","position":2,"name":"Google Cloud","item":"https:\/\/fotc.com\/pl\/blog\/category\/google-cloud-platform-pl\/"},{"@type":"ListItem","position":3,"name":"Cloud Run \u2013 Implementare instantanee a aplica\u021biilor \u00een cloudul Google"}]},{"@type":"WebSite","@id":"https:\/\/fotc.com\/#website","url":"https:\/\/fotc.com\/","name":"FOTC","description":"Partner Google Cloud","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fotc.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"ro-RO"},{"@type":"Person","@id":"https:\/\/fotc.com\/#\/schema\/person\/e3a6b214e5a3311a79985b4c3dd137fd","name":"Laura Paraschiv","image":{"@type":"ImageObject","inLanguage":"ro-RO","@id":"https:\/\/fotc.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cba586d4f1373c8f4c7a30c466e1a6a0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cba586d4f1373c8f4c7a30c466e1a6a0?s=96&d=mm&r=g","caption":"Laura Paraschiv"},"description":"Laura Paraschiv are peste 5 ani de activitate ca jurnalist \u0219i al\u021bi 5 ani experien\u021b\u0103 de content writer \u0219i marketer. Nu are nicio problem\u0103 \u00een a scrie pentru orice public sau industrie, dar mai mereu se b\u00e2lb\u00e2ie c\u00e2nd trebuie s\u0103 scrie despre sine.","sameAs":["https:\/\/ro.linkedin.com\/in\/laura-teodora-paraschiv"],"knowsAbout":["Google Workspace","Google Cloud"],"jobTitle":"Content Manager","url":"https:\/\/fotc.com\/ro\/blog\/author\/laura-paraschiv\/"}]}},"_links":{"self":[{"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/posts\/50567"}],"collection":[{"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/comments?post=50567"}],"version-history":[{"count":0,"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/posts\/50567\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/media\/41897"}],"wp:attachment":[{"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/media?parent=50567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/categories?post=50567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fotc.com\/ro\/wp-json\/wp\/v2\/tags?post=50567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}