Cel mai des soluțiile din tehnologie au venit ca răspuns la nevoile utilizatorilor. Așa am ajuns în prezent să avem telefoane extraordinar de performanțe, dar și computere capabile să rezolve în timp record operații care până nu demult consumau extraordinar de multe resurse. În acest context, o soluție care e tot mai consolidată în ultimii ani e cea de distributed infrastructure.

HotNews.roFoto: Hotnews

Încă din nume poate fi intuit ce presupune: o infrastructură ale cărei resurse sunt în diverse locuri și cu capabilități diferite. Cel mai des în acest context apare cloudul, pentru că această idee e deja aplicată de companiile mari care au nevoie atât de stocare, cât și de procesare. Iar în interiorul industriei cloud au fost dezvoltate în ultimul deceniu diverse soluții care să răspundă nevoilor, cum ar fi Software as a Service (SaaS), Platform as a Service (PaaS), Infrastructure as a Service (IaaS) până la Everything as a Service (XaaS). Practic, folosești cât ai nevoie, când ai nevoie.

Acestea sunt lucruri cunoscute și estimările sunt promițătoare pentru această industrie. În fapt, sunt atât de promițătoare, încât deja nu se mai pune problema dacă folosești așa ceva, ci când și cu ce scop. O analiză recentă arăta că în 2021 piața globală de cloud computing va ajunge la peste 445 miliarde de dolari, iar în 2026 va ajunge la circa 945 miliarde de dolari. În septembrie 2021, IDC a venit cu o analiză și mai optimistă: piață de circa 1,3 trilioane de dolari până în 2025.

Și aici ar fi vorba atât de servicii Public Cloud, cât și de Private Cloud. Iar un raport din noiembrie 2021 arată că 95% din businessuri vor face din multicloud o prioritate strategică până în 2022. Sunt indicatori despre direcția în care merge tehnologia și e suficient să te uiți la obiceiurile tale de consum și să vezi că aproape orice folosești pe telefon e legat la o astfel de infrastructură.

În contextul necesităților actuale și ale următorului deceniu se dezvoltă și zona de distributed infrastructure. Astfel, resursele din mai multe zone sunt puse laolaltă pentru a întruni fie cerințe de performanță, fie de-a susține un anumit sistem în momente critice.

Câștigurile sunt reducerea latenței, eliminarea sau diminuarea congestiilor de rețea, garantarea calității serviciului (QoS) în aproape orice scenariu, automatizarea operațiunilor de rețea, scăderea costurilor și chiar distribuția încărcăturii suplimentare dincolo de nucleul data centerului folosit uzual. Firesc, sunt și momente în care lucrurile nu funcționează 100% așa cum ar fi de așteptat, dar acelea sunt excepții.

Ce apare constant în discuția despre distributed infrastructure e conceptul de „edge” și, mai des, „edge computing”. Pe scurt, e vorba de-a muta necesitățile de computing către endpoints pentru a îmbunătăți semnificativ performanța rețelei, dar și costurile.

Și, totodată, cum vorbim de distribuție în mai multe regiuni, astfel de abordări ajută și în respectarea legilor locale, subiect care e din ce în ce mai prezent în dezbaterile publice.

Astfel, edge computing oferă resurse de execuție aproape de utilizatorii finali. Principalele beneficii pe care le oferă includ latența scăzută și lățimea de bandă mare.

Sorin Cosmescu, CEO, EXE Software, companie specializată în dezvoltarea programelor Enterprise Software, a explicat că industria include mai multe cazuri de utilizare, cum ar fi aplicarea tehnologiilor de realitate augmentată (AR) și de realitate virtuală (VR) în producția inteligentă pentru asistență la distanță, iar instruirea și întreținerea se vor baza în mod semnificativ pe accelerarea hardware și pe edge computing pentru a optimiza performanța și a reduce latența.

„Mai multe cazuri de utilizare în industria auto implică cerințe stricte de latență. Exemplele includ detectarea obiectelor în timp real în fluxurile video care sunt procesate fie de vehicule, fie de infrastructura de pe marginea drumului”, a declarat acesta.

Legat de costuri, acesta a nuanțat că în cloud o organizație își poate crește cu ușurință capacitățile de procesare fără a face investiții mari în hardware nou.

