Curs Continuous Integration: Build a Complete Flow

Cursul acopera concepte importante de DevOps si ofera solutii cu privire la implementarea unui flux de integrare continua in cadrul echipei.

Înscrie-te:

Lista de clase online Self Study cu Video la care te poți înscrie:

Cursul se desfășoară online, fără prezență la sala de curs.

Cursantului i se creează cont pe https://cursuri.telacad.ro. Pe acest cont are acces la materialul scris de către instructorii Telecom Academy

Cursul trebuie promovat în cel mult 4 luni de la momentul înscrierii.

Preț pentru persoane fizice: 250 lei

Înscrie-te acum
Pachetul promotional este format din 2 cursuri ce se desfasoara la distanta:

1. Cursul Jenkins Fundamentals : se desfășoară online, fără prezență la sala de curs.Cursantului i se crează cont pe https://cursuri.telacad.ro. Pe acest cont are acces la materialul scris și materialele video înregistrate de către instructorii Telecom Academy

Cursul trebuie promovat în cel mult 4 luni de la momentul înscrierii.

2. Cursul Continuous Integrations : se desfășoară online, fără prezență la sala de curs.Cursantului i se crează cont pe https://cursuri.telacad.ro. Pe acest cont are acces la materialul scris si materialele video realizate de către instructorii Telecom Academy

Cursul trebuie promovat în cel mult 4 luni de la momentul înscrierii.

Tarif: 350 lei – persoane fizice
Înscrie-te acum Te afli în cursul 1 din 2 Vezi detalii curs 2 din 2
Nivel

Advanced

Nr. cursuri

6

Studiu individual

8-10 ore/săpt.

Suport de curs scris

Materiale video

Limba de predare

Română

Limba materialului scris

Română

Metode de evaluare
  • examene de capitol
  • examen final teoretic
  • proiect
Tarife Curs Online cu Video
250 lei - student
250 lei - pers. fizică
350 lei - pers. juridică

Despre curs

  • De ce Continuous Integration?

Integrarea continua este un concept frecvent intalnit in discutiile dezvoltatorilor software despre metodele moderne de lucru, dar mai ales in tot ceea ce inseamna ideea de DevOps. Acest concept, cunoscut si prescurtat sub forma de CI (“Continuous Integration”), are la baza ideea ca fiecare membru din cadrul unei echipe care se ocupa de un anumit proiect, aplicatie, sa integreze codul sursa modificat intr-un depozit impartasit de toata echipa. CI vizeaza reducerea ineficientelor ciclului de construire, permitand dezvoltatorilor sa compileze codul echipei dintr-un depozit de control al versiunilor partajate. In acelasi timp, CI permite automatizarea procesului de testare a codului sursa in asa fel incat membrii unei echipe sa isi poate configura fluxul de lucru pentru a integra teste automate si unitare.

Totodata, este important  de mentionat ca in zilele nouastre, conceptul de integrare continua este de obicei utilizat alaturi de un flux de lucru software precum Agile.  Imbinand aceste doua aspecte, sarcinile in cadrul unei echipe sunt distribuite intr-un mod optimizat in cadrul echipei de dezvoltare a proiectului, pentru a fi realizate si livrate la timp. Sarcinile vor putea fi dezvoltate in acelasi timp, independent de catre unul sau mai multi dezvoltatori. Toate aceste aspecte duc la stabilirea unei infrastructuri de DevOps bine pusa la punct in cadrul echipe.

  • De ce DevOps?

Conceptul de CI face partea dintr-o arie mult mai mare cunoscuta sub numele de DevOps.  DevOps inseamna o multime de lucuri diferite pentru oameni diferiti, deoarece discutiile din jurul sau acopera multe concepte. Oamenii vorbesc despre DevOps ca fiind: “colaborare pentru dezvoltatori si operatiuni” sau “tratarea codului sursa sub o anumita infrastructura” sau “folosire automatizarii” sau “o abordare cu instrumente” etc.

