Kaut kÄ vienÄ brÄ«dÄ« es nolÄmu uzrakstÄ«t rakstu par piegÄdi Docker konteineru un deb paku veidÄ, bet, kad sÄku, nez kÄpÄc tiku aizvests uz pirmo personÄlo datoru un pat kalkulatoru tÄlajiem laikiem. KopumÄ docker un deb sauso salÄ«dzinÄjumu vietÄ mÄs ieguvÄm Ŕīs domas par evolÅ«cijas tÄmu, ko es piedÄvÄju jÅ«su apsvÄrÅ”anai.
JebkurÅ” produkts, neatkarÄ«gi no tÄ, kÄds tas ir, kaut kÄdÄ veidÄ jÄnokļūst produkta serveros, ir jÄkonfigurÄ un jÄpalaiž. TieÅ”i par to bÅ«s Å”is raksts.
Es padomÄÅ”u vÄsturiskÄ kontekstÄ, "tas, ko es redzu, ir tas, par ko es dziedu", ko es redzÄju, kad sÄku rakstÄ«t kodu, un ko novÄroju tagad, ko mÄs paÅ”i lietojam Å”obrÄ«d un kÄpÄc. Raksts nepretendÄ uz pilnvÄrtÄ«gu pÄtÄ«jumu, daži punkti ir garÄm, tas ir mans personÄ«gais skatÄ«jums uz to, kas bija un kas ir tagad.
TÄtad, vecajos labajos laikos... agrÄkais piegÄdes veids, ko es atradu, bija magnetofona kasetes. Man bija dators BK-0010.01...
Kalkulatoru laikmets
NÄ, bija vÄl agrÄks brÄ«dis, bija arÄ« kalkulators
TÄtad, kad man bija
NÄkamÄ modifikÄcija bija kalkulators
LielÄkÄs programmas lielums kalkulatorÄ bija 105 soļi, un pastÄvÄ«gÄs atmiÅas lielums MK-52 bija 512 soļi.
Starp citu, ja ir Å”o kalkulatoru cienÄ«tÄji, kas lasa Å”o rakstu, raksta tapÅ”anas procesÄ es atradu gan kalkulatora emulatoru priekÅ” Android, gan arÄ« tam paredzÄtas programmas. Uz priekÅ”u pagÄtnÄ!
ÄŖsa atkÄpe par MK-52 (no VikipÄdijas)
MK-52 lidoja kosmosÄ ar kosmosa kuÄ£i Sojuz TM-7. To bija paredzÄts izmantot, lai aprÄÄ·inÄtu nosÄÅ”anÄs trajektoriju gadÄ«jumÄ, ja borta dators sabojÄjas.
KopÅ” 52. gada MK-1988 ar Elektronika-Astro atmiÅas paplaÅ”inÄÅ”anas bloku tiek piegÄdÄts JÅ«ras spÄku kuÄ£iem kÄ daļa no navigÄcijas skaitļoÅ”anas komplekta.
Pirmie personÄlie datori
Atgriezīsimies laikos
UzglabÄÅ”ana kasetÄ parasti bija viena vai divu binÄro failu veidÄ, viss pÄrÄjais bija iekÅ”Ä. UzticamÄ«ba bija ļoti zema, man bija jÄsaglabÄ 2-3 programmas kopijas. IelÄdes laiki arÄ« bija neapmierinoÅ”i, un entuziasti eksperimentÄja ar dažÄdu frekvenÄu kodÄjumu, lai novÄrstu Å”os trÅ«kumus. Pats tajÄ laikÄ vÄl nenodarbojos ar profesionÄlu programmatÅ«ras izstrÄdi (neskaitot vienkÄrÅ”as programmas BASIC), tÄpÄc, diemžÄl, sÄ«kÄk nestÄstÄ«Å”u, kÄ iekÅ”Ä viss bija sakÄrtots. Pats fakts, ka datoram lielÄkoties bija tikai operatÄ«vÄ atmiÅa, noteica datu uzglabÄÅ”anas shÄmas vienkÄrŔību.
Uzticamu un lielu datu nesÄju parÄdÄ«Å”anÄs
VÄlÄk parÄdÄ«jÄs disketes, tika vienkÄrÅ”ots kopÄÅ”anas process un palielinÄjÄs uzticamÄ«ba.
TaÄu situÄcija krasi mainÄs tikai tad, kad HDD formÄtÄ parÄdÄs pietiekami lielas lokÄlÄs krÄtuves.
PiegÄdes veids bÅ«tiski mainÄs: parÄdÄs instalÄÅ”anas programmas, kas pÄrvalda sistÄmas konfigurÄÅ”anas procesu, kÄ arÄ« tÄ«rÄ«Å”anu pÄc noÅemÅ”anas, jo programmas ne tikai nolasa atmiÅÄ, bet jau tiek kopÄtas uz vietÄjo krÄtuvi, no kuras jums ir nepiecieÅ”ams nepiecieÅ”amÄ«bas gadÄ«jumÄ spÄt notÄ«rÄ«t nevajadzÄ«gÄs lietas.
TajÄ paÅ”Ä laikÄ pieaug piegÄdÄtÄs programmatÅ«ras sarežģītÄ«ba.
Failu skaits piegÄdÄ palielinÄs no dažiem lÄ«dz simtiem un tÅ«kstoÅ”iem, konflikti starp bibliotÄkas versijÄm un citi prieki sÄkas, kad dažÄdas programmas izmanto vienus un tos paÅ”us datus.
Tolaik Linux pastÄvÄÅ”ana man vÄl nebija atklÄta; es dzÄ«voju MS DOS un vÄlÄk Windows pasaulÄ un rakstÄ«ju Borland Pascal un Delphi, dažreiz skatoties uz C++. Daudzi cilvÄki toreiz izmantoja InstallShield, lai piegÄdÄtu produktus.
Interneta laikmets
PakÄpeniski programmatÅ«ras sistÄmu sarežģītÄ«ba kļūst vÄl sarežģītÄka; no monolÄ«tajÄm un darbvirsmas lietojumprogrammÄm notiek pÄreja uz sadalÄ«tÄm sistÄmÄm, plÄniem klientiem un mikropakalpojumiem. Tagad jums ir jÄkonfigurÄ ne tikai viena programma, bet arÄ« to kopa, lai tÄs visas darbotos kopÄ.
Koncepcija pilnÄ«bÄ mainÄ«jÄs, nÄca internets, pienÄca mÄkoÅpakalpojumu laikmets. PagaidÄm tikai sÄkumposmÄ mÄjaslapu veidÄ par servisiem neviens Ä«paÅ”i nav sapÅojis. taÄu tas bija pagrieziena punkts gan lietojumprogrammu izstrÄdÄ, gan piegÄdÄ.
Pie sevis piefiksÄju, ka tajÄ brÄ«dÄ« notika izstrÄdÄtÄju paaudžu maiÅa (vai tÄ bija tikai manÄ vidÄ), un bija sajÅ«ta, ka visas vecÄs labÄs piegÄdes metodes vienÄ mirklÄ« aizmirstas un viss sÄkÄs no paÅ”a sÄkuma. sÄkums: visas piegÄdes sÄka veikt ar ceļa skriptiem un lepni to sauca par "nepÄrtrauktu piegÄdi". PatiesÄ«bÄ ir sÄcies haosa periods, kad vecais tiek aizmirsts un netiek izmantots, un jaunais vienkÄrÅ”i neeksistÄ.
Atceros laikus, kad mÅ«su uzÅÄmumÄ, kurÄ toreiz strÄdÄju (nenosaukÅ”u), tÄ vietÄ, lai bÅ«vÄtu caur skudru (maven vÄl nebija populÄrs vai vispÄr neeksistÄja), cilvÄki vienkÄrÅ”i savÄca burkas IDE un mierÄ«gi apÅÄmÄs to SVN. AttiecÄ«gi izvietoÅ”ana ietvÄra faila izgÅ«Å”anu no SVN un tÄ kopÄÅ”anu, izmantojot SSH, vajadzÄ«gajÄ maŔīnÄ. Tas ir tik vienkÄrÅ”i un neveikli.
TajÄ paÅ”Ä laikÄ vienkÄrÅ”u vietÅu piegÄde PHP tika veikta ļoti primitÄ«vÄ veidÄ, vienkÄrÅ”i kopÄjot laboto failu, izmantojot FTP, uz mÄrÄ·a maŔīnu. Dažreiz tas tÄ nebija - kods tika rediÄ£Äts produkta serverÄ«, un tas bija Ä«paÅ”i Å”iki, ja kaut kur bija rezerves kopijas.
RPM un DEB pakotnes
No otras puses, attÄ«stoties internetam, UNIX lÄ«dzÄ«gas sistÄmas sÄka iegÅ«t arvien lielÄku popularitÄti, jo Ä«paÅ”i tajÄ laikÄ es atklÄju RedHat Linux 6, aptuveni 2000. Protams, bija arÄ« noteikti lÄ«dzekļi programmatÅ«ras piegÄdei, saskaÅÄ ar VikipÄdiju RPM kÄ galvenais pakotÅu pÄrvaldnieks parÄdÄ«jÄs jau 1995. gadÄ RedHat Linux 2.0 versijÄ. Un kopÅ” tÄ laika un lÄ«dz Å”ai dienai sistÄma tiek piegÄdÄta RPM pakotÅu veidÄ un diezgan veiksmÄ«gi pastÄv un attÄ«stÄs.
Debian saimes izplatÄ«Å”ana gÄja lÄ«dzÄ«gu ceļu un ieviesa piegÄdi deb pakotÅu veidÄ, kas ir palikusi nemainÄ«ga lÄ«dz mÅ«sdienÄm.
PakeÅ”u pÄrvaldnieki ļauj piegÄdÄt paÅ”us programmatÅ«ras produktus, konfigurÄt tos instalÄÅ”anas procesa laikÄ, pÄrvaldÄ«t atkarÄ«bas starp dažÄdÄm pakotnÄm, noÅemt produktus un iztÄ«rÄ«t nevajadzÄ«gos vienumus atinstalÄÅ”anas procesa laikÄ. Tie. lielÄkoties tas ir viss, kas vajadzÄ«gs, tÄpÄc tie praktiski nemainÄ«jÄs vairÄkus gadu desmitus.
MÄkoÅdatoÅ”ana pakotÅu pÄrvaldniekiem ir pievienojusi instalÄÅ”anu ne tikai no fiziskajiem datu nesÄjiem, bet arÄ« no mÄkoÅu krÄtuvÄm, taÄu bÅ«tiski maz ir mainÄ«jies.
Ir vÄrts atzÄ«mÄt, ka paÅ”laik notiek dažas virzÄ«bas uz atteikÅ”anos no deb un pÄreju uz snap pakotnÄm, bet par to vÄlÄk.
TÄtad Ŕī jaunÄ mÄkoÅu izstrÄdÄtÄju paaudze, kas nezinÄja ne DEB, ne RPM, arÄ« lÄnÄm auga, ieguva pieredzi, produkti kļuva sarežģītÄki un bija vajadzÄ«gas dažas saprÄtÄ«gÄkas piegÄdes metodes nekÄ FTP, bash skripti un lÄ«dzÄ«gas studentu amatniecÄ«bas.
Un Å”eit parÄdÄs Docker, sava veida virtualizÄcijas, resursu norobežoÅ”anas un piegÄdes metodes sajaukums. Tagad tas ir modÄ un jauneklÄ«gi, bet vai tas ir vajadzÄ«gs visam? Vai Ŕī ir panaceja?
PÄc maniem novÄrojumiem, ļoti bieži Docker tiek piedÄvÄts nevis kÄ saprÄtÄ«ga izvÄle, bet vienkÄrÅ”i tÄpÄc, ka, no vienas puses, sabiedrÄ«bÄ par to runÄ, un tie, kas to ierosina, to tikai zina. SavukÄrt par vecajÄm labajÄm iepakoÅ”anas sistÄmÄm lielÄkoties klusÄ - tÄs eksistÄ un savu darbu dara klusi un nemanot. Å ÄdÄ situÄcijÄ citas izvÄles Ä«sti nav ā izvÄle ir acÄ«mredzama ā Docker.
Es mÄÄ£inÄÅ”u dalÄ«ties savÄ pieredzÄ par to, kÄ mÄs ieviesÄm Docker un kas notika tÄ rezultÄtÄ.
PaŔu rakstīti skripti
SÄkotnÄji bija bash skripti, kas izvietoja jar arhÄ«vus vajadzÄ«gajÄs iekÄrtÄs. Å o procesu vadÄ«ja Dženkinss. Tas darbojÄs veiksmÄ«gi, jo pats jar arhÄ«vs jau ir komplekts, kas satur klases, resursus un pat konfigurÄciju. Ja tajÄ visu ievietojat maksimÄli, tad izvÄrst to skriptÄ nav grÅ«tÄkais, kas jums nepiecieÅ”ams
TaÄu skriptiem ir vairÄki trÅ«kumi:
- skripti parasti tiek rakstÄ«ti steigÄ un tÄpÄc ir tik primitÄ«vi, ka satur tikai vienu labÄko scenÄriju. To veicina fakts, ka izstrÄdÄtÄju interesÄ Ätra piegÄde, un parastam skriptam ir jÄiegulda pienÄcÄ«gs resursu apjoms.
- IepriekÅ”ÄjÄ punkta rezultÄtÄ skripti nesatur atinstalÄÅ”anas procedÅ«ras
- nav noteiktas jauninÄÅ”anas procedÅ«ras
- Kad parÄdÄs jauns produkts, jums ir jÄraksta jauns skripts
- nav atkarības atbalsta
Protams, jÅ«s varat uzrakstÄ«t sarežģītu skriptu, taÄu, kÄ jau rakstÄ«ju iepriekÅ”, Å”is ir izstrÄdes laiks, un tas nav mazÄkais, un, kÄ mÄs zinÄm, laika vienmÄr nepietiek.
Tas viss acÄ«mredzami ierobežo Ŕīs izvietoÅ”anas metodes pielietojumu tikai visvienkÄrÅ”ÄkajÄs sistÄmÄs. Ir pienÄcis laiks to mainÄ«t.
dokers
KÄdÄ brÄ«dÄ« pie mums sÄka nÄkt svaigi kaltas vidus, kas kÅ«sÄ ar idejÄm un trakoja par dokeru. Nu karogs rokÄ ā darÄ«sim! Bija divi mÄÄ£inÄjumi. Abi bija neveiksmÄ«gi ā teiksim, lielu ambÄ«ciju, bet reÄlas pieredzes trÅ«kuma dÄļ. Vai tas bija jÄpiespiež un jÄpabeidz ar jebkÄdiem lÄ«dzekļiem? Tas ir maz ticams ā komandai ir jÄattÄ«stÄs lÄ«dz vajadzÄ«gajam lÄ«menim, lai tÄ varÄtu izmantot atbilstoÅ”os rÄ«kus. TurklÄt, izmantojot gatavus Docker attÄlus, mÄs bieži saskÄrÄmies ar faktu, ka tÄ«kls nedarbojÄs pareizi (kas, iespÄjams, ir saistÄ«ts ar paÅ”a Docker mitrumu) vai arÄ« bija grÅ«ti paplaÅ”inÄt citu cilvÄku konteinerus.
Ar kÄdÄm neÄrtÄ«bÄm mÄs saskÄrÄmies?
- TÄ«kla problÄmas tilta režīmÄ
- Ir neÄrti skatÄ«t žurnÄlus konteinerÄ (ja tie nav glabÄti atseviŔķi saimniekdatora failu sistÄmÄ)
- ElasticSearch ik pa laikam dÄ«vaini sasalst konteinera iekÅ”pusÄ, iemesls nav noskaidrots, konteiners ir oficiÄls
- TvertnÄ ir jÄizmanto apvalks - viss ir ļoti notÄ«rÄ«ts, nav pazÄ«stamu rÄ«ku
- Liela izmÄra savÄktie konteineri - dÄrgi uzglabÄt
- TÄ kÄ konteineri ir lieli, ir grÅ«ti atbalstÄ«t vairÄkas versijas
- IlgÄks izveides laiks atŔķirÄ«bÄ no citÄm metodÄm (skripti vai deb pakotnes)
No otras puses, kÄpÄc ir sliktÄk izvietot Pavasara pakalpojumu burku arhÄ«va veidÄ, izmantojot to paÅ”u deb? Vai resursu izolÄcija tieÅ”Äm ir nepiecieÅ”ama? Vai ir vÄrts pazaudÄt Ärtus operÄtÄjsistÄmas rÄ«kus, ievietojot pakalpojumu ievÄrojami samazinÄtÄ konteinerÄ?
KÄ liecina prakse, patiesÄ«bÄ tas nav nepiecieÅ”ams, deb pakete ir pietiekama 90% gadÄ«jumu.
Kad vecais labais deb neizdodas un kad mums patieÅ”Äm ir nepiecieÅ”ams docker?
Mums tÄ bija pakalpojumu izvietoÅ”ana python. Daudzas bibliotÄkas, kas bija nepiecieÅ”amas maŔīnmÄcÄ«bai un nebija iekļautas operÄtÄjsistÄmas standarta izplatÄ«Å”anÄ (un kas tur bija nepareizÄs versijas), uzlauÅ”ana ar iestatÄ«jumiem, nepiecieÅ”amÄ«ba pÄc dažÄdÄm versijÄm dažÄdiem pakalpojumiem, kas dzÄ«vo vienÄ un tajÄ paÅ”Ä resursdatora sistÄmÄ, noveda pie tas, ka vienÄ«gais saprÄtÄ«gais veids, kÄ piegÄdÄt Å”o kodolmaisÄ«jumu, bija dokeris. Dokera konteinera montÄžas darbietilpÄ«ba izrÄdÄ«jÄs mazÄka nekÄ ideja to visu iesaiÅot atseviŔķÄs deb pakÄs ar atkarÄ«bÄm, un patiesÄ«bÄ neviens pie pilna prÄta to neuzÅemtos.
Otrs punkts, kur plÄnots izmantot Docker, ir pakalpojumu izvietoÅ”ana pÄc zili zaļÄs izvietoÅ”anas shÄmas. Bet Å”eit es vÄlos pakÄpeniski palielinÄt sarežģītÄ«bu: vispirms tiek veidotas deb pakotnes, un pÄc tam no tÄm tiek izveidots dokera konteiners.
Snap pakas
AtgriezÄ«simies pie snap pakÄm. Tie pirmo reizi oficiÄli parÄdÄ«jÄs Ubuntu versijÄ 16.04. AtŔķirÄ«bÄ no parastajÄm deb pakotnÄm un rpm pakotnÄm, snap ir visas atkarÄ«bas. No vienas puses, tas ļauj izvairÄ«ties no bibliotÄku konfliktiem, no otras puses, iegÅ«tÄ pakotne ir lielÄka izmÄra. TurklÄt tas var ietekmÄt arÄ« sistÄmas droŔību: snap piegÄdes gadÄ«jumÄ visas izmaiÅas iekļautajÄs bibliotÄkÄs ir jÄuzrauga izstrÄdÄtÄjam, kurÅ” izveido pakotni. KopumÄ ne viss ir tik vienkÄrÅ”i un universÄla laime nerodas no to izmantoÅ”anas. Bet tomÄr Ŕī ir pilnÄ«gi saprÄtÄ«ga alternatÄ«va, ja to paÅ”u Docker izmanto tikai kÄ iepakoÅ”anas rÄ«ku, nevis virtualizÄcijai.
RezultÄtÄ tagad mÄs izmantojam gan deb pakotnes, gan docker konteinerus saprÄtÄ«gÄ kombinÄcijÄ, ko, iespÄjams, dažos gadÄ«jumos aizstÄsim ar snap pakotnÄm.
AptaujÄ var piedalÄ«ties tikai reÄ£istrÄti lietotÄji.
Ko jÅ«s izmantojat piegÄdei?
-
PaŔu rakstīti skripti
-
KopÄjiet manuÄli uz FTP
-
deb paketes
-
rpm paketes
-
snap pakas
-
Docker-attÄli
-
VirtuÄlÄs maŔīnas attÄli
-
KlonÄjiet visu HDD
-
marionete
-
ansible
-
Cits
Nobalsoja 109 lietotÄji. 32 lietotÄji atturÄjÄs.
Avots: www.habr.com