Containerizarea este una dintre cele mai populare tehnologii IT ale momentului. Conceptul nu este însă foarte bine înțeles (deși are o vechime de peste un deceniu), confuzia datorându-se în principal asemănărilor dintre containere și mașinile virtuale, analiștii de piață estimând că anul viitor, 70% dintre organizații vor utiliza minimum două aplicații containerizate (1) (procentul era de doar 20 în 2019)

Containere sau mașini virtuale?

Pentru a înțelege rapid diferențele, apelăm de la o definiție simplă: virtualizarea este o tehnologie prin care – utilizând o aplicație software numită hypervisor – o mașină fizică (server) poate fi găzdui mai multe mașini virtuale (VM). Hypervisorul permite instalarea mai multor sisteme de operare pe serverul gazdă (fiecare OS corespunde unei VM), realizează partajarea resurselor fizice (putere de procesare, memorie și stocare) între mașinile virtuale și separă VM-urile unele de celelalte.

Păstrând modul de abordare, containerizarea poate fi considerată o metodă mai simplă de virtualizare pentru că elimină din start nevoia de hypervisor și de mai multe sisteme de operare separate. Câștigul imediate obținut e evident: crearea containerelor și alocarea resurselor se realizează mai rapid.
Spre deosebire de virtualizare, unde pentru a rula soluții software este nevoie de crearea și configurarea unei întregi mașini virtuale, containerizarea împachetează laolaltă toate elementele necesare pentru rularea unei singure aplicații. Containerul include tot ce este nevoie pentru aceasta – executabile, cod, librării, fișiere de configurare, dependențe etc. – și folosește funcțiile sistemului de operare gazdă pentru a izola procesele și controla accesul lor la resurse.
De aici rezultă un al doilea avantaj-cheie: containerele pot rula oriunde, în infrastructuri on-premises, în centre de hosting sau în cloud.
Al treilea consistă în faptul că, dacă o aplicație containerizată este compromisă, prin izolarea ei în container este restrâns riscul de compromitere al celorlalte sisteme și aplicații. Mai mult însă, problema poate fi identificată și remediată mai rapid decât în cazul mașinilor virtuale.

Beneficiile containerelor

Beneficiile containerizării sunt principalele responsabile de creșterea rapidă a nivelului de adopție, unul dintre cele mai apreciate fiind portabilitatea.
Containerele sunt „împachetări“ software ale aplicațiilor și dependențelor lor (executabile, librării, coduri și fișiere de configurare), care, pentru a funcționa, nu mai au nevoie de un hypervisor – ca în cazul virtualizarii – și nici de sisteme proprii de operare (pentru că folosesc sistemul mediului pe care rulează). Pentru că nu conțin imagini ale OS-ului și nici mai multe aplicații – ca în cazul mașinilor virtuale –, containerele sunt mai mici, mai flexibile și mai ușor de creat. Iar alocarea resurselor – putere de calcul și memorie – poate fi realizată rapid și controlată exact.

Toate aceste caracteristici contribuie la creșterea vitezei și eficienței cu care pot fi create, testate și mutate containerele dintr-un mediu de procesare într-altul. Argument esențial în prezent, când utilizarea mediilor hibride de lucru – care combină infrastructuri on-premises și platforme Cloud publice – este tot mai răspândită. De exemplu, un dezvoltator poate crea un container pe desktop-ul propriu, îl poate verifica într-un mediu de test găzduit în Azure, iar după ce îl validează îl poate muta în mediul de producție din infrastructura in-house, fără să-și mai bată capul cu limitările de tip „vendor lock-in“.

Un alt argument important în favoarea containerizarii îl reprezintă faptul că facilitează crearea de arhitecturi de microservicii, prin care sistemele monolitice – cum sunt multe din aplicațiile enterprise legacy – pot fi transformate în structuri modulare. Un container poate conține un singur microserviciu – care poate fi un proces sau o funcționalitate a aplicației –, iar mai multe containere pot fi grupate în clustere ce pot fi gestionate centralizat. Astfel, folosind containerizarea, o aplicație-mamut poate fi modernizată și poate deveni scalabila și flexibilă. De exemplu, Netflix folosește câteva sute de microservicii pentru a controla funcționalitățile care alcătuiesc serviciul în sine.

