Ce reprezinta un ”load balancer”?

Acest articol face parte dintr-o serie, in care ne propunem sa explicam in termeni cat mai simpli, o parte din notiunile folosite in industria IT.

Pentru ca o mare parte din termenii folositi in industrie sunt in limba engleza si nu au neaparat o traducere exacta in limba romana. De aici si confuzia multora in ceea ce priveste semnificatia multora dintre acesti termeni.

Asadar, astazi vom vorbi despre “Load balancer

Cand ne referim la termenul de “load balancing”, ce vrem sa spunem este procesul prin care se face distributia traficului pe care serverele aplicatiei noastre il primesc de la consumatorii ei.

De ce avem nevoie de load balancing ?

Pentru ca aplicatiile din zilele noastre sunt accesate concomitent de un numar foarte mare de utilizatori in acelasi timp. Acest lucru pune presiune pe serverele aplicatiei si poate cauza un timp de raspuns mai mic asupra actiunilor utilizatorilor finali, ceea ce inseamna o nemultumire a acestora legata de modul in care aplicatia raspunde la comenzi.

Sa luam exemplu Instagram, unde sute de mii sau milioane de oameni cer sa acceseze fotografii in acelasi timp.
Serverul trebuie sa fie capabil sa raspunda cu fotografia ceruta in cel mai scurt timp posibil.

Ca acest lucru sa se intample dezvoltatorii adauga din ce in ce mai multe servere care sa proceseze aceste requesturi cat mai repede.

Astfel avem nevoie de o modalitate de a distribui aceste request-uri, catre toate serverele aplicatiei, si aici apare nevoia de load balancing.

Un load balancer se intrepune intre utilizatorii finali si serverele aplicatiei cu scopul de a :

  • Distribui requesturile venite din partea utilizatorilor pe mai multe servere
    • Sa asigure disponibilitatea si accesibilitatea aplicatiei prin distributia cererilor doar catre serverle care le pot gestiona (nu au load mare, nu sunt offline, etc)
    • Permite adaugarea si scoaterea de servere din ecosistemul aplicatiei in functie de cerinte
    • Automat redirecteaza toate requesturile cand un server trece offline catre restul serverelor

Mai jos o sunt cativa algoritmi care se folosesc pentru load balancing:

Round robin : Acest tip de algoritm permite ca requesturile sa fie distribuite secvential catre fiecare server in parte.

Weighted Round Robin : Acest alogritm functioneaza la fel ca metoda round robin, doar ca in cazut acesta, fiecarui server I se atribuie o pondere, si serverul cu o pondere mai mare va primi mai mult trafic iar serverul cu o pondere mai mica ba primi un trafic mai mic.

Least connection : Acest algoritm ia in considerare incarcarea serverului, astfel, traficul va fi distribui pe baza numarului de sesiuni active. Serverul cu cele mai putine sesiuni active va fi favorizat in a primi traficul.

Weighted least connection:  Acest algoritm este construit pe baza technicii de mai sus, doar ca in plus fiecarui server I se atribuie o pondere. Daca doua servere detin acelasi numar de sesiuni active, atunci se ia in considerare si ponderea, iar traficul va fi directionat catre serverul cu ponderea mai mare.

Least response : Acest algoritm ia in considerare atunci cand redirectioneaza traficul catre un server, care este serverul cu cel mai mic timp de raspuns si care are cele mai putine sesiuni active.

Acestia sunt doar cativa algoritmi care sunt folositi, in general difera in functie de cum sunt construite applicatiile din punt de vedere architectural.

Ce reprezinta “Technology stack” sau “Tech stack”

Acest articol face parte dintr-o serie, in care ne propunem sa explicam in termeni cat mai simpli, o parte din notiunile folosite in industria IT.

Pentru ca o mare parte din termenii folositi in industrie sunt in limba engleza si nu au neaparat o traducere exacta in limba romana. De aici si confuzia multora in ceea ce priveste semnificatia multora dintre acesti termeni.

Asadar, astazi vom vorbi despre “Technology stack”, “Tech stack” sau “Application stack”

In interiorul industriei IT, folosim zilinc aceasta expresie pentru a ne referi la technologiile care sunt folosite intr-un anumit proiect.

Exemplu : Care este tech stack-ul proiectului tau ?

Intrebarea se refera la :

Care sunt limbajele de programare  si bazele de date care sunt folosite in interiorul proiectului.

Care sunt technologiile folosite in interiorul aceluiasi proiect si care sunt produsele software care sunt folosite pentru dezvoltarea produsului.

Putem spune ca este o sumarizare a technologiilor folosite pentru crearea unui produs software.

In general, atunci cand recruteaza, companiile se refera direct la tech stack-urile folosite pentru a recruta candidati.

Cateva categorii care compun un tech stack sunt (nu va faceti griji pentru denumirile in engleza, le vom explica in articole ulterioare):

Limbajele de programare : Aceste sunt alese in functie de specificul aplicatiei pentru care se dezvolta, daca este doar pentru aparate mobile sau de orice tip, in functie de zona de dezvoltare, daca vorbim de partea de server sau de partea cu care utilizatorul final interactioneaza (UI = user interaction; website sau interfata unei aplicatii).

Exemple de limbaje de programare populare sunt : Java; Python, JavaScript, Ruby, Swift, C#, C++, Go, PHP

Servere si load balancing  : Acestea reprezinta partea de server, partea de distributie a continutului in cadrul retelei, partea de rutare si de cache (datele “cache” sunt informatii transmise de catre un website sau o aplicatie care sunt ulterior stocate, pentru a fi folosite mai tarziu)

Servicii populare in aceasta categorie sunt : AWS, Google Cloud, Azure, Apache, Ngnix, CloudFlare