„Companiile pot să acceseze procesare suplimentară prin modele de tip pay-as-you-go de la furnizorii publici de cloud. Acest lucru poate face uneori dificilă definirea și estimarea cantităților și costurilor. Din fericire, există mai multe modalități de a ține sub control costurile cloud, de exemplu, optimizarea costurilor prin efectuarea de analize și raportări financiare mai bune, automatizarea politicilor de guvernare astfel încât aceste probleme în cloud computing să poată fi reduse”.

Sursa foto: Pixabay

Tot pe subiectul acesta, de la Cristian Dinu, CTO Hypersay și antreprenor, am aflat că pentru el e de interes acum tranziția spre funcții „ușoare” care rulează la marginea norului („cloud edge”), via Web Assembly, cu latență sub de o singură cifră în milisecunde. „Sunt sigur că vor deveni în curând foarte populare. Cred de asemenea că trendul de a dezvolta software în browser și a instala direct, cu o apăsare de buton, va crește și va deveni dominant”, a adăugat acesta.

Scenariile de utilizare în care o rețea de tipul acesta funcționează excelent

Un exemplu excelent pentru mass market e ce face Netflix. Ca să își asigure un flux eficient de streaming, are parteneriate cu operatori telecom ca să asigure lățime de bandă, apoi are servere dedicate regiunilor. Și în funcție de încărcarea pe unele dintre ele sarcina e mutată pe celelalte. Astfel, conceptul distributed infrastructure e pus în practică în Content Delivery Network (CDN) ca să reducă latența și să ofere o experiență mai bună utilizatorului final.

Cum noiembrie–decembrie e perioada Black Friday și a creșterii interesului pentru comerț online, vine alt scenariu: scaling on demand. O distribuție a resursele permite o extindere rapidă atunci când e nevoie mai mare într-un anumit moment. Totodată, în contextul smart city sau smart life, cu tot felul de gadgeturi care fac parte din lumea digitală, industria IoT beneficiază din plin de aportul unui sistem de distributed cloud. De câțiva ani deja se discută și sunt implementate tehnologii de machine learning, care au nevoie de resurse considerabile de computing. Aici intervine și domeniul de securitate cibernetică, unde sunt folosiți algoritmi de machine learning pentru identificarea tiparelor din viruși.

La nivel de pregătire, sunt câteva limbaje de programare necesare. Printre acestea se numără Java, .NET, JavaScript, Python, Ruby, Node.js și PHP. În cazul bazelor de date, vorbim de MySQL, PostgreSQL, JSON Db sau MongoDB, Redis sau CloudSQL. Acestea sunt, cumva, definite și de jucătorii mari din industria cloud, ca Google, Amazon, IBM și alții.

Trebuie menționat însă că există o concurență puternică în industrie, iar asta duce și la scăderea costurilor și nu numai. „Diferențele între furnizorii generaliști, precum Google, Microsoft și Amazon sunt zi de zi din ce în ce mai mici. Fiecare încearcă să inoveze și să ieftinească serviciile, dar ceilalți îl prind din urmă în câteva luni”, a adăugat acesta.

Totodată, ce este la fel de important, dacă nu chiar mai important, e frameworkul care permite o dezvoltare eficientă, standardizată, portabilă și sustenabilă. În acest sens, câteva exemple ar fi platforma ASP.NET Core, bazele de date key-value sau cele de tip document, framework-urile ORM, conceptul REST, comunicarea real-time, microserviciile, conceptele de caching și load balancing.

Când vine vorba de dezvoltare propriu-zisă, cea mai mare problemă nu e cât de ușor se pot adapta dezvoltatorii, mai ales că tehnologiile sunt deja folosite și cunoscute, ci care sunt scenariile pentru care se adaptează. În acest context, inginerul Ghenadie Corotinschi a prezentat în lucrarea sa de doctorat „Contribuții privind arhitecturile Internet of Things” conceptul de fog computing.

Acesta e gândit să descentralizeze o parte din operațiile de analiză și procesare a datelor prin mutarea algoritmilor de procesare și stocare a datelor către marginea cloud-ului. „Tehnologia Fog Computing-ului rezolvă problemele legate de congestia și întârzierile din rețea. Conceptul de «Fog Computing» sau «fogging» asigură putere de calcul, spațiu de stocare a datelor și servicii de rețea la marginea rețelei.

