L'evoluzione di i strumenti di consegna, o pinsamenti nantu à Docker, deb, jar è più

L'evoluzione di i strumenti di consegna, o pinsamenti nantu à Docker, deb, jar è più

In un certu puntu, decisu di scrive un articulu nantu à a spedizione in forma di cuntenituri Docker è pacchetti di deb, ma quandu aghju cuminciatu, per qualchì mutivu, aghju statu purtatu in i tempi distanti di i primi computers persunali è ancu calculatrici. In generale, invece di paraguni secchi di docker è deb, avemu sti pinsamenti nantu à u tema di l'evoluzione, chì aghju prisintatu per a vostra cunsiderazione.

Qualchese pruduttu, ùn importa ciò chì hè, deve in qualchì manera ghjunghje à i servitori di u produttu, deve esse cunfiguratu è lanciatu. Hè ciò chì sarà questu articulu.

Pensu in un cuntestu storicu, "ciò chì vecu hè ciò chì cantu", ciò chì aghju vistu quandu aghju cuminciatu à scrive codice è ciò chì aghju osservatu avà, ciò chì noi stessi usemu in u mumentu è perchè. L'articulu ùn pretende micca esse un studiu cumpletu, certi punti sò mancati, questu hè a mo vista persunale di ciò chì era è ciò chì hè avà.

Allora, in i boni vechji tempi... u primu metudu di consegna chì aghju trovu era cassette di cassette da registratori. Aghju avutu un urdinatore BK-0010.01...

L'era di i calculatrici

Innò, ci era un mumentu ancu prima, ci era ancu una calculatrice MK-61 и MK-52.

L'evoluzione di i strumenti di consegna, o pinsamenti nantu à Docker, deb, jar è più Allora quandu aghju avutu MK-61, allura a manera di trasfiriri u prugramma era un pezzu di carta ordinariu in una scatula nantu à quale un prugramma hè statu scrittu, chì, se ne necessariu, per eseguisce manualmente, hè statu scrittu in a calculatrice. Sè vo vulete ghjucà (sì, ancu sta calculatrice antediluviana avia ghjochi) - vi pusate è entre in u prugramma in a calculatrice. Naturalmente, quandu a calculatrice hè stata disattivata, u prugramma hè sparitu in l'obliu. In più di i codici di a calculatrice scritti personalmente nantu à carta, i prugrammi sò stati publicati in e riviste "Radio" è "Tecnulugia per a Ghjuventù", è sò ancu publicati in i libri di quellu tempu.

A mudificazione dopu era una calculatrice MK-52, hà digià qualchì sembianza di almacenamiento di dati non volatile. Avà u ghjocu o u prugramma ùn deve esse inseritu manualmente, ma dopu avè realizatu qualchì passaghju magicu cù i buttoni, hà carricatu stessu.

A dimensione di u più grande prugramma in a calculatrice era 105 passi, è a dimensione di a memoria permanente in MK-52 era 512 passi.

A propositu, s'ellu ci sò fan di sti calculatrici chì leghjenu stu articulu, in u prucessu di scrive l'articulu aghju trovu à tempu un emulatore di calculatrice per Android è prugrammi per questu. Avanzate à u passatu !

Una breve digressione nantu à MK-52 (da Wikipedia)

MK-52 volò in u spaziu nantu à a nave spaziale Soyuz TM-7. Hè suppostu esse usatu per calculà a trajectoria di sbarcu in casu chì l'urdinatore di bordu falliu.

Dapoi u 52, u MK-1988 cù l'unità di espansione di memoria Elektronika-Astro hè stata furnita à i navi di a Marina cum'è parte di un kit di computer di navigazione.

I primi computer persunali

L'evoluzione di i strumenti di consegna, o pinsamenti nantu à Docker, deb, jar è più Riturnemu à i tempi BK-0010. Hè chjaru chì ci era più memoria quì, è scrivite in codice da un pezzu di carta ùn era più una opzione (ancu prima ch'e aghju fattu solu, perchè ùn ci era solu un altru mediu). I cassette audio per i registratori sò diventati i mezi principali di almacenà è furnisce u software.