Pentru o definitie mai exacta este nevoie de a aminti si conceptul de Agile. Astfel, DevOps si Agile sunt 2 metodologii de lucru care imbinate contribuie la o dezvoltarea cat mai rapida si eficienta a unui sistem software. Daca in cazul Agile discutam de modalitati de lucru si comunicare in echipa, prin DevOps intelegem diferite procese precum automatizare, revizuirea codului sursa, deployment, monitorizare etc. Daca ne uitam la toate aceste procese observam ca se regasesc procese legate chiar de Continuous Integration. Asadar, CI/CD vine in ajutorul nostru pentru a implementa principalele portiuni dintr-o infrstructura complexa de DevOps.

  • Ce problema rezolva Continuous Integration?

Nefolosirea conceptul de CI in cadrul unei echipe de dezvoltare a unui proiect este o alegere scumpa. Fara integrarea continua, vor exista perioade mai lungi intre integrarile dezvoltatorilor. Aceasta perioada mai lunga duce la un mod mult mai dificil de a identifica si fixa probleme, ceea ce poate duce la pierderi in cadrul afacerii. Daca ne imaginam ca in dezvoltarea unui proiect lucreaza o echipa mixta alcatuita din membrii care dezvolta si membrii care testeaza, fara CI, dezvoltatorii ar fi nevoiti sa ruleze un “build” de fiecare data cand vor sa trimita modificari spre testare, ceea ce ar presupune o pierdere inutila de timp. Asadar, printre problemele pe care le rezolva conceptul de Continuous Integration se numara:

  • cresterea vizibilitatii intre membrii unei echipe, datorita comunicarii sporite
  • identificarea din timp a problemelor in codul sursa
  • reducerea timpului de asteptare pentru a afla daca modificarile functioneaza
  • codul este testat automat, datorita testelor unitare si automate

 

  • Cum a aparut Continuous Integration?

De-a lungul anilor 90, orice automatizare a procesului de “build” in cadrul unei echipe era facuta utilizand scrierea de script-uri. Existau tot mai mutle scipt-uri scrise care verificau codul si il construiau peste noapte, astfel incat sa fie pregatit pentru testare in demineata urmatoare.  Aici este momentul in care a aparut conceptul de “Continuous Integration”.

Grady Booch a propus primul termenul de CI in 1991, in momentul in care a facut publica metoda Booch. Metoda Booch este o metoda cunoscuta in domeniul programarii orientate obiect descrisa prin intermediul diagramelor UML care cuprinde un proces de dezvoltare iterativ si un set de recomandari. Ceea ce cuprindea aceasta metoda a stat de fapt la baza conceptul de integrarea continua. Incepand cu anii 2000, au inceput sa apara sisteme in aceasta zona care isi propuneau sa consruiasca si sa testeze fiecare modificare si sa notifice persoanele in momentul in care in un “build” a esuat.

Printre aceste sisteme se numara Jenkins, TeamCity, Atlassian’s Bamboo si Microsoft’s Team Foundation Server.

  • Publicul tinta al cursului?

Cursul se adreseaza persoanelor din domeniul IT care isi doresc acumularea de informatii in ceea ce priveste automatizarea modalitatilor de lucru in cadrul unei echipe care lucreaza la dezvoltarea unui produs software. Cursul isi propune prezentarea instrumentelor necesare pentru implementarea unui flux de livrarea continua complex. Printre aceste sisteme se numara: Git & Bitbucket,  Maven, Jenkins, Docker, Kubernetes. La aceste sisteme se adauga modalitati de testarea unitara si automata. Personal, consider ca acest curs se adreseaza tuturor persoanelor care fac parte din echipa de dezvoltare a unui proiect software, indiferent de rolul acestora in echipa. Cursul prezinta aspecte si concepte care imbunatatesc bagajul de cunostinte tehnice. De asemenea, cursul ofera suport spre inceperea unei cariere de inginer DevOps.

  • Ce este un Inginer DevOps?

