Risc vs. recompensă: un ghid pentru înțelegerea containerelor software
Publicat: 2022-03-11Aceia dintre noi care sunt suficient de bătrâni își pot aminti o zi în care software-ul a fost livrat în principal prin suport fizic. Răspândirea internetului în bandă largă și a smartphone-urilor ne-a condus la era serviciului web - software găzduit în cloud accesat de clienții utilizatori, cum ar fi browsere și aplicații.
Nu cu mult timp în urmă, aplicațiile web erau rulate direct pe mașini fizice din centrele de date private. Pentru a ușura gestionarea, aceste aplicații erau de obicei monolitice - un singur server mare ar conține tot codul back-end și baza de date. Acum, serviciile de găzduire web precum Amazon și răspândirea tehnologiei hypervisor au schimbat toate acestea. Datorită Amazon Web Services (AWS) și instrumente precum VirtualBox, a devenit ușor să împachetați un întreg sistem de operare într-un singur fișier.
Folosind servicii precum EC2, a devenit ușor să împachetați imagini de mașini și să înșiri seturi de servere virtuale. Odată a apărut paradigma microserviciilor – o abordare a arhitecturii software în care aplicațiile monolitice mari sunt împărțite în servicii mai mici concentrate care fac un lucru bine. În general, această abordare permite o scalare mai ușoară și o dezvoltare a caracteristicilor, deoarece blocajele sunt mai rapid de găsit și modificările de sistem mai ușor de izolat.
Animale de companie pentru animale
Am devenit inginer de infrastructură chiar în vârful acestui trend. Îmi amintesc că am construit primul meu mediu de producție în Amazon folosind o serie de scripturi bash. Serverele erau ca niște animale de companie pentru mine. Le-am dat fiecăruia nume drăguțe. Le-am monitorizat cu atenție. Am răspuns rapid la alerte și le-am păstrat sănătoase. Am tratat acele cazuri cu dragoste și afecțiune, pentru că a fost dureros să încerc să le înlocuiesc, la fel ca un animal de companie iubit.
Odată a apărut Chef, un instrument de gestionare a configurației și aproape imediat viața mea a devenit mai ușoară. Cu instrumente precum Chef și Puppet, puteți elimina cea mai mare parte a durerii manuale asociate cu gestionarea unui sistem cloud. Puteți folosi construcția de „medii” pentru a separa serverele de dezvoltare, de punere în scenă și de producție. Puteți folosi „saculetele de date” și „rolurile” sale pentru a defini parametrii de configurare și pentru a introduce seturi de modificări. Acum, toți serverii mei „animale de companie” absolviseră școala de ascultare.
Apoi, în 2013, a apărut Docker și a început o nouă eră: era software-ului ca animale (scuze oricăror vegani din audiență). Paradigma containerului este una de orchestrare, nu de gestionare a configurației. Instrumente precum Kubernetes, Docker Compose și Marathon se concentrează pe deplasarea imaginilor predefinite în loc să ajusteze valorile de configurare pe instanțele care rulează. Infrastructura este imuabilă; când un container se strică, nu încercăm să-l reparăm – îl împușcăm în cap și îl înlocuim. Ne pasă mai mult de sănătatea turmei decât de animalele individuale. Nu le mai dăm serverelor noastre nume drăguțe.
Recompensele
Containerele ușurează multe lucruri. Ei permit companiilor să se concentreze mai mult pe propriul sos special. Echipele tehnologice se pot îngrijora mai puțin cu privire la gestionarea infrastructurii și a configurației și, în schimb, se pot îngrijora mai ales cu privire la codul aplicației. Companiile pot face un pas mai departe și pot folosi servicii gestionate pentru lucruri precum MySQL, Cassandra, Kafka sau Redis, pentru a nu avea deloc de-a face cu stratul de date. Există mai multe startup-uri care oferă și servicii de învățare automată „plug and play”, pentru a permite companiilor să facă analize sofisticate fără a-și face griji cu privire la infrastructură. Aceste tendințe au culminat cu modelul fără server - o abordare a arhitecturii software care permite echipelor să lanseze software fără a gestiona un singur VM sau container. Serviciile AWS precum S3, Lambda, Kinesis și Dynamo fac acest lucru posibil. Deci, pentru a extinde analogia, am trecut de la animale de companie la animale la un fel de serviciu pentru animale la cerere.

Toate acestea sunt foarte misto. Este o nebunie că trăim într-o perioadă în care un copil de doisprezece ani poate dezvolta un sistem software sofisticat cu câteva clicuri. Ar trebui să ne amintim că, nu cu mult timp în urmă, acest lucru era imposibil. Cu doar câțiva președinți din SUA în urmă, media fizică era standardul și numai marile companii aveau mijloacele de a produce și distribui software. Remedierea erorilor era un lux. Acum, acel copil de doisprezece ani își poate crea un cont AWS și își poate face software-ul disponibil pentru întreaga lume. Dacă există o eroare, cineva îl va deranja pe Slack și, în câteva minute, o remediere este disponibilă pentru toți utilizatorii.
Riscurile
Foarte, foarte tare, dar nu fără prețul său – dependența de furnizorii de cloud precum Amazon înseamnă dependența de marile corporații și de tehnologiile proprietare. Dacă Richard Stallman și Edward Snowden nu v-au făcut să vă faceți griji pentru astfel de lucruri, recenta debacle cu Facebook ar trebui să fie.
O mai mare abstracție de la hardware aduce cu sine și riscul de mai puțină transparență și control. Când ceva se sparge într-un sistem care rulează sute de containere, trebuie să sperăm că defecțiunea apare undeva unde putem detecta. Dacă problema este cu sistemul de operare gazdă sau cu hardware-ul de bază, ar putea fi greu de determinat. O întrerupere care ar fi putut fi rezolvată în 20 de minute folosind VM-uri poate dura ore sau zile pentru a se rezolva cu containere dacă nu aveți instrumentația potrivită.
Nu doar eșecurile trebuie să ne îngrijorăm atunci când vine vorba de lucruri precum Docker. Există și problema securității. Indiferent de platforma de containere pe care o folosim, trebuie să avem încredere că nu există uși din spate sau vulnerabilități de securitate nedezvăluite. Utilizarea platformelor open-source nu este nici o garanție a siguranței. Dacă ne bazăm pe imagini de containere terță parte pentru părți ale sistemului nostru, este posibil să fim vulnerabili.
Învelire
Paradigma zootehnică este atractivă din mai multe motive, dar nu este lipsită de dezavantaje. Înainte de a se grăbi să containerizeze întreaga stivă, echipele de tehnologie trebuie să se gândească dacă este sau nu alegerea potrivită și să se asigure că pot atenua efectele negative.
Personal, îmi place să lucrez cu containere. Sunt încântat să văd unde merg lucrurile în următorii zece ani, pe măsură ce apar noi platforme și paradigme. Totuși, în calitate de fost consultant de securitate, sunt suficient de precaut încât să știu că totul are un preț. Depinde de ingineri să rămână vigilenți pentru a se asigura că nu renunțăm la autonomia noastră ca utilizatori și dezvoltatori. Nici cel mai simplu flux de lucru CD/CI din lume nu ar merita costul.