Astăzi ne vom îndrepta atenția către istoria termenului, vom discuta despre dificultățile implementării CI și vom oferi câteva instrumente populare care vor ajuta în utilizarea acestuia.
/ Flickr / / / Фото изменено
Termenul
Continuous Integration (integrare continuă) – o abordare în dezvoltarea aplicațiilor, care presupune realizarea frecventă a build-urilor de proiect și testarea codului.
Scopul este de a face procesul de integrare previzibil și de a identifica posibilele bug-uri și erori într-o fază incipientă, pentru a avea mai mult timp pentru corectarea lor.
Pentru prima oară, termenul Continuous Integration a apărut în 1991. Acesta a fost introdus de creatorul limbajului UML (Grady Booch). Inginerul a prezentat conceptul CI ca parte a propriei sale practici de dezvoltare – . Aceasta implica o rafinament incremental al arhitecturii în proiectarea sistemelor orientate pe obiect. Grady nu a descris cerințe specifice pentru integrarea continuă. Dar mai târziu, în cartea sa „”, el a menționat că sarcina metodei este de a accelera livrarea „rilizelor interne”.
Istoria
În 1996, CI a fost adoptat de creatorii metodologiei (XP) – (Kent Beck) și (Ron Jeffries). Integrarea continuă a devenit unul dintre cele douăsprezece principii fundamentale ale abordării lor. Fondatorii XP au clarificat cerințele metodologiei CI și au subliniat necesitatea de a realiza build-uri ale proiectului de mai multe ori pe zi.
La începutul anilor 2000, metodologia integrarea continuă a fost promovată de unul dintre fondatorii Agile Alliance, (Martin Fowler). Experimentele sale cu CI au dus la apariția primului instrument software în acest domeniu – CruiseControl. Utilitarul a fost creat de colegul lui Martin, Matthew Foemmel.
Ciclul de build în instrument este implementat sub forma unui daemon, care verifică periodic sistemul de control al versiunilor pentru modificări în baza de cod. Soluția poate fi descărcată și astăzi – este sub licența similară BSD.
Odată cu apariția software-ului pentru CI, tot mai multe companii au început să adopte această practică. Conform unui studiu Forrester [pg.5 ], în 2009, 86% din cele cincizeci de companii tehnologice intervievate utilizau sau implementau metode CI.
Astăzi, practica Continuous Integration este aplicată de organizații din diverse industrii. În 2018, un mare provider de cloud a efectuat un sondaj printre specialiști IT din domeniul serviciilor, educației și finanțelor. Dintre cele șase mii de respondenți, 58% au răspuns că folosesc instrumente și principii CI în activitatea lor.
Cum funcționează
Fundamentele integrării continue constau în două instrumente - sistemul de control al versiunilor și serverul CI. Acesta din urmă poate fi fie un dispozitiv fizic, fie o mașină virtuală în mediu cloud. Dezvoltatorii încarcă cod nou o dată sau de mai multe ori pe zi. Serverul CI îl copiază automat împreună cu toate dependențele și efectuează compilarea. Apoi, rulează teste de integrare și unitate. Dacă testele au succes, sistemul CI desfășoară codul.
Schema generală a procesului poate fi reprezentată în următorul mod:

Metodologia CI impune un set de cerințe dezvoltatorilor:
- Să rezolve problemele imediat. Acest principiu a fost preluat în CI din programarea extremă. Corectarea bug-urilor este cea mai prioritară sarcină pentru dezvoltatori.
- Să automatizeze procesele. Dezvoltatorii și managerii trebuie să caute constant «gâturile de sticlă» în procesul de integrare și să le elimine. De exemplu, adesea «gâtul de sticlă» al integrării testarea.
- Să efectueze compilări cât mai des posibil. Cel puțin o dată pe zi, pentru a sincroniza activitatea echipei.
Dificultăți de implementare
Prima problemă sunt costurile operaționale ridicate. Chiar dacă compania folosește instrumente CI open-source (despre care vom discuta mai departe), tot va trebui să aloce resurse pentru întreținerea infrastructurii. Totuși, soluția pot fi tehnologiile cloud.
Acestea simplifică compilarea configurațiilor computerizate de diferite mărimi. În plus, companiile plătesc doar pentru resursele folosite, ceea ce ajută la economisirea infrastructurii.
Conform sondajelor [pg.14 ], integrarea continuă crește încărcătura asupra angajaților companiei (cel puțin pentru o perioadă). Aceștia trebuie să învețe să folosească instrumente noi, iar colegii nu întotdeauna îi ajută cu instruirea. Prin urmare, trebuie să se adapteze la noi cadre și servicii „în mișcare”.
A treia dificultate - problemele cu automatizarea. Acestea îi afectează pe cei care au un volum mare de cod vechi, care nu este acoperit de teste automatizate. Aceasta duce la situația în care codul este pur și simplu rescris înainte de implementarea completă a CI.

/ Flickr / /
Cine utilizează
Între primele companii care au apreciat beneficiile acestei metode s-au numărat giganții IT. Google a implementat integrarea continuă în mijlocul anilor 2000. CI a fost introdus pentru a rezolva problemele de întârziere în funcționarea motorului de căutare. Integrarea continuă a ajutat la identificarea și remedierea rapidă a problemelor. În prezent, CI este utilizat de toate diviziile gigantului IT.
Integrarea continuă ajută și companiile mai mici, iar instrumentele CI sunt folosite de organizații financiare și medicale. De exemplu, în cazul Morningstar, serviciile de integrare continuă au ajutat la aplicarea corecțiilor de securitate cu 70% mai repede. Iar platforma medicală Philips Healthcare a reușit să dubleze viteza de testare a actualizărilor.
Instrumente
Iată câteva instrumente populare pentru CI:
- — unul dintre cele mai populare sisteme CI. Acesta suportă peste o mie de pluginuri pentru integrarea cu diferite VCS, platforme cloud și alte servicii. Jenkins este utilizat și de noi în 1cloud: instrumentul . Acesta verifică regulat ramura Git destinată testării.
- — un framework Python pentru crearea propriilor procese de integrare continuă. Configurarea inițială a instrumentului este destul de complicată, însă acest lucru este compensat de posibilitățile extinse de personalizare. Printre avantajele framework-ului, utilizatorii subliniază consumul redus de resurse.
- — un server dezvoltat de Pivotal care utilizează containere Docker. Concourse CI se integrează cu orice instrumente și sisteme de control al versiunilor. Dezvoltatorii observă că sistemul este potrivit pentru lucrul în companii de orice dimensiune.
- — un instrument integrat în sistemul de control al versiunilor GitLab. Serviciul funcționează în cloud și folosește fișiere YAML pentru configurare. La fel ca și Concourse, Gitlab CI containere Docker, care ajută la izolarea diferitelor procese unele de altele.
- — un server CI cloud care funcționează cu GitHub, GitLab și BitBucket. Platforma nu necesită o configurare inițială îndelungată - în Codeship sunt disponibile procese CI standard preconfigurate. Pentru proiecte mici (până la 100 de build-uri pe lună) și open source, Codeship este disponibil gratuit.
Materialele din blogul nostru corporativ:
Sursa: habr.com