De asemenea, asigură o platformă inteligentă de management a infrastructurii de aplicații IoT în timp real și distribuite sau a aplicațiilor în curs de dezvoltare. S-au identificat mai multe paradigme, pe lângă cel de Fog Computing (FC): Mobile Cloud Computing (MCC), Mobile-Edge Computing (MEC), Edge Computing (EC), Dew Computing(DC) și Fog-Dew Computing (FDC)”, a explicat acesta în lucrarea sa.

Sorin a subliniat că, atunci când vine vorba de programarea în cloud, este necesar să fie alese limbaje orientate pe date în locul celor de uz general pentru a obține rezultate mai bune. Astfel, pentru Java e vorba de capacitatea de a rula același program pe multe sisteme diferite și codul scris în Java funcționează fără probleme când vine vorba de cloud computing.

Datorită robusteții, ușurinței de utilizare, capabilităților multiplatformă și caracteristicilor de securitate, acesta ocupă o poziție privilegiată în rândul programatorilor care proiectează soluții pentru internet.

În cazul ASP.Net vorbim de un limbaj de programare conceput de Microsoft pentru a crea site- uri web și aplicații web. Permite proiectarea de aplicații fiabile și reutilizabile, este foarte popular și relativ ușor de utilizat.

Printre beneficiile sale se numără: securizează aplicațiile folosind autentificarea Windows încorporată, reduce liniile lungi de cod în dezvoltarea de aplicații mari, creează pagini web dinamice fără inconveniente, este independent de limbă și ușor de implementat, are propriile sale funcții de cache incorporate, conținutul și logica sunt separate.

Când vine vorba de Python, acesta susține posibilități de dezvoltare în diverse domenii, datorită elementelor care simplifică crearea de aplicații web, API și în Data Science. Python combină mai multe caracteristici care îmbunătățesc programarea, cum ar fi prezența modulelor third party, biblioteci de suport extinse, sursă deschisă și dezvoltare comunitară, ușurință de învățare și suport disponibil, structuri de date ușor de utilizat, productivitate și viteză.

Nu în ultimul rând, Ruby este un limbaj de programare cloud computing ideal pentru începători, deoarece este ușor de utilizat și de stăpânit și oferă beneficii semnificative, deoarece dispune de un ecosistem imens. Acest limbaj are resurse din abundență pentru a dezvolta diferite aplicații, precum și peste 60.000 de biblioteci și cadre din care să aleagă.

Când vine vorba de-a avea o soluție generală, care pur și simplu funcționează, Cristian a subliniat că nu poate fi vorba de așa ceva, din moment ce serviciile cloud sunt foarte diverse.

„Poți să ai servicii pentru soluții de comunicații video asemănătoare cu Zoom sau Skype, execuție de funcții, de rulat programe, analiză de date, generare de voce, desktop la distanță, stocare și transfer de date. Pe scurt, cloud este un univers vast”, a completat acesta. „Cloud este, de fapt, o modalitate de a gândi a dezvoltatorului. Oferă avantaje enorme, în timp ce constrângerile nu sunt pe măsură”.

Odată cu dezvoltarea cloud și expansiunea infrastructurii distribuite, vorbim și de servicii, și de aplicații distribuite. Și asta aduce o schimbare. În primele decenii de dezvoltare a tehnologiei dezvoltarea software a necesitat utilizarea elementelor funcționale modulare, care execută o anumită activitate, dar aplicațiile erau dependente de infrastructură.

A fost astfel nevoie de definirea unui model de dezvoltare a aplicațiilor, bazat pe proceduri de bune practici pentru utilizarea componentelor aflate la distanță și distribuite geografic. Ligia Gușeilă a și făcut o lucrare de doctorat pe tema asta în 2019, denumită „Integrarea serviciilor de tip cloud computing în centrele de prelucrare a informațiilor”.

Arhitectura care a permis partajarea sistemelor de mari dimensiuni în servicii modulare pentru a sprijini reutilizarea serviciilor a fost denumită arhitectură orientată pe servicii (Software Oriented Architecture).