Inginerii DevOps sunt un grup destul de select, asa ca nu este surprizantor ca gasim un numar mic de companii care vorbesc despre acest titlu. Kelsey Hightower spunea despre acesti oameni ca fiind “forte speciale” intr-o organizatie. “Inginerul DevOps incapsuleaza profunzimea cunostintelor si anii de experienta practica”, preciza Kelsey. Daca dorim sa definim o serie de caracteristici care creioneaza un DevOps, acestea ar putea fi:

  • abilitatea de a folosi o varietate larga de tehnologii si instrumente
  • experienta cu sisteme si operatii IT
  • cunoasterea unor limbaje de scripting
  • abilitatea de automatiza anumite procese
  • abilitatea de a oferi solutii de infrastructura in cadrul unei echipe
  • posibilitatea de a colabora si de a comunica in cadrul echipei

Acestea sunt doar cateva din caracteristicile unui DevOps, in ansamblu este destul de greu de a cuprinde toata aria de abilitati. In concluzie, inginerii DevOps sunt persoane foarte importante intr-o echipa de dezvoltare software, iar in ultimul timp acest fel de pozitii a devenit tot mai cautat.

 

  • Cunostinte preliminare?

– Cunostinte de baza sisteme pentru controlul versiunii – Git & Bitbucket

– Cunostinte de baza sisteme pentru compilare si build  – Maven

– Cunostinte de baza pentru automatizarea procesului de build – Jenkins

– Cunostinte de baza sisteme de operare Linux

– Cunostinte de baza Docker & Kubernetes

– Cunostinte despre aspectul de manipularea artefactelor

– Conostinte de baza teste unitare si automate

Ce vei învăța

– Integrarea sistemelor pentru alcatuirea unui flux de lucru automat: Maven, Git & Bitbucket, Jenkins, SonarQube

– Analiza pe baza unor statistici oferite de metrici precum aria de acoperire a codului sursa: Coberuta

– Integrarea testelor unitare si automat in fluxul de lucru: jUnit, Cucumber

– Notificarea membrilor din cadrul echipei pe baza rezultatelor din procesul de “build”

– Integrarea unor sisteme in procesul de integrare continua pentru a dispune de scalabilitate, atat pe verticala, cat si pe orizontala: Docker si Kubernetes.

– Manipularea componentelor binare prin conceptul de “repository manager”

– Monitorizarea si analiza intregii solutii prin diferite metrici: Grafana/Prometeus/ELK Stack.

Programa

  1. Integrare continua
  2. Livrare continua
  3. Implementare continua
  1. Instalare Jenkins
  2. Instalare Git
  3. Instalare Maven
  4. Creare job (Pipeline) Jenkins cu git si Maven
  5. Configurare notificari (slack/mail)
  1. Code coverage (JaCoCo)
  2. Calitatea codului (SonarQube)
  3. Integrarea in Jenkins al flow-ului din Bitbucket
  4. Teste Acceptanta (Cucumber)
  1. Conceptul de depozit pentru artefacte
  2. Sonatype Nexus
  3. Analiza comparativa (Sonatype vs sisteme asemanatoare)
  4. Integrare Sonatype Nexus in fluxul de integrare continua
  1. Despre Docker si containere
  2. Folosirea Docker prin manipularea imaginilor
  3. Utilizarea Docker cu Jenkins in fluxul de integrare continua
  4. Docker compose in procesul de integrare continua
  1. Despre Kubernetes
  2. Capitolul 6 – Integrare Kubernetes in Pipeline-ul de Jenkins
  3. Utilizare Kubernetes cu Jenkins in fluxul de integrare continua
  1. Conceptul de monitorizarea aplicatiei
  2. Despre ELK Stack
  3. Analiza comparativa cu alte sisteme – Avantaje si dezavantaje
  4. Integrare ELK Stack in fluxul de CI

Sponsori și parteneri