L'evoluzione di i strumenti di consegna, o pinsamenti nantu à Docker, deb, jar è piùL'almacenamiento nantu à una cassette era di solitu in forma di unu o dui schedarii binari, tuttu u restu era cuntenutu in l'internu. A fiducia era assai bassu, aghju avutu a mantene 2-3 copie di u prugramma. I tempi di carica eranu ancu deludenti, è i dilettanti anu sperimentatu cù diverse codificazioni di freccia per superà questi difetti. À quellu tempu, eiu stessu ùn era micca ancu implicatu in u sviluppu di software prufessiunale (senza cuntà i prugrammi simplici in BASIC), per quessa, sfurtunatamenti, ùn vi dicu micca in dettagliu cumu tuttu hè stata dispostu in l'internu. U fattu stessu chì l'urdinatore avia solu RAM per a maiò parte hà determinatu a simplicità di u schema di almacenamiento di dati.

L'emergenza di media di almacenamento affidabile è grande

In seguitu, i dischetti apparsu, u prucessu di copia hè simplificatu, è a fiducia aumenta.
Ma a situazione cambia dramaticamente solu quandu l'almacenamenti lucali abbastanza grandi appariscenu in forma di HDD.

U tipu di consegna hè fundamentalmente cambiante: i prugrammi di l'installazione appariscenu chì gestiscenu u prucessu di cunfigurazione di u sistema, è ancu di pulizziari dopu a rimuzione, postu chì i prugrammi ùn sò micca solu leghje in memoria, ma sò digià copiati in u almacenamentu locale, da quale avete bisognu. esse capaci di sguassà e cose innecessarii se ne necessariu.

À u listessu tempu, a cumplessità di u software furnitu hè crescente.
U numeru di schedari in a consegna aumenta da uni pochi à centinaie è millaie, i cunflitti trà e versioni di a biblioteca è altre gioie cumincianu quandu diversi prugrammi utilizanu i stessi dati.

L'evoluzione di i strumenti di consegna, o pinsamenti nantu à Docker, deb, jar è più À quellu tempu, l'esistenza di Linux ùn era ancu aperta per mè; aghju campatu in u mondu di MS DOS è, più tardi, di Windows, è hà scrittu in Borland Pascal è Delphi, à volte guardendu versu C++. Parechje persone anu utilizatu InstallShield per furnisce i prudutti allora. ru.wikipedia.org/wiki/InstallShield, chì risolviu abbastanza bè tutti i travaglii assignati di implementà è cunfigurà u software.




Era di Internet

Gradualmente, a cumplessità di i sistemi di software hè diventata ancu più cumplessa; da u monolitu è ​​l'applicazioni desktop ci hè una transizione à i sistemi distribuiti, i clienti sottili è i microservizi. Avà avete bisognu di cunfigurà micca solu un prugramma, ma un inseme di elli, è cusì chì tutti travaglianu inseme.

U cuncettu hà cambiatu cumplettamente, l'Internet hè ghjuntu, l'era di i servizii di nuvola hè ghjunta. Finu a ora, solu in u stadiu iniziale, in forma di siti web, nimu hà particularmente sognu di servizii. ma era un puntu di svolta sia in u sviluppu è in a consegna di l'applicazioni.

Per mè stessu, aghju nutatu chì in quellu mumentu ci hè statu un cambiamentu in generazioni di sviluppatori (o era solu in u mo ambiente), è ci era un sintimu chì tutti i boni metudi di consegna vechji sò stati scurdati in un mumentu è tuttu hà cuminciatu da u stessu tempu. principiu: tutti i cunsegna cuminciaru à esse fattu script di ghjinochju è orgogliu chjamatu "Consegna cuntinuu". In fatti, un periodu di caosu hà cuminciatu, quandu u vechju hè scurdatu è micca usatu, è u novu simpricimenti ùn esiste micca.

