Facebook, Google sau Flickr au posibilitatea de a introduce în producție până la 10 versiuni noi de produs pe zi într-un mod transparent utilizatorilor. În lumea eterogenă și agilă din industria IT, dezvoltarea aplicațiilor și a serviciilor devine o provocare atât datorită diversității tehnologiilor și a produselor, cât și datorită numărului acestora.
De asemenea, în companiile software mari unde există departamente de Dezvoltare, Testare și IT implicate în procesul de dezvoltare există nevoia de colaborare strânsă. Pentru asigurarea eficienței colaborarea se realizează prin procese și produse standard care, datorită diversității proceselor și produselor utilizate, devine un obiectiv greu de îndeplinit.
Metodologia de dezvoltare care accentuează colaborarea între echipele de Dezvoltare, Testare și IT se numește DevOps. Această metodologie presupune definirea echipelor, a proceselor și a produselor folosite astfel încât ciclul de producție al unei versiuni să fie cât mai scurt.
În companiile IT românești, care implementează metodologia DevOps, se folosesc adesea soluții specifice, dezvoltate intern, precum scripturi sau diferite utilitare. În cazul proiectelor dezvoltate în regim de outsourcing acestea depind de procesele și/sau produsele impuse de nevoile și posibilitățile clienților. Departamentul și echipamentele IT sunt situate adeseori într-un centru de date la distanță și care este bazat pe servere fizice, virtuale sau cloud.
Prima problemă o constinuie colaborarea între departamentele implicate. Din acest punct de vedere echipa de dezvoltare are, de exemplu, o viziune a calității diferită de viziunea echipei de testare, echipa de testare asupra implementării iar echipa de IT despre produsul dezvoltat și testat de către echipele anterioare. Echipele au nevoie de un limbaj comun pentru comunicarea eficientă.
A doua problemă este aceea de integrare și standardizare a proceselor și produselor utilizate atunci când proiectele, produsele sau clienții se schimbă. Pentru că soluțiile inițiale sunt specifice proiectelor existente, acestea trebuie adaptate noilor cerințe. Costul necesar implementării unei integrări noi este semnificativ și trebuie multiplicat în funcție de numărul de produse noi utilizate și de natura lor.
Prezentul articol prezintă o abordare a celor două probleme bazată pe o strategie de testare automată. Soluția denumită TAO se dorește să fie aplicabilă în lumea DevOps și reprezintă un exemplu și nu o soluție absolută. De asemenea, exemplele și tehnologiile referite sunt din lumea Java, iar această opțiune e justificată de experiența autorului în acest domeniu IT.
Pentru dezvoltarea unei soluții fiabile și scalabile de testare automată, propunem observarea a trei aspecte: mediul de testare, testabilitatea produsului și integrarea continuă
Integrarea continuă reprezintă o practică de promovare a unei integrări frecvente a codului sursă într-un sistem de control al versiunilor central, build-ul frecvent al aplicației împreună cu rularea testelor unitare. Aceasta practică recomandă existența unui sistem de build eficient, a unei suite de teste unitate, a unui sistem de control al versiunilor și a unui sistem de notificare.
Considerând toate aceste aspectele menționate, o arhitectură generică de testare automată este ilustrat în Figura 4.
Produsul HP Operations Orchestration(OO) automatizează procesele IT utilizând fluxuri și operații de automatizare. Operațiile sunt acțiuni atomice care realizează sarcini specifice precum Remote Command Execution, SSH Command, SQL Query.
Fluxurile sunt secvențe de pași interconectați logic, acestea constituind, în parte, câte o instanță a unei operații. Fluxurile reprezintă procese complexe de automatizare cum ar fi: Server Health Check, Provision Environment, Download and Install Application Build.
În prezent, produsul oferă o librărie gratuită cu mai mult de 4000 de operații și fluxuri care acoperă integrări cu tehnologii precum HTTP, LDAP, SSH, WMI, Ant, PowerShell, integrări cu produse precum HP ALM, Jira dar și cu sisteme de virtualizare și cloud cum ar fi VMware vCenter, Hyper-V, Amazon EC2.
Utilizatorul are posibilitatea să folosească fluxurile și operațiile oferite sau să le refolosească, prin crearea de noi fluxuri. Studio este un mediu vizual de dezvoltare care permite crearea de fluxuri folosind structuri și paradigme împrumutate din programarea orientată obiect precum: structuri de date (liste, șiruri), structuri de control (if, case), reutilizare și încapsulare.
Fluxurile dezvoltate și testate în Studio sunt publicate într-o bază de date de unde sunt accesibile folosind o componentă web numită Central. De aici, utilizatorul are posibilitatea să planifice rularea fluxurilor, astfel încât acestea să fie executate de exemplu o dată pe noapte, după fiecare build.
Folosind produsul OO am realizat o suită de fluxuri de automatizare grupate sub numele TAO (Test Atomation Orchestration). Soluția rezolvă problema de colaborare între echipele de dezvoltare, testare și IT, printr-un mediu vizual ușor de utilizat și de înțeles de către persoanele cu minimă experiență în limbajele de programare.
Problema de integrare între diferitele tehnologii și produse este rezolvată folosind fluxurile și operațiile oferite de către acest produs. În Figura 5 sunt reprezentate câteva fluxuri utilizate folosind HP Operations Orchestration.
Există produse similare care oferă funcționalități asemănătoare cu OO dintre care putem enumera: Electric Commander, Microsoft System Center Orchestrator, UC4. Electric Commander reprezintă, prin numărul de integrări și tehnologii DevOps utilizate (sisteme de build, servera de aplicații, produse de testare), un competitor pentru produsul OO. Ambele produse oferă un mediu de dezvoltare vizual a fluxurilor, opțiuni de planificare a rulării acestora și sisteme de raportare și monitorizare. Pe de altă parte, OO oferă un set de fluxuri mult mai extins pentru provizionare și integrare cu alte produse precum Jira, HP ALM/QC, Amazon EC, HP Server Automation etc.
Următorii noștri pași sunt extinderea fluxurilor TAO care sunt necesare în diferitele scenarii DevOps precum integrarea cu produse de analiză a codului (Sonar) și cu aplicații de provizionare open-source. Ne propunem să creștem gradul de conștientizare a calităților produsului HP Operations Orchestration în general și a soluției TAO în particular prin crearea unei comunități publice care să înlesnească și să încurajeze accesul la fluxurile deja existente.
HP Operations Orchestration, Official Webpage, Hewlett-Packard, November 2012,
HP Operations Orchestration, Concepts Guide, Hewlett-Packard, June 2010,
Electric Commander, Official Webpage, Electric Cloud, November 2012,
Top 10 Virtualization Technology Companies Webpage, Keneth Hess, 2010,
Wikipedia, The Free Encyclopedia DevOps Webpage, November 2012.