This shows you the differences between two versions of the page.
devops:cursuri:01 [2021/07/19 12:06] laura.stoilescu |
devops:cursuri:01 [2021/07/28 16:28] (current) bogdan.croitoru |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Cursul 01 - Git/BitBucket, Nexus ==== | + | ==== Cursul 01. Git/BitBucket, Nexus ==== |
=== 1. Context DevOps === | === 1. Context DevOps === | ||
Line 8: | Line 8: | ||
Metoda principala este un set de practici care sa automatizeze pasii operationali si sa asigurare configuratii standardizate: | Metoda principala este un set de practici care sa automatizeze pasii operationali si sa asigurare configuratii standardizate: | ||
- | * Dev: standardizeaza si automatizeaza pasii de la development la testare, securizare si executie peste mai multe medii | + | * Dev: standardizeaza si automatizeaza pasii de la development la testare, securizare si executie peste mai multe medii |
- | * Ops: automatizeaza configurarea si deploymentul infrastructurii, monitorizand peste mai multe domenii si permitand rezolvarea rapida a eventualelor probleme | + | * Ops: automatizeaza configurarea si deploymentul infrastructurii, monitorizand peste mai multe domenii si permitand rezolvarea rapida a eventualelor probleme |
- | =Practici DevOps= | + | == Practici DevOps== |
- | * Controlul versiunilor si strategii de branching | + | * Controlul versiunilor si strategii de branching |
- | * Pipeline-uri de CI/CD | + | * Pipeline-uri de CI/CD |
- | * Containere care standardizeaza si izoleaza mediile de executie | + | * Containere care standardizeaza si izoleaza mediile de executie |
- | * Scriptarea infrastructurii IaC | + | * Scriptarea infrastructurii IaC |
- | * Monitorizarea pipeline-urilor si integritatii aplicatiilor | + | * Monitorizarea pipeline-urilor si integritatii aplicatiilor |
- | =CI/CD Pipeline= | + | == CI/CD Pipeline== |
- | U | + | Continuous Integration - Continuous Development = CI/CD |
+ | Un pipeline CI/CD este un proces segmentat in mai multi pasi ("stages") de livrare a unei noi versiuni de software. Introduce automatizarea si monitorizarea pe fiecare din acesti pasi mai ales privind fazele de integrare si testare dar si in timpul livrarii produsului. Desi este posibila executia manuala a fiecarui pas din pipeline, adevarata valoare este adusa prin automatizare. | ||
- | 2. VControlul Versiunii codului | + | Elemente tipice ale unui pipeline CI/CD: |
- | The field of software engineering is a rapidly changing field. When it comes to software, there are no final versions. All applications and codes are always undergoing continuous development. One of the essential aspects of software engineering is version control. | + | * Versionarea codului - |
- | Version control systems are a special type of software development tool designed to help software developers keep track of any changes done on the source code of any specific application. | + | * Build - compilarea aplicatiei |
- | Usually, any software project is handled by a team of programmers/ developers. Each of them working on a specific aspect of the overall project. These developers need to write and test code for their assigned tasks without affecting the product's working version. This is where version control comes to help. | + | * Test - testare: unitare, functionala, de integrare, end-to-end |
- | In addition to facilitating parallel development of any software project, when a mistake is made in the code, causing it to break, we can use version control to trace the mistake and go back to the latest working version of the code. | + | * Release - livrarea aplicatiei in repository |
- | As the software we build grows bigger, more complex, and more versatile, the knowledge of version control and how to use it efficiently is one of the essential skills that any software developer needs to obtain and develop. | + | * Deploy- instalare |
- | In this article, we will take a deep dive into the world of version control, what it means, why it is used, and how to get started with it. | + | * Validation & Compliance - verificare vulnerabilitati/ conformitate |
+ | |||
+ | |||
+ | ===2. Controlul Versiunii codului=== | ||
+ | Sistemul de control al versiunii codului inregistreaza schimbarile asupra unui fisier sau set de fisiere astfel incat s aputem accesa versiuni anterioare ale codului. | ||
+ | Dezvoltarea de software fiind un domeniu foarte dinamic,aplicatiile si codul sunt constant supuse modificarilor. Astfel incat monitorizarea acestor modificari este un aspect esential. | ||
+ | |||
+ | De obicei orice proiect software este gestionat de o echipa de developeri. Fiecare din ei lucreaza pe un anumit topic al proiectului general.Fiecare trebuie sa scrie cod si sa il testeze pe taskul asociat fara sa impacteze munca celorlalti colegi. | ||
+ | |||
+ | In plus fata de facilitarea lucrului in paralel pe orice proiect, cand s-a comis o greseala, putem folosi versionarea sa identificam problema si sa ne intoarcem la ultima versiune functionala a codului. Cu cat un proiect devine mai mare, mai complex si mai versatil, cu atat devine mai important sa stapanim si sa dezvolatm acest skill. | ||
+ | |||
+ | ==2.1 Beneficii == | ||
+ | - Genereaza puncte de backup: probabil cel mai vital beneficiu, fiecare contribuitor creaza un backup al proiectului de fiecare data cand face o clona. Mai multe backup-uri pe mai multe masini asigura faptul ca proiectul poate fi recuperat in cazul unei probleme | ||
+ | - Testare si experimentare : functionalitati noi, dezvoltate si testate individual intr-un mediu izolat | ||
+ | - Transparenta : istoricul proiectului si asocierea modificarilor cu fiecare utilizator responsabil asigura o dezvoltare transparenta si usor de urmarit | ||
+ | - Colaborare : in special prin prisma faptului ca fiecare contribuitor poate lucra local, fara sa fie conectat in permanenta la server, dar si prin crearea workflowului care asigura implicarea mai multor membri ai echipei mai ales in proiecte mari si complexe | ||
+ | |||
+ | ==2.2 Concepte== | ||
+ | - Repository - baza de date incluzand schimbarile asupra proiectului | ||
+ | - Commit - un snapshot al proiectului la un animit moment | ||
+ | - Checkout - copie locala a proiectului | ||
+ | - Branch - pointer la un commit | ||
+ | - Upstream/ downstream - remote vs local | ||
+ | - HEAD - pointer la branch-ul curent | ||
+ | |||
+ | ==2.3 Tipuri de sisteme de control versiune == | ||
+ | 1. Sisteme de versionare centralizate [Perforce, ClearCase, SVN, CVS]- un singur server contine toate versiunile codului, administreaza accesul la fisiere si stocheaza backup | ||
+ | * [+] Stim cine este autoritatea la un anumit proiect | ||
+ | * [-] Nevoie de conexiune la server, permisii centralizate, downtime | ||
+ | * [-] single point of failure | ||
+ | 2. Sisteme de versionare decentralizate [git, Mercurial, Bazaar] – mai multe servere contin versiunile codului alaturi de copii locale pentru fiecare din contribuitori. | ||
+ | * [+] Aproape toate operatiile, mai putin sync-ul, sunt locale ceea ce inseamna operatii rapide (commit, diff, history) | ||
+ | * [+] control al versiunii personal | ||
+ | * [+] nu este nevoie de conexiune la server | ||
+ | * [+] fiecare clona este un backup | ||
+ | * [-?] este nevoie de un workflow pentru coordonare | ||
+ | | ||
- | === 2. Intro Versionare === | ||
- | === 3. Managementul Sursei : Git/BitBucket=== | ||
=== 4. Managementul Outputului: Nexus=== | === 4. Managementul Outputului: Nexus=== | ||
=== 5. Resurse utile === | === 5. Resurse utile === | ||
+ | https://www.atlassian.com/git/tutorials/atlassian-git-cheatsheet | ||
+ | https://git-scm.com/doc | ||
+ | https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud | ||
+ | |||
+ | |||
+ |