Stocare si cautare de date : Aceasta parte este reprezenta de catre bazele de date si alte tipuri de aplicatii care iti permit sa stochezi si sa cauti in acele stocuri de date. Spre exemplu date legate de produsele unui site de cumparaturi, sau datele legate de comportamentul unui user care mai tarziu iti permit sa imbunatatesti aplicatie pe baza acestui comportament.

Produse populare in aceasta categorie sunt : MySql, MongoDD, Cassandra, PostgresSql, Azure SQL, RedShift, Oracle

Frameworks pentru zona de backend :  Simplist spus, framework este o colectie de limbaje, librarii si alte utilitati care sunt folosite de catre programatori pentru a crea aplicatii. Tot simplist, backend se refera la zona de management de contiut a aplicatie. Este compus din mai multe parti (server, baza de date, aplicatie).

Produse populare in aceasta categorie sunt : Spring, Django, Laravel, RubyOnRails, .Net

Frameworks pentru zona de frontend : Simplist spus frontend se refera la zona de interactiune cu userul final. Website-ul sau interfata unei aplicatii.

Produse populare in aceasta categorie sunt : AngularJs, React, Flutter, Boostrap, JQuery, EmberJS

Monitorizare : In aceasta categorie intra produsele folosite pentru a tine sub observatie performanta si modul in care o aplicatie se comporta in momentul in care este folosita. Se iau in considerare diverse tipuri decomportamente (performanta, scalabilitate, etc). Ele analizeaza intreaga aplicatie de la bazele de date pana la zona de interactiune cu utilizatorul final.

Produse populare in aceasta categorie sunt : DataDog, Nagios, Zabbix, Dynatrace, AppDinamics

Acestea sunt doar cateva dintre categorii, dar care sunt printre cele mai importante de mentionat.

Acum ca sa ne facem o idee si mai clara, haideti sa vedem care sunt cateva dintre tech stack-urile catorva dintre cele mai uzuale aplicatii de zi cu zi :

SnapChat :

Limbaje de programare:  Java, Kotlin, Objective-C, Swift, JavaScript

            Frameworks: AngluarJs, JQuery, React, Boostrap

            Cloud: Google App Engine, Google Compute Engine, Google Cloud Datastore

            Baze de date: MySql, MongoDB, Redis

Netflix:

Limbaje de programare:  Java, Python, Kotlin, Swift, JavaScript

            Frameworks: NodeJS, React, Restify, RxJS

            Cloud: Amazon EC2, AMAzon S3, Amazon RDS, Amazon EMR etc

            Baze de date: MySql, PostgresSQL, Redis, Cassandra

Uber:

Limbaje de programare:  Java, Python, Objective-C, Swift, JavaScript, GO

            Frameworks: NodeJS, React, ExpressJS, BackboneJS

            Cloud: Amazon EC2, AMAzon S3, Amazon RDS, Amazon EMR etc

            Baze de date: MySql, PostgresSQL, Redis, Cassandra, MongoDB

Ce reprezinta ”SaaS”?

Acest articol face parte dintr-o serie, in care ne propunem sa explicam in termeni cat mai simpli, o parte din notiunile folosite in industria IT.

Pentru ca o mare parte din termenii folositi in industrie sunt in limba engleza si nu au neaparat o traducere exacta in limba romana. De aici si confuzia multora in ceea ce priveste semnificatia multora dintre acesti termeni.

Asadar, astazi vom vorbi despre “Saas” sau “Software as a Service

SaaS (Software ca serviciu) este unul din cele trei mari categorii ale cloud computing. Pe scurt, cloud computing este un concept care reprezinta un ansamblu distribuit de servicii, aplicatii si baze de date, pe care utilizatorul le acceseaza via internet, fara a avea nevoie sa le instaleze sau sa le configureze local.

O traducere in limba romana pentru termenul cloud computing nu exista.

Dar sa revenim. Cum spuneam, Saas este unul din cele trei mari categorii ale cloud computing, alturi de IaaS (Infrastructure as a Service = Infrastructura ca serviciu) si PaaS (Platform as a Service = Platforma ca serviciu)

SaaS ne permite sa utilizam aplicatii care nu sunt instalate la noi pe calculator, sau in reteaua noastra. Putem spune astfel, ca orice aplicatie care ofera un serviciu si pe care o accesam via internet reprezinta un SaaS.

Multi oameni folosesc deja SaaS fara sa stie ca o fac. Aplicatii ca Gmail, Hotmail, Yahoo, Google Docs, WordPress, Slack, toate sunt SaaS.

Chiar si Netflix este tot un SaaS. Netflix vinde un serviciu pe care il platesti sub forma de subscriptie lunara pentru a urmari filme si documentare care sunt licentiate (deci nu pot fi descarcate gratuit).

Tot ce tine de partea de hardware si software necesar pentru functionarea aplicatiei este gestionata de catre cei care pun la dispozitie aceasta aplicatie, din partea noastra neffind necesar sa instalam sau sa configuram aplicatia respectiva.

Aplicatiile SaaS sunt atat pentru scop personal cat si pentru bussines. Cum spuneam sim ai sus, Gmail este un exemplu foarte uzual pentru scop personal. Pentru firme, aplicatii gen Salesforce, Sap, sau diverse alte ERP-uri sunt foarte commune.

O confuzie des intalnita, este daca toate website-urile sunt SaaS ?, pentru ca sunt applicatii accesibile via internet.

Raspunsul simplu este nu. Raspunsul mai lung suna asa: Nu toate website-urile ofera servicii. Multe website-uri sunt doar pentru prezentare, sunt bloguri sau doar pentru impartasit idei si asa mai departe. Dar nu ofera un serviciu pe care utilizatorul final il foloseste.

Cateva (doar cateva) exemple de tipuri de servicii sunt mai jos: