Manager de depozitare de obiecte binare

Un manager de depozite de obiecte binare  ( manager de depozitare binară în limba engleză) este un instrument software conceput pentru a optimiza descărcarea și stocarea obiectelor binare utilizate și produse în contextul dezvoltării de software (de obicei fișiere). Acesta centralizează gestionarea tuturor artefactelor generate și utilizate de software-ul organizației (editor de software). Face posibilă răspunderea la problema complexității care decurge din diversitatea tipurilor de obiecte binare, poziția lor în întregul flux de lucru, precum și dependențele dintre ele.

Un depozit de obiecte binare este un depozit de software pentru pachete, artefacte și metadatele acestora. Poate fi folosit pentru a stoca binare produse chiar de organizație (versiuni și versiuni intermediare de produse) sau pentru a stoca binare terțe (dependențe) care trebuie tratate diferit din motive tehnice și juridice.

Introducere

Dezvoltarea software-ului poate fi un proces complex care implică mulți dezvoltatori, posibil în mai multe țări (problema fusurilor orare, bariera lingvistică etc.). Aceste echipe de dezvoltatori împărtășesc aceleași depozite de coduri , accesează aceleași instrumente de construire, descarcă și utilizează un set comun de resurse binare și implementează aceleași componente în cadrul aceluiași software.

Managerul de depozitare de obiecte binare a fost creat pentru a centraliza artefactele binare pe care aplicațiile trebuie să fie construite (compilate), testate și executate.

Convergențe și divergențe cu managerii de versiuni

Pentru a gestiona fișiere de cod sursă în dezvoltarea de software, organizațiile folosesc de obicei controlul revizuirii . Acest software își propune să centralizeze codul sursă al unui software care să permită mai multor persoane să lucreze simultan pe el și să permită (printre alte funcții) să păstreze istoricul modificărilor efectuate pe fiecare fișier. Pentru aceasta, managerii integrează sau utilizează instrumente precum comparatoare de text ( dif ).

Aceste numeroase fișiere sursă sunt integrate în cele din urmă (compilate sau nu) într-unul sau mai multe artefacte binare și constituie componentele unui produs software.

Convergențe

Rezultatul compilațiilor și construcțiilor de componente este supus acelorași principii ca fișierele sursă (durabilitate, disponibilitate, istoric etc.). Prin urmare, managerul de depozitare de obiecte binare converge către managerii de versiuni și poate fi considerat ca un manager de versiuni pentru obiecte binare. Astfel, depășește limitarea pe care managerii de versiuni (textuale) o au la manipularea conținutului binar pe care sunt obligați să-l stocheze așa cum este, deoarece sunt incapabili să își analizeze conținutul și astfel ocupă mult spațiu în non-baze de date. Planificat și ineficient pentru acest lucru tipul de conținut.

În plus, software-ul poate utiliza artefacte externe (puse la dispoziție de una sau mai multe părți terțe) care sunt descărcate din depozite (gratuite, open-source sau proprietare) și / sau achiziționate (gratuit sau achiziționate din surse comerciale.). Astfel, un software poate include zeci, sute sau chiar mii de obiecte binare care trebuie gestionate pentru a menține efectiv un întreg coerent și funcțional.

Ca și în cazul managerilor de versiuni, managerii de depozitare de obiecte binare sunt împărtășite de diferite echipe de dezvoltare, asigurându-se astfel că toată lumea folosește aceleași resurse.

Discrepanțe

Managerul de depozitare de obiecte binare diferă de managerii de versiuni prin faptul că trebuie să integreze un set de elemente care nu sunt proprietatea organizației (constrângerile legale care trebuie luate în considerare). De fapt, este, prin urmare, responsabil pentru crearea și menținerea unui context istoric (mediu) în care este creat software-ul, permițându-i să fie recreat, dacă este necesar, fără risc de variații datorate ciclurilor de viață ale componentelor interne și ale terților.

Spre deosebire de managerii de versiuni, managerii de depozitare de obiecte binare nu urmăresc să stocheze toate evoluțiile intermediare ale artefactelor așa cum fac managerii de versiuni pentru fișierele de cod sursă. Numai versiunile ștampilate ca atare (prin metadate) sunt stocate și accesibile.

Este o practică obișnuită să aveți o anumită versiune (sau chiar mai multe atunci când proiectul gestionează mai multe versiuni în paralel) numită instantaneu  sau construcție nocturnă pe care organizația lucrează și care este probabil să se schimbe frecvent. În general, această versiune nu este pusă la dispoziția altor echipe de dezvoltare și istoricul acesteia nu este păstrat, doar ultima versiune creată este accesibilă, celelalte sunt suprascrise.

Când versiunea este înghețată (validată) se creează un număr de versiune definitiv și managerul depozitului de obiecte binare stochează elementele create într-un anumit artefact și întregul nu va mai suferi o evoluție. Remediile de erori vor fi făcute într-o versiune separată identificată printr-un alt număr de versiune.

Managerul de depozitare de obiecte binare, prin urmare, nu gestionează noțiunea de ramură ca managerii de versiuni, deoarece nu este posibil să fuzionăm ramuri sau comparații. Fiecare ramură ( versiunea în sensul managerului de depozitare de obiecte binare) este complet independentă de celelalte versiuni ale software-ului, în timp ce pentru un manager de versiuni, conținutul unei ramuri este doar suma modificărilor aduse fișierelor din momentul ramura a fost creată (ramura poate fi, prin urmare, utilizată numai în asociere cu elementele anterioare ale istoriei).