Platforme de containerizare

La momentul actual, cea mai cunoscută și utilizată unealtă pentru crearea și rularea containerelor este Docker. Platforma Open Source de containerizare, care anul viitor va împlini 10 ani de la lansarea oficială, realizează împachetarea, mutarea și rularea aplicațiilor, atât în infrastructuri on-premises, cât și în medii cloud, public sau privat.

Deși adopția Docker continuă și în prezent, supremația ei este amenințată – conform Datadog, companiile au început să prefere ”containerd” și CRI-O ca opțiuni pentru runtime (2). (Container runtime reprezintă componenta software care rulează containerele pe sistemul de operare gazdă, Linux sau Windows.)

Schimbarea este influențată, în mod direct, de noile versiuni Kubernetes – sistemul Open Source care gestionează și orchestrează aplicațiile containerizate și care este preferat de 95% dintre companiile care utilizează containerele (3).

Principalele motive pentru care aproapte o treime din dezvoltatori software (4) aleg Kubernetes sunt date de faptul că:

  • este 100% Open Source
  • permite control total prin intermediul codului
  • rulează oriunde
  • are un nivel de fragmentare foarte mic – ceea ce înseamnă că, indiferent de distribuția Kubernetes pe care o folosiți și unde o rulați, experiența de implementare și gestionare este aceeași.

Și pentru că tot am amintit de distribuții Kubernetes, cele mai populare oferte ale momentului sunt:

  • Rancher (utilizează Docker ca runtime)
  • OpenShift (CRI-O)
  • Tanzu (Docker)
  • Elastisys (CRI-O)
  • Docker Kubernetes Engine (DKS folosește și containerd și CRI-O).

La acestea se adaugă ofertele principalilor furnizori de servicii cloud:

  • Azure Kubernetes Service (AKS utilizează Docker pentru versiunile mai vechi și containerd pentru cele mai noi)
  • Amazon EKS (Docker și containerd)
  • Google Kubernetes Engine (GKE utilizează doar containerd).

Ofertă extinsă, alegere dificilă

Deși containerele au devenit tot mai populare și au la bază tehnologii Open Source, alegerea soluțiilor adecvate poate fi dificilă. Dacă în cazul furnizorilor cloud lucrurile sunt simple, atunci când optați pentru o versiune on-premises deciziile nu sunt simple. Pe de o parte din cauza abundenței ofertei, iar pe de alta pentru că fiecare distribuție Kubernetes are plusuri și minusuri, fiind recomandată pentru anumite situații.

De exemplu, OpenShift este considerată alegerea optimă pentru companiile mari. Rancher – pentru gestiunea mai multor clustere de containere în arhitecturi multi-cloud. Elastisys excelează pe zona de securitate și controlul ciclului de viață al aplicațiilor containerizate. DKS simplifică integrarea Kubernetes în întreg procesul DevOps, de la nivel de desktop până în mediul de producție. Tanzu este prima recomandare dacă folosiți soluții VMware și urmăriți modernizarea aplicațiilor și virtualizarea infrastructurii.

Acesta însă doar vârful iceberg-ului, pentru că există încă multe alte detalii tehnice ale tehnologiilor de containerizare care pot face diferența și de care trebuie să țineți cont. Apoi, procesele și infrastructura trebuie adaptate cerințelor specifice containerelor, iar securitatea reprezintă și ea o componentă căreia trebuie să îi acordați atenție.

Dacă sunteți interesați de containerizare, dar nu dețineți in-house competențele necesare și nici timp să investiți în dezvoltarea lor, specialiștii PRAS vă pot ajuta să luați deciziile corecte. Tot ce trebuie să faceți este să ne contactați.


(1) – Gartner – 3 Critical Mistakes That I&O Leaders Must Avoid With Containers

(2) – 10 Trends in Real-World Container Use

(3) – Cloud Native Computing Foundation Annual Survey 2021

(4) – The State of Cloud Native Development