Mi ricordu di i tempi quandu in a nostra cumpagnia induve aghju travagliatu allora (ùn l'aghju micca chjamatu), invece di custruisce via ant (maven ùn era micca ancu populari o ùn esisteva à tuttu), a ghjente si simpricimenti cullighjava vasetti in l'IDE è s'impegnava serenamente. hè in SVN. In cunsiquenza, a implementazione consistia à ricuperà u schedariu da SVN è copià via SSH à a macchina desiderata. Hè cusì simplice è goffa.

À u listessu tempu, a spedizione di siti simplici in PHP hè stata fatta in una manera assai primitiva, simpliciamente cupiendu u schedariu currettu via FTP à a macchina di destinazione. Calchì volta ùn era micca u casu - u codice hè statu editatu in diretta nantu à u servitore di u produttu, è era soprattuttu chic s'ellu ci era copia di salvezza in qualchì locu.


Pacchetti RPM è DEB

L'evoluzione di i strumenti di consegna, o pinsamenti nantu à Docker, deb, jar è piùPer d 'altra banda, cù u sviluppu di l'Internet, i sistemi cum'è UNIX cuminciaru à guadagnà più è più pupularità, in particulare, era in quellu tempu chì aghju scupertu RedHat Linux 6, circa 2000. Naturalmente, ci era ancu certi mezi per furnisce u software; secondu Wikipedia, RPM cum'è u principale gestore di pacchetti apparsu digià in 1995, in a versione di RedHat Linux 2.0. È da tandu è finu à questu ghjornu, u sistema hè statu furnitu in forma di pacchetti RPM è hè statu abbastanza bè esistente è sviluppatu.

I distribuzioni di a famiglia Debian anu seguitu un percorsu simili è implementatu a consegna in forma di pacchetti di deb, chì ùn hè micca cambiatu finu à questu ghjornu.

I gestori di pacchetti permettenu di furnisce i prudutti di u software stessu, cunfigurà durante u prucessu di stallazione, gestione dipendenze trà e diverse pacchetti, sguassate i prudutti è pulizziari l'articuli inutili durante u prucessu di disinstallazione. Quelli. per a maiò parte, hè tuttu ciò chì hè necessariu, chì hè per quessa ch'elli durò parechji decennii praticamenti senza cambiamenti.

L'informatica in nuvola hà aghjustatu l'installazione à i gestori di pacchetti micca solu da i media fisici, ma ancu da i repositori di nuvola, ma fundamentalmente pocu hè cambiatu.

Vale a pena nutà chì attualmente ci sò qualchi muvimenti versu alluntanassi da deb è cambià à pacchetti snap, ma più nantu à questu dopu.

Dunque, sta nova generazione di sviluppatori di nuvola, chì ùn cunnosci nè DEB nè RPM, hè ancu cresciutu lentamente, hà acquistatu sperienza, i prudutti sò diventati più cumplessi, è era necessariu alcuni metudi di consegna più ragiunate cà FTP, scripts bash è artisgiani studianti simili.
È questu hè induve Docker vene in u ritrattu, una spezia di mistura di virtualizazione, delimitazione di risorse è metudu di consegna. Hè di moda è ghjovanu avà, ma hè necessariu per tuttu? Hè una panacea?

Da i mo osservazioni, assai spessu Docker hè prupostu micca cum'è una scelta raghjone, ma solu perchè, da una banda, si parla in a cumunità, è quelli chì pruponenu solu a cunnoscenu. Per d 'altra banda, per a maiò parte sò silenziu annantu à i boni vechji sistemi di imballaggio - esistinu è facenu u so travagliu in silenziu è senza nutà. In una tale situazione, ùn ci hè veramente una altra scelta - a scelta hè ovvia - Docker.

Pruvaraghju di sparte a mo sperienza di cumu avemu implementatu Docker è ciò chì hè accadutu in u risultatu.


Scritti auto-scritti

Inizialmente, ci sò stati scripts bash chì implementavanu l'archivi jar à e macchine richieste. Stu prucessu era gestitu da Jenkins. Questu hà travagliatu bè, postu chì l'archiviu jar stessu hè digià un assemblea chì cuntene classi, risorse è ancu cunfigurazione. Se mette tuttu in u massimu, allora l'espansione in un script ùn hè micca u più difficiule chì avete bisognu

Ma i script anu parechji svantaghji:

  • i scripts sò generalmente scritti in fretta è sò dunque cusì primitivi chì cuntenenu solu un scenariu megliu. Questu hè facilitatu da u fattu chì u sviluppatore hè interessatu à una consegna rapida, è un script normale richiede l'investimentu di una quantità decente di risorse.
  • in cunseguenza di u puntu precedente, i script ùn cuntenenu micca prucessi di disinstallazione
  • nisuna prucedura di aghjurnamentu stabilita
  • Quandu un novu pruduttu appare, avete bisognu di scrive un novu script
  • senza supportu di dependenza

Di sicuru, pudete scrive un script sofisticatu, ma, cum'è aghju scrittu sopra, questu hè u tempu di sviluppu, è micca u minimu, è, cum'è sapemu, ùn ci hè sempre abbastanza tempu.

Tuttu chistu ovviamente limita a gamma di applicazioni di stu metudu di implementazione solu à i sistemi più simplici. Hè ghjuntu u tempu di cambià questu.


Docker

L'evoluzione di i strumenti di consegna, o pinsamenti nantu à Docker, deb, jar è piùÀ un certu puntu, i medii appena minted cumminciavanu à vene à noi, furmulanti cù idee è raving about the docker. Ebbè, bandiera in manu - facemu ! Ci sò stati dui tentativi. Tramindui ùn anu micca successu - dicemu, per via di grandi ambizioni, ma mancanza di sperienza vera. Era necessariu di furzà è finisce per ogni modu pussibule? Hè improbabile - a squadra deve evoluzione à u livellu necessariu prima di pudè utilizà l'arnesi appropritati. Inoltre, quandu anu utilizatu l'imaghjini di Docker pronti, avemu spessu scontru u fattu chì a reta ùn hà micca travagliatu bè (chì pò esse dovutu à l'umidità di u Docker stessu) o era difficiule di espansione i cuntenituri di l'altri.

