Sunteți pe pagina 1din 26

Sisteme de build distribuite

Studiu de caz: Jenkins

Bogdan Baran, MISS2


Agenda

Introducere
Motivatie
Ce este un sistem de build distribuit
Automatizarea unui build
Sisteme de build distribuite vs paralele
Consideratii/Avantaje
Jenkins Introducere
Jenkins Sistem de build distribuit
Jenkins Modelul master-slave
Concluzie
Q&A
Bibliografie
1 Introducere
Introducere

Sistem distribuit
o colectie de sisteme independente
care coopereaza ntre ele n vederea
atingerii unui obiectiv specific

Sistem de build distribuit


obiectiv = build-ul unei solutii

Scop
automatizarea procesului de build
Timp mai mic de compilare
2 Motivatia
Motivaia

n cazul unei solutii complexe, pe


parcursul dezvoltarii, schimbarile dese
implica build-uri mai dese, iar daca
acestea iau mult timp, duce la scaderea
performantei.

De ce conteaza?
Timp pierdut de dezvoltatori
Schimbarea contextului
Efectul de botleneck
Calitate produsului
3 Ce este un sistem de build distribuit
Ce este un sistem de build distribuit

Model
Master coordonator (ex. Jenkins)
Workers/slaves realizeaza build-urile

Cum funcioneaz
Masinile slaves fac parte dintr-o ferma de
calculatoare, iar masterul orchestreaza
sarcini peste acele masini.
Fiecare masina slave este conectata la
master printr-o conexiune TCP/IP
bidirectionala.
Ce este un sistem de build distribuit

Workers/salves pot sta in spatele unor


firewall-uri, NAT-uri si ruleaz build-uri
specifice unei platforme (Win, Linux, etc.)
4 Automatizarea unui build
Automatizarea unui build

Masterul asculta evenimente


4 Sisteme de build distribuite vs paralele
Sisteme de build distribuite vs paralele

Build paralel
Poate rula pe o singura masina
Necesita hardware performant (CPU, RAM)

Limitari
Din cauza dependentelor, modulele trebuie
rulate ntr-o ordine predefinita

Exemple
make -j
Ccache
RAMDisk
Sisteme de build distribuite vs paralele

Exemple
MSBuild din Visual Studio
Headere precompilate
5 Consideratii/Avantaje
Consideratii/Avantaje

Consideratii
nvestitii: hardware sau cloud
Dependentele implicite pot afecta build-ul
Unitatile partajate pot deveni un botleneck
Sincronizarile de ceas pot ntrerupe build-ul
Esecuri n noduri intermediare afecteaza
ntregul build
Overhead n invocarea sarcinilor

Avantaje
Timp de build mai redus
Eficientizare si automatizare
5 Jenkins
Jenkins - Introducere

Istoric
2004 Hudson (unealta de integrare
continua) create de Sun
2005 primul release
2011 fork din Hudson si isi schimba
numele in Jenkins (disputa cu Oracle)
2013 > 500 membri pe GitHub
Jenkins - Introducere

Caracteristici
Scris in Java
Open source
Server de automatizare a build-urilor
Unealta de integrare &livrare continua
Instalare usoara Win, Mac OS, Linux
Configurare usoara via unei interfete web
Extensibil sute de pluginuri
Distribuit
Jenkins - Introducere
Jenkins - Sistem de build distribuit

Caracteristici
Un server principal (master)
Agenti de build (pot rula pe 100+
calculatoare cu arhitecturi si platforme
diferite)
Un job dispatcher intelegent
Topologie de deployment flexibil
Agent de monitorizare (Health)
Instalare automata a JDK, Ant si
Maven
Jenkins Modelul master-slave

Master
Efectueaza operatii de baza (CSV, notificari,
rapoarte, autentificare, istoric)
Coordonator
Ofera o interfata UI

Slave
Agenti de build
Executanti
heavy work
Jenkins Modelul master-slave

Vedere generala
Concluzii

Sistemele de build distribuite


Se potrivesc proiectelor complexe, ale
caror build-uri dureaza foarte mult
Parte a procesului de automatizare
Implica niste costuri suplimentare
datorita investitiilor necesare
Timp de build mai redus
Poate creste eficienta dezvoltatorilor
de software
Calitate mai buna in produsul livrat
clientului
Multumesc!
Intrebari?
Ma puteti gasi la
andrei.baran@info.uaic.ro
Bibliografie

http://electric-
cloud.com/plugins/build-automation
https://support.smartbear.com/viewar
ticle/9503/
https://www.cloudbees.com/blog/para
llelism-and-distributed-builds-jenkins
https://www.cloudbees.com/jenkins/ab
out/distributed-builds
https://www.packtpub.com/mapt/book
/Application%20Development/9781784
390891/2