Manager universal de pachete

Industria software-ului evoluează constant. Administratorii de obiecte binare nu fac excepție de la regulă și se îndreaptă treptat către gestionari universali de pachete. Acești manageri de pachete își propun să standardizeze modul în care companiile accesează și folosesc toate pachetele de care au nevoie în procesul lor de dezvoltare. Acestea oferă instrumente pentru analiza securității și compatibilității tipurilor de artefacte. Managerii universali de pachete au o poziție centrală în lanțul de instrumente de dezvoltare (sisteme de compilare, pachete, instrumente de documentare, analiză cod, livrare ...) exploatate de organizații.

Unii manageri universali de pachete cunoscuți:

Legătură cu procesul de integrare continuă

Ca parte a ciclului de viață al dezvoltării software-ului, codul sursă este compilat în mod regulat în obiecte binare în timpul procesului de integrare continuă .

În timpul acestei operații, sistemul de gestionare a codului interacționează cu managerul de depozitare de obiecte binare pentru a obține dependențele necesare operației de compilare, procesare și execuție precum și pentru depunerea în depozit. Obiecte binare propria producție (vorbim de publicare). Această comunicare implică utilizarea unor artefacte pentru identificarea resurselor necesare și punerea obiectelor binare create la dispoziția altor instrumente sau software.

Această interacțiune strânsă cu serverele de integrare continuă permite stocarea metadatelor, cum ar fi:

Artefacte și pachete

Artefactele și pachetele sunt două lucruri inerent diferite.

Artefactele reprezintă un set (uneori redus la o singură intrare) de elemente (în general fișiere precum JAR , WAR , EAR , DLL , SO, ZIP ...) dintre care unul conține metadate (de exemplu POM la Maven ) permițându-le să să fie identificat în mod unic (id, pachet, versiune, licență și altele ...).

În schimb, pachetele sunt alcătuite dintr-un singur fișier de arhivă într-un format bine definit (de exemplu NuGet de la Microsoft , RPM de la Red Hat sau DEB de la Debian ). Această arhivă conține toate fișierele prevăzute de format (cum ar fi DLL, PDB etc.).

Artefactele sunt de obicei generate de versiuni. Pachetele sunt în esență biblioteci sau aplicații software.

În comparație cu fișierele sursă, artefactele binare sunt mult mai mari. Sunt rareori șterse sau modificate (cu excepția artefactelor în curs de dezvoltare care sunt în mod regulat suprascrise de actualizări și care nu sunt disponibile oficial terților).

Metadate

Metadatele descriu un artefact binar. Acestea sunt stocate separat de artefactul în sine și pot avea utilizări diferite.

Tabelul următor prezintă cele mai frecvente tipuri de metadate și utilizările acestora.

Tipuri Utilizări
Versiuni disponibile permite actualizarea ascendentă (upgrade) sau descendentă (downgrade)
Dependențe specifică artefactele de care depinde artefactul descris
Dependențe de impact oferă lista artefactelor în funcție de artefactul descris
Licență conținutul (sau referința) licenței legale la care este supus artefactul descris (de exemplu , GPL , CC , Apache ...)
Construiți data și ora permite trasabilitatea artefactului
Documentație oferă documentație offline a artefactului
Informații privind aprobarea indică trasabilitatea procesului de validare și aprobare a artefactelor
Măsuri agregează informații referitoare la calitatea codului, acoperirea nevoilor, rezultatele testelor etc.
Metadatele utilizatorului listează informațiile suplimentare furnizate de dezvoltatori (rapoarte, documentație tehnică, proces etc.)

Principalele caracteristici ale administratorilor de depozite de obiecte binare

Mai jos sunt enumerate principalele caracteristici furnizate de administratorii de depozite de obiecte binare care ar trebui luate în considerare la adoptarea unor astfel de sisteme:

Vezi și tu

Articole similare

Referințe

  1. (în) Johnny Biggert , „  SOFTWARE DE DEZVOLTARE DURABILĂ, PARTEA 2: GESTIONAREA COMPLEXITĂȚII  ” în Developers Dilemma , Johnny Biggert (accesat la 11 ianuarie 2015 )
  2. (în) „  Gestionarea complexității  ” , în The Economist , The Economist (accesat la 11 ianuarie 2015 )
  3. (în) „  Al optulea viitor anual al sondajului cu sursă deschisă găsește SOA care alimentează o nouă tehnologie, care ajunge la oameni noi și creează o nouă economie  ” , pe blackducksoftware.com (accesat la 25 februarie 2015 )
  4. (în) John K. Waters , „  JFrog lansează„ Universal ”Artifact Repository  ” pe ADT Mag , Application Development Trends Magazine8 septembrie 2015
  5. (în) Xavier Decoster , „  O prezentare generală a ecosistemului NuGet  ” pe CodeProject.com ,18 august 2013
  6. (în) Scott Hanselman , „  Cum să vă găzduiți propriul server și pachetul NuGet Feed  ” pe Hanselman.com ,13 aprilie 2015
  7. (în) Chris Tucker, "  OPIUM: Manager optim de instalare / dezinstalare a pachetelor  " , UC San Diego ,10 mai 2007, p.  10 ( citește online )
  8. (în) "  scheme de clasificare depozit Linux  " , braintickle.blogspot.com (accesat la 1 st martie 2008 )
  9. (în) Adrian Bridgewater , „  Cum să găsiți DevOps reale, căutați controlul binar al depozitului de artefacte  ” pe ComputerWeekly.com ,1 st noiembrie 2015