Chì inconvenienti avemu scontru ?

  • Problemi di rete in modu ponte
  • Hè sconveniente per vede logs in un cuntainer (se ùn sò micca guardati separatamente in u sistema di fugliale di a macchina host)
  • ElasticSearch a volte si congela stranamente in u cuntinuu, u mutivu ùn hè statu determinatu, u cuntinuu hè ufficiale
  • Hè necessariu d'utilizà una cunchiglia in un cuntainer - tuttu hè assai spogliatu, ùn ci sò micca strumenti di solitu
  • Grande dimensione di cuntenituri cullati - caru per almacenà
  • A causa di a grande dimensione di cuntenituri, hè difficiule di sustene parechje versioni
  • Tempu di creazione più longu, à u cuntrariu di altri metudi (scripts o pacchetti deb)

Per d 'altra banda, perchè hè peghju di implementà un serviziu Spring in forma di un archiviu jar à traversu u listessu deb? L'isolamentu di e risorse hè veramente necessariu? Hè vale a pena perde l'uttene di u sistema operatore cunvene per stuffing un serviziu in un containeru assai ridutta?

Comu a pratica hà dimustratu, in a realità questu ùn hè micca necessariu, u pacchettu di deb hè abbastanza in 90% di i casi.

Quandu u bonu vechju deb falla è quandu avemu veramente bisognu di docker?

Per noi, questu era implementà servizii in python. Un saccu di biblioteche necessarii per l'apprendimentu di machine è micca inclusi in a distribuzione standard di u sistema operatore (è ciò chì ci era e versioni sbagliate), pirate cù paràmetri, a necessità di diverse versioni per diversi servizii chì vivenu in u stessu sistema d'ospiti hà purtatu à questu, chì l'unicu modu ragiunate per furnisce sta mistura nucleare era u docker. L'intensità di u travagliu di l'assemblea di un containeru docker hè risultata più bassa di l'idea di imballà tuttu in pacchetti di deb separati cù dipendenze, è in fatti nimu in a so mente sana ùn l'hà da fà.

U sicondu puntu induve avemu pensatu à utilizà Docker hè di implementà servizii cù u schema di implementazione blu-verde. Ma quì vogliu avè un aumentu graduali di a cumplessità: prima, i pacchetti di deb sò custruiti, è dopu un containeru docker hè custruitu da elli.


Snap pacchetti

L'evoluzione di i strumenti di consegna, o pinsamenti nantu à Docker, deb, jar è più Riturnemu à i pacchetti snap. Prima apparsu ufficialmente in Ubuntu 16.04. A cuntrariu di i pacchetti deb abituali è i pacchetti rpm, snap porta tutte e dipendenze. Per una banda, questu permette di evità i cunflitti di biblioteca, da l'altra banda, u pacchettu resultanti hè più grande. Inoltre, questu pò ancu influenzà a sicurità di u sistema: in u casu di snap delivery, tutti i cambiamenti à e librerie incluse deve esse monitoratu da u sviluppatore chì crea u pacchettu. In generale, micca tuttu hè cusì simplice è a felicità universale ùn vene micca da aduprà. Ma, però, questa hè una alternativa cumpletamente raghjone se u stessu Docker hè adupratu solu com'è strumentu di imballaggio è micca per a virtualizazione.



In u risultatu, avemu avà aduprà sia i pacchetti deb è i cuntenituri docker in una cumminazione raghjone, chì, forsi, in certi casi, rimpiazzeremu cù pacchetti snap.

Solu l'utilizatori registrati ponu participà à l'indagine. Firmà lu, per piacè.

Chì utilizate per a spedizione?

  • Scritti auto-scritti

  • Copia manualmente à FTP

  • pacchetti deb

  • pacchetti rpm

  • pacchetti snap

  • Docker-imaghjini

  • L'imaghjini di a macchina virtuale

  • Clona tuttu u HDD

  • pupu

  • ansible

  • Altru

109 utilizatori anu vutatu. 32 utilizatori si sò astenuti.

Source: www.habr.com

Add a comment