Serviciile sunt distribuite în rețea și pot fi accesate împreună cu scopul de a construi aplicații software. Arhitectura orientată pe servicii este un model de dezvoltare software pentru componentele distribuite ale aplicațiilor, care asigură descoperirea serviciilor în rețea, controlul accesului la date, securizarea datelor și asigură îndeplinirea cerințelor de securitate.

„Elasticitatea sistemelor de tip cloud computing este caracteristica de bază care face sistemele distribuite medii optime pentru procesarea volumelor mari de date. Proprietățile și serviciile cloud computing susțin procesul de analiză a volumelor mari de date cu care operează mecanismele de învățare automate”, a notat aceasta în cercetarea sa.

Sursa foto: Freepik

Pregătirea în soluționarea problemelor

În toată această discuție merită scoasă în față și abordarea Infrastructure as a Service (IaaS), cunoscută și drept Hardware as a Service (HaaS). Numele e destul de explicativ: e pusă la dispoziție posibilitatea de configurare a echipamentelor prin specificarea cerințelor de resurse, de la procesor și cantitatea memoriei RAM până la sarcini specifice, cum ar fi necesități de procesare video cu cipuri dedicate.

Iar un astfel de sistem funcționează prin mașini virtuale. Și ce-i important aici de menționat e că mașinile virtuale gestionează spațiu pe discuri virtuale, iar acestea au diferite formate, în funcție de producătorul acestora, de la vmdk (VMware) și vhd (Xen și Microsoft Hyper-V) până la vhdx (Microsoft Hyper-V) și vdi (Oracle VM VirtualBox).

Acestea deja joacă un rol important în sarcinile din prezent, iar în următorii 10 ani e de așteptat că vor fi tot mai necesare în fluxurile de lucru. Principalii furnizori sunt Amazon, Microsoft, Google, IBM și Rackspace. Iar ca sisteme de operare suportate lista începe de la Windows Server până la Ubuntu, Debian, CentOS, Suse sau chiar Rhel și FreeBSD.

În contextul distributed infrastructure și al structurilor care implică diverse componente cloud, securitatea este o preocupare principală și valabilă încă de la începutul tehnologiei cloud computing. „Data breaches, compromised credentials, broken authentication, hacked interfaces and APIs, account hijacking sunt probleme care au ieșit și mai mult în evidență odată cu cloudul”, a adăugat Sorin.

Mai este vorba, desigur, și de migrarea datelor și una dintre principalele provocări din industria cloud computing din ultimii ani se concentrează pe migrare. Deși mutarea unei noi aplicații este un proces simplu, când vine vorba de mutarea unei aplicații existente într-un mediu cloud apar numeroase provocări.

Și că tot am menționat furnizorii de servicii, trebuie notat că atunci când o companie trece la cloud, aceasta devine dependentă de furnizorii de servicii. Acest parteneriat oferă adesea companiilor tehnologii inovatoare pe care altfel nu le-ar putea accesa. „Pe de altă parte, când furnizorul de cloud are probleme și companiile care îl utilizează au probleme. Este important ca furnizorul de cloud să aibă politici de monitorizare în timp real pentru a ajuta la atenuarea acestor probleme”, a completat acesta.

Momentul în care ne regăsim acum e cel în care tehnologia intră într-o nouă eră de dezvoltare. În martie 2021, UE a anunțat că vrea autonomie digitală până în 2030. Ca să reușească asta, vrea ca cel puțin 80% dintre adulți să aibă competențe digitale de bază, dar și să dispună de identificare electronică și 5G în toate zonele populate.

Mai important în contextul distributed infrastructure e transformarea digitală a întreprinderilor. Astfel, până în 2030, trei din patru companii ar trebui să utilizeze servicii de cloud computing, sisteme de tip big data și inteligența artificială. Totodată, peste 90% dintre IMM-uri ar trebui să ajungă cel puțin la un nivel de bază de adoptare a tehnologiilor digitale.

Următorul nivel digital va fi construit pe ceea ce există în prezent. Ce e de așteptat e ajungerea într-un punct de rafinare, optimizare și îmbunătățire a proceselor. Dezvoltarea cloud, și alegerea unei strategii de tip distributed infrastructure, duc deja către momente în care serviciile pur și simplu funcționează.