un blog de Radu Dumitru

►► canalele mele de YouTube: youtube.com/RaduDumitru (personal) și youtube.com/NwraduBlog (tech) ◄◄

DevOps? Microservices? Iată o explicație simplă pentru aceste concepte

23 Mar 2017  ·

TEHNOLOGIE  ·

9 comentarii

Locurile de la festivalul de tehnologie #INGlovesIT s-au ocupat în timp record, aș spune eu, având în vedere că suntem în 23 martie și evenimentul are loc pe 7 aprilie. Workshop-urile s-au dat primele, pe 20 martie erau deja fully booked, cum se zice, iar acum și toate locurile de la prezentări au fost ocupate. Sper că ați apucat unul, dacă vi-l doreați.

#INGlovesIT este un festival internațional aflat la prima ediție (care are loc în România) și aduce, pentru o zi – 7 aprilie, la Deschis Gastrobar, zona Timpuri Noi –, mai mulți vorbitori internaționali pentru a le prezenta dezvoltatorilor niște lucruri destul de avansate și nișate precum machine learning, TensorFlow, planuri post-lansare pentru aplicații, securizare prin containere și niveluri multiple de protecție, modularizare și microservicii și alte asemenea. Agenda este aici.

Sunt patru teme mari:

  • big data
  • cyber-security
  • microservicii
  • DevOps

Big data și cyber-security sunt deja destul de cunoscute, măcar la nivel de concept, chiar dacă la implementare ar mai fi mult de lucru în toate companiile. Cel puțin, în ultimele luni, se vede că la securitate cibernetică nu-i ceea ce ar trebui să fie, indiferent că vorbim de servicii mari sau mici. Cred că nu este lună în care să nu aflăm de încă un hacking serios pe la cine știe ce companie, iar dacă afectează un  start-up sau o firmă de mici dimensiuni, e ca și închisă.

Pentru celelalte două, însă, am căutat și eu explicații suplimentare.

Microservices se referă, de fapt, la un tip de arhitectură software în care o aplicație este construită din bucăți mici, independente (acele servicii din nume), această modularitate venind cu multe avantaje: serviciile pot fi testate individual, pot fi actualizate individual dacă se descoperă buguri, pot fi dezvoltate de echipe diferite. Singura condiție este ca acele echipe să vorbească din când în când între ele pentru a pune la punct modul în care aceste microservicii se îmbină unitar în aplicația respectivă, dar de obicei genul acesta de lucruri se stabilesc încă din faza de concept.

Un exemplu bun poate fi o aplicație de mobile banking. Opțiunea de a vedea pe hartă ATM-urile din zonă nu are nimic de-a face cu opțiunea de a plăti, direct în telefon, facturile de la furnizorii de utilități. Cele două sunt microservicii separate, pot fi dezvoltate separat, trebuie doar avut grijă ca design-ul să fie unitar și meniul principal să afișeze toate opțiunile.

Poate că veți spune că așa este normal să se dezvolte orice aplicație, pentru că sună logic. Eu am văzut însă și companii mari care, la jumătate de an după ce plecase dezvoltatorul unei aplicații, încă îl mai chemau din când în când pe acolo ca să le arate ce și cum făcuse, pentru că, lipsind modularitatea, noii programatori abia se prindeau cum se îmbina o treabă cu alta și cum funcționau ele.

Mie arhitectura de microservicii mi se pare foarte avantajoasă, iar părțile negative sunt minore. Modularitatea asigură o dezvoltare paralelă mai eficientă și o testare mai eficientă, plus un dinamism în organizarea echipelor în funcție de cât de dificile sunt acele servicii.

Partea cu DevOps este și mai interesantă. Este un concept ceva mai abstract despre un mod de lucru ce presupune o colaborare mult mai strânsă între dezvoltatorii de software și cei din departamentele operaționale (development și operations).

DevOps presupune modificări în structura organizațională a unei companii. Într-un model tradițional, dezvoltatorii sunt niște oameni de la un etaj care fac programe sau unelte IT pentru oamenii de la alt etaj, care se trezesc cu ele și trebuie să le utilizeze. Țin minte o astfel de implementare în companie a unui software ERP. Producătorii ERP-ului făcuseră noul soft după procedurile oficiale și după ce le-au zis șefii de departamente că ar trebui făcut, dar cei care urmau să utilizeze ERP-ul, angajații care chiar lucrau cu el, ar fi avut nevoie de tot felul de scurtături sau rapoarte mult mai de actualitate pentru afacerile curent.

Nu i-a întrebat nimic, nu a existat exact colaborarea pe care conceptul DevOps o introduce. Rezultatul? A durat câteva luni tranziția la noul soft, s-a muncit mult mai lent până l-au învățat, iar companiile s-au judecat un an și jumătate pe acuzația că softul prost făcut le-a adus pierderi de bani, de eficiență și de oameni.

DevOps introduce această colaborare mult mai strânsă între dezvoltator și utilizator (să-i zicem așa), practic formând echipe mixte. Dezvoltarea este mai dinamică, testarea mai rapidă, reacția “clientului” se vede imediat.

Cea mai bună analogie pe care o pot face este cu uneltele clasice. Dacă-i ceri cuiva o unealtă cu care să bați un șurub, îți va face întâi o cărămidă, să lovești cu ea. Dacă ar colabora strâns cu utilizatorul uneltei, acesta îi va spun că ar avea nevoie și de un mâner, nici gros și nici subțire, că un grip cauciucat ar fi binevenit și că lungimea totală ar fi bine să fie sub 45 cm, că atât de lungă îi este trusa de scule și trebuie să încapă acolo. Iese un ciocan mai bun.

DevOps este genul de lucru pe care afli că l-a implementat o companie și, după un an, și-au redus cheltuielile cu 8% și timpul de dezvoltare cu 23% (cifre scoase din burtă, probabil că la INGlovesIT se vor prezenta studii de caz reale, poate chiar de la organizatorul ING Software Development Center), ceea ce a dus la o economie de bani și un team-building care a rămas legendar, la finalizarea proiectului.

Lumea IT-ului este într-o continuă schimbare, sper că cei care lucrează în ea, indiferent de nivel sau dimensiunea companiei, sunt la curent cu aceste schimbări. Ar trebui să fie, pentru dezvoltarea personală.

    9 comentarii

  1. Radu ma scuzi dar cui ai dat parola de la blog? Gherla cu DevOps nu prea seamana cu calitatea generala a articolelor…
    DevOps nu are nici o treaba cu partea de Operational. E vorba de departamentul care se ocupa de deployment and so on…
    De la wiki citire: DevOps (a clipped compound of “software DEVelopment” and “information technology OPerationS”) is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and …

    Just sayin

      (Citează)

    • Alex:
      Radu ma scuzi dar cui ai dat parola de la blog? Gherla cu DevOps nu prea seamana cu calitatea generala a articolelor…
      DevOps nu are nici o treaba cu partea deOperational. E vorba de departamentul care se ocupa de deployment and so on…
      De la wiki citire: DevOps (a clipped compound of “software DEVelopment” and “information technology OPerationS”) is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and …

      Just sayin

      Daca tot ai reusit sa intri pe Google atunci mai incearca si alte link-uri, nu te opri la primul, poate afli ca DevOps are totusi legatura cu operationalul…

        (Citează)

    • @Alex: eu zic că termenul este și mai ușor de înțeles și mai bine explicat în felul cum am pus eu problema. Nu văd de ce acel gen de organizație ar trebui limitat la deployment.

        (Citează)

  2. DevOps e cu totul altceva.

    Ops nu se refera la “maimuteii” care dau clicka-clika de la diverse departamente non-tehnice (adica end-userii produsului) ci se refera la ceea ce uzual se numeste dept. de Infrastructura:
    Ops: is a blanket term for systems engineers, system administrators, operations staff, release engineers, DBAs, network engineers, security professionals.

    La fel ca si Full Stack Developer, DevOps este un concept care o sa dispara asa cum a si aparut, adica rapid. Nu poti face de toate la acelasi nivel calitativ, atunci cand diversitatea tehnologica este atat de mare.

    Cat despre microservicii, da, sunt singurul mod in care poti sa te asiguri ca o aplicatie are o durata de viata mai mare de 5-6 ani (si 2-3 “generatii” de dezvoltatori). Altfel o sa ai mereu o bomba cu ceas sub fund, pe care toti noii devi o sa ti-o blesteme, iar din “refactorizari” nu o sa mai iesi niciodata.

    Totusi, la micile dezavantaje, trebuie sa te gandesti ca efortul de dezvoltare poate fi lejer de 3-4 ori mai mare vs. monolit app.

    Ca un exemplu, gandeste-te ca in loc de un select in baza de date (care sa iti aduca absolut ce date vrei, cu flexibilitatea specifica SQL) tu trebuie sa dezvolti un intreg API care sa permita interogari specifice modulului respectiv.

      (Citează)

  3. Pai daca tot faci articol cu asta, nu era bun si un giveaway cu invitatie la event? :D Just joking, dar tot imi pare rau ca am ratat anuntul pentru eveniment, ca ar fi fost interesant de vazut ce se face in RO d.p.d.v al Big Data (deja lucrez in domeniu, dar Romania imi pare cat de cat in urma in situatia asta si asta nu prea imi place) . Oh well, next time.

      (Citează)

  4. nwradu:
    Anunțul a fost săptămâna trecută, s-a dus.

    Am vazut cand am intrat la ei pe site, din pacate nu eram pe faza cand a aparut.

      (Citează)

    Alătură-te discuției, lasă un mesaj

    E-mail-ul nu va fi publicat. Fără înjurături și cuvinte grele, că vorbim prietenește aici. Gândiți-vă de două ori înainte de a publica. Nu o luați pe arătură doar pentru că aveți un monitor în față și nu o persoană reală.

    Apăsați pe Citează pentru a cita întreg comentariul cuiva sau selectați întâi anumite cuvinte și apăsați apoi pe Citează pentru a le prelua doar pe acelea. Link-urile către alte site-uri, dar care au legătură cu subiectul discuției, sunt ok.


    Prin trimiterea comentariului acceptați politica de confidențialitate a site-ului.



    Vreți un avatar în comentarii? Mergeți pe gravatar.com (un serviciu Wordpress) și asociați o imagine cu adresa de email cu care comentați.

    Dacă ați bifat să fiți anunțați prin email de noi comentarii sau posturi, veți primi inițial un email de confirmare. Dacă nu validați acolo alegerea, nu se va activa sistemul și după un timp nu veți mai primi nici alte emailuri

    Comentariile nu se pot edita ulterior, așa că verificați ce ați scris. Dacă vreți să mai adăugați ceva, lăsați un nou comentariu.

sus