Ang ebolusyon sa mga himan sa paghatud, o mga hunahuna sa Docker, deb, jar ug daghan pa

Ang ebolusyon sa mga himan sa paghatud, o mga hunahuna sa Docker, deb, jar ug daghan pa

Sa usa ka paagi sa usa ka punto nakahukom ko nga magsulat usa ka artikulo bahin sa paghatud sa porma sa mga sudlanan sa Docker ug mga pakete sa deb, apan sa pagsugod nako, tungod sa usa ka hinungdan gidala ako balik sa layo nga mga panahon sa una nga personal nga mga kompyuter ug bisan mga calculators. Sa kinatibuk-an, imbis nga uga nga pagtandi sa docker ug deb, nakuha namon kini nga mga hunahuna sa hilisgutan sa ebolusyon, nga akong gipresentar alang sa imong konsiderasyon.

Ang bisan unsang produkto, bisan unsa pa kini, kinahanglan nga makuha sa mga server sa produkto, kinahanglan nga i-configure ug ilunsad. Mao kana ang hisgotan niining artikuloha.

Maghunahuna ko sa usa ka konteksto sa kasaysayan, "kung unsa ang akong nakita mao ang akong giawit," kung unsa ang akong nakita sa una nakong pagsugod sa pagsulat sa code ug kung unsa ang akong naobserbahan karon, kung unsa ang atong kaugalingon nga gigamit sa pagkakaron ug ngano. Ang artikulo dili magpakaaron-ingnon nga usa ka bug-os nga pagtuon, pipila ka mga punto ang wala, kini ang akong personal nga pagtan-aw kung unsa ang kaniadto ug kung unsa ang karon.

Busa, sa karaan nga mga adlaw ... ang labing una nga paagi sa paghatod nga akong nakit-an mao ang mga cassette tape gikan sa mga tape recorder. Naa koy computer BK-0010.01...

Ang panahon sa mga calculators

Dili, adunay usa ka sayo pa nga higayon, adunay usab usa ka calculator MK-61 ΠΈ MK-52.

Ang ebolusyon sa mga himan sa paghatud, o mga hunahuna sa Docker, deb, jar ug daghan pa So sa dihang naa ko MK-61, unya ang paagi sa pagbalhin sa programa mao ang usa ka ordinaryo nga piraso sa papel sa usa ka kahon diin ang usa ka programa gisulat, nga, kon gikinahanglan, sa pagpadagan niini sa mano-mano, gisulat ngadto sa calculator. Kung gusto nimo magdula (oo, bisan kini nga antediluvian calculator adunay mga dula) - lingkod ka ug isulod ang programa sa calculator. Natural, sa dihang ang calculator gipalong, ang programa nawala sa kalimot. Gawas pa sa mga code sa calculator nga gisulat sa papel sa iyang kaugalingong kamot, ang mga programa gipatik sa mga magasin nga "Radio" ug "Teknolohiya alang sa Kabatan-onan", ug gimantala usab sa mga libro niadtong panahona.

Ang sunod nga pagbag-o mao ang usa ka calculator MK-52, kini aduna nay pipila ka kaamgid sa non-volatile data storage. Karon ang dula o programa dili kinahanglan nga isulod nga mano-mano, apan pagkahuman sa paghimo sa pipila ka mga mahika nga pass gamit ang mga buton, kini gikarga sa kaugalingon.

Ang gidak-on sa pinakadako nga programa sa calculator mao ang 105 ka mga lakang, ug ang gidak-on sa permanente nga memorya sa MK-52 mao ang 512 ka mga lakang.

Pinaagi sa dalan, kung adunay mga fans sa kini nga mga calculator nga nagbasa niini nga artikulo, sa proseso sa pagsulat sa artikulo nakit-an nako ang usa ka calculator emulator alang sa Android ug mga programa alang niini. Padayon sa nangagi!

Usa ka mubo nga digression bahin sa MK-52 (gikan sa Wikipedia)

Ang MK-52 milupad sa kawanangan sa Soyuz TM-7 spacecraft. Gigamit unta kini aron kuwentahon ang landing trajectory kung mapakyas ang on-board computer.

Sukad sa 52, ang MK-1988 nga adunay Electronica-Astro memory expansion unit gihatag sa mga barko sa Navy isip kabahin sa usa ka navigational computing kit.

Ang unang personal nga mga kompyuter

Ang ebolusyon sa mga himan sa paghatud, o mga hunahuna sa Docker, deb, jar ug daghan pa Balik ta sa mga panahon BC-0010. Klaro nga adunay dugang nga panumduman didto, ug ang pag-type sa code gikan sa usa ka piraso sa papel dili na usa ka kapilian (bisan kung sa una gibuhat nako kana, tungod kay wala’y lain nga medium). Ang mga audio cassette para sa mga tape recorder nahimong panguna nga paagi sa pagtipig ug paghatud sa software.





Ang ebolusyon sa mga himan sa paghatud, o mga hunahuna sa Docker, deb, jar ug daghan paAng pagtipig sa usa ka cassette kasagaran sa porma sa usa o duha ka binary nga mga file, ang tanan naa sa sulod. Ang pagkakasaligan gamay ra kaayo, kinahanglan nako nga tipigan ang 2-3 nga mga kopya sa programa. Ang mga oras sa pagkarga nakapahigawad usab, ug ang mga mahiligon nag-eksperimento sa lainlaing mga pag-encode sa frequency aron mabuntog kini nga mga kakulangan. Nianang panahona, ako mismo wala pa nalambigit sa propesyonal nga software development (dili pag-ihap sa yano nga mga programa sa BASIC), mao nga, ikasubo, dili ko isulti kanimo sa detalye kung giunsa ang tanan nga gihan-ay sa sulod. Ang kamatuoran nga ang kompyuter adunay RAM lamang sa kadaghanan nagtino sa kayano sa laraw sa pagtipig sa datos.

Ang pagtunga sa kasaligan ug dako nga storage media

Sa ulahi, mitungha ang mga floppy disk, ang proseso sa pagkopya gipasayon, ug ang pagkakasaligan miuswag.
Apan ang kahimtang mabag-o lang kung adunay igo nga daghang lokal nga pagtipig nga makita sa porma sa mga HDD.

Ang tipo sa pagpadala nagbag-o sa sukaranan: ang mga programa sa pag-install nagpakita nga nagdumala sa proseso sa pag-configure sa sistema, ingon man paglimpyo pagkahuman sa pagtangtang, tungod kay ang mga programa dili lang gibasa sa panumduman, apan gikopya na sa lokal nga pagtipig, diin kinahanglan nimo. makahimo sa paghawan sa wala kinahanglana nga mga butang kon gikinahanglan.

Sa samang higayon, ang pagkakomplikado sa gihatag nga software nagkadako.
Ang gidaghanon sa mga file sa paghatud mosaka gikan sa pipila ngadto sa gatusan ug liboan, ang mga panagbangi tali sa mga bersyon sa librarya ug uban pang mga kalipay magsugod sa diha nga lain-laing mga programa sa paggamit sa sama nga data.

Ang ebolusyon sa mga himan sa paghatud, o mga hunahuna sa Docker, deb, jar ug daghan pa Niadtong panahona, ang pagkaanaa sa Linux dili pa bukas kanako; Nagpuyo ko sa kalibutan sa MS DOS ug, sa ulahi, Windows, ug nagsulat sa Borland Pascal ug Delphi, usahay nagtan-aw sa C++. Daghang mga tawo ang migamit sa InstallShield sa paghatud sa mga produkto kaniadto. ru.wikipedia.org/wiki/InstallShield, nga malampuson nga nakasulbad sa tanan nga gi-assign nga mga buluhaton sa pag-deploy ug pag-configure sa software.




Panahon sa Internet

Sa hinay-hinay, ang pagkakomplikado sa mga sistema sa software nahimong mas komplikado; gikan sa monolith ug desktop nga mga aplikasyon adunay usa ka transisyon ngadto sa gipang-apod-apod nga mga sistema, manipis nga mga kliyente ug microservices. Karon kinahanglan nimo nga i-configure dili lamang ang usa ka programa, apan usa ka set niini, ug aron silang tanan magtinabangay.

Ang konsepto hingpit nga nausab, ang Internet miabut, ang panahon sa mga serbisyo sa panganod miabut. Sa pagkakaron, sa inisyal nga yugto lamang, sa porma sa mga website, walay usa nga partikular nga nagdamgo sa mga serbisyo. apan kini usa ka pagbag-o sa pag-uswag ug paghatud sa mga aplikasyon.

Alang sa akong kaugalingon, akong namatikdan nga nianang higayuna adunay pagbag-o sa mga henerasyon sa mga developer (o naa ra sa akong palibot), ug adunay usa ka pagbati nga ang tanan nga maayo nga daan nga mga pamaagi sa paghatud nakalimtan sa usa ka higayon ug ang tanan nagsugod gikan sa labing kaayo. pagsugod: ang tanan nga paghatud nagsugod sa paghimo sa mga script sa tuhod ug mapasigarbuhon nga gitawag kini nga "Padayon nga paghatud". Sa tinuud, nagsugod ang usa ka yugto sa kagubot, kung ang daan nakalimtan ug wala magamit, ug ang bag-o wala na.

Nahinumdom ko sa mga panahon nga sa among kompanya nga akong gitrabahoan kaniadto (dili nako kini hinganlan), imbes nga magtukod pinaagi sa hulmigas (dili pa sikat ang maven o wala gyud), ang mga tawo nangolekta lang mga banga sa IDE ug malinawon nga nagpasalig kini sa SVN. Tungod niini, ang deployment naglangkob sa pagkuha sa file gikan sa SVN ug pagkopya niini pinaagi sa SSH ngadto sa gusto nga makina. Yano ra kaayo ug clumsy.

Sa samang higayon, ang paghatud sa yano nga mga site sa PHP gihimo sa usa ka primitive nga paagi pinaagi lamang sa pagkopya sa gitul-id nga file pinaagi sa FTP ngadto sa target nga makina. Usahay dili kini ang kahimtang - ang code gi-edit nga live sa server sa produkto, ug labi na nga chic kung adunay mga backup sa usa ka lugar.


RPM ug DEB nga mga pakete

Ang ebolusyon sa mga himan sa paghatud, o mga hunahuna sa Docker, deb, jar ug daghan paSa laing bahin, sa pag-uswag sa Internet, ang mga sistema nga sama sa UNIX nagsugod sa pagkapopular, ilabi na, niadtong panahona nga akong nadiskobrehan ang RedHat Linux 6, mga 2000. Natural, adunay usab piho nga mga paagi alang sa paghatud sa software; sumala sa Wikipedia, ang RPM ingon ang panguna nga manager sa package nagpakita na kaniadtong 1995, sa bersyon sa RedHat Linux 2.0. Ug sukad niadto ug hangtod karon, ang sistema gihatag sa porma sa mga pakete sa RPM ug malampuson nga naglungtad ug nag-uswag.

Ang mga pag-apod-apod sa pamilyang Debian misunod sa susama nga dalan ug gipatuman ang paghatud sa porma sa mga deb packages, nga nagpabilin nga wala mausab hangtod karon.

Gitugotan ka sa mga manager sa package nga ihatud ang mga produkto sa software sa ilang kaugalingon, i-configure kini sa panahon sa proseso sa pag-install, pagdumala sa mga dependency tali sa lainlaing mga pakete, tangtangon ang mga produkto ug limpyohan ang wala kinahanglana nga mga butang sa panahon sa proseso sa pag-uninstall. Mga. sa kadaghanan, mao ra kana ang gikinahanglan, mao nga milungtad sila daghang mga dekada nga halos wala mausab.

Ang cloud computing nagdugang sa pag-install sa mga managers sa package dili lamang gikan sa pisikal nga media, kondili gikan usab sa mga cloud repository, apan sa sukaranan gamay ra ang nausab.

Angay nga matikdan nga sa pagkakaron adunay pipila ka mga lakang padulong sa pagpalayo gikan sa deb ug pagbalhin ngadto sa snap packages, apan labaw pa niana sa ulahi.

Busa, kining bag-ong henerasyon sa mga cloud developers, nga wala makaila sa DEB o RPM, hinay-hinay usab nga mitubo, nakaangkon og kasinatian, nahimong mas komplikado ang mga produkto, ug gikinahanglan ang pipila ka mas makatarunganon nga mga pamaagi sa paghatod kay sa FTP, bash scripts ug susamang mga crafts sa estudyante.
Ug kini diin ang Docker moabut sa hulagway, usa ka matang sa pagsagol sa virtualization, resource delimitation ug delivery method. Kini uso ug batan-on karon, apan gikinahanglan ba kini sa tanan? Panacea ba kini?

Gikan sa akong mga obserbasyon, kanunay nga gisugyot ang Docker dili ingon usa ka makatarunganon nga kapilian, apan tungod kay, sa usa ka bahin, gihisgutan kini sa komunidad, ug ang mga nagsugyot niini nahibal-an ra. Sa laing bahin, sa kasagaran sila hilom mahitungod sa maayo nga daan nga mga sistema sa pagputos - sila anaa ug naghimo sa ilang trabaho nga hilom ug wala mamatikdi. Sa ingon nga kahimtang, wala’y lain nga kapilian - klaro ang kapilian - Docker.

Akong sulayan nga ipaambit ang akong kasinatian kung giunsa namon gipatuman ang Docker ug kung unsa ang nahitabo ingon usa ka sangputanan.


Mga sinulat sa kaugalingon nga mga script

Sa sinugdan, adunay mga bash script nga nag-deploy sa mga jar archive sa gikinahanglan nga mga makina. Kini nga proseso gidumala ni Jenkins. Kini malampuson nga nagtrabaho, tungod kay ang jar archive mismo usa na ka asembliya nga adunay mga klase, mga kapanguhaan ug bisan ang pag-configure. Kung gibutang nimo ang tanan sa labing kadaghan, nan ang pagpalapad niini sa usa ka script dili ang labing lisud nga butang nga kinahanglan nimo

Apan ang mga script adunay daghang mga disbentaha:

  • Ang mga script kasagarang gisulat nga dinalian ug busa karaan kaayo nga kini adunay usa lamang ka labing maayo nga senaryo. Gipadali kini sa kamatuoran nga ang developer interesado sa paspas nga pagpadala, ug ang usa ka normal nga script nagkinahanglan sa pagpamuhunan sa usa ka desente nga kantidad sa mga kapanguhaan
  • Ingon usa ka sangputanan sa miaging punto, ang mga script wala’y mga pamaagi sa pag-uninstall
  • walay natukod nga pamaagi sa pag-upgrade
  • Kung adunay usa ka bag-ong produkto nga makita, kinahanglan nimo nga magsulat usa ka bag-ong script
  • walay suporta sa pagsalig

Siyempre, mahimo ka magsulat og usa ka sopistikado nga script, apan, ingon sa akong gisulat sa ibabaw, kini ang panahon sa pag-uswag, ug dili ang labing gamay, ug, ingon sa nahibal-an namon, kanunay nga wala’y igong oras.

Kining tanan klaro nga naglimite sa han-ay sa paggamit niini nga pamaagi sa pagdeploy ngadto lamang sa pinakasimple nga mga sistema. Miabot na ang panahon nga usbon kini.


Docker

Ang ebolusyon sa mga himan sa paghatud, o mga hunahuna sa Docker, deb, jar ug daghan paSa pila ka punto, ang mga bag-ong gihulma nga mga tungatunga nagsugod sa pag-abut kanamo, nag-agay sa mga ideya ug naghinamhinam bahin sa pantalan. Aw, bandera sa kamot - buhaton nato kini! Adunay duha ka pagsulay. Ang duha wala molampos - ingnon ta, tungod sa dagkong mga ambisyon, apan kakulang sa tinuod nga kasinatian. Kinahanglan ba nga pugson kini ug tapuson kini sa bisan unsang paagi nga gikinahanglan? Kini dili mahimo - ang team kinahanglan nga mouswag sa gikinahanglan nga lebel sa dili pa kini magamit ang angay nga mga himan. Dugang pa, kung gigamit ang andam nga mga imahe sa Docker, kanunay namon nasugatan ang kamatuoran nga ang network wala molihok sa husto (nga mahimo’g tungod sa kaumog sa Docker mismo) o lisud ang pagpalapad sa mga sudlanan sa ubang mga tawo.

Unsang kahasol ang among nasugatan?

  • Mga problema sa network sa bridge mode
  • Dili kombenyente ang pagtan-aw sa mga troso sa usa ka sudlanan (kung wala kini gitipig nga gilain sa file system sa host machine)
  • Ang ElasticSearch usahay mag-freeze sa katingad-an sa sulod sa sudlanan, ang hinungdan wala pa matino, opisyal ang sudlanan
  • Kinahanglan nga mogamit usa ka kabhang sa sulod sa usa ka sudlanan - ang tanan nahubo kaayo, wala’y naandan nga mga himan
  • Dako nga gidak-on sa nakolekta nga mga sudlanan - mahal sa pagtipig
  • Tungod sa dako nga gidak-on sa mga sudlanan, lisud ang pagsuporta sa daghang mga bersyon
  • Mas taas nga oras sa pagtukod, dili sama sa ubang mga pamaagi (mga script o deb packages)

Sa laing bahin, ngano nga mas grabe ang pag-deploy sa serbisyo sa Spring sa porma sa archive sa garapon pinaagi sa parehas nga deb? Kinahanglan ba gyud ang pag-inusara sa kahinguhaan? Takus ba nga mawala ang kombenyente nga mga himan sa operating system pinaagi sa pagpuno sa usa ka serbisyo sa usa ka gamay nga pagkunhod nga sudlanan?

Ingon sa gipakita sa praktis, sa tinuud dili kini kinahanglan, ang pakete sa deb igo na sa 90% sa mga kaso.

Kanus-a mapakyas ang maayong daan nga deb ug kanus-a kinahanglan naton ang docker?

Alang kanamo, kini nag-deploy sa mga serbisyo sa python. Daghang mga librarya nga gikinahanglan alang sa pagkat-on sa makina ug wala gilakip sa standard nga pag-apod-apod sa operating system (ug kung unsa ang adunay mga sayup nga bersyon), mga hack nga adunay mga setting, ang panginahanglan alang sa lainlaing mga bersyon alang sa lainlaing mga serbisyo nga nagpuyo sa parehas nga sistema sa host nagdala sa. kini, nga ang bugtong makatarunganon nga paagi sa paghatud sa kini nga sagol nga nukleyar mao ang pantalan. Ang labor intensity sa pag-assemble sa usa ka docker container nahimo nga mas ubos kaysa sa ideya sa pag-pack niini sa tanan ngadto sa lain nga deb packages nga adunay mga dependency, ug sa pagkatinuod walay usa sa ilang husto nga hunahuna ang mobuhat niini.

Ang ikaduha nga punto diin nagplano kami nga gamiton ang Docker mao ang pag-deploy sa mga serbisyo gamit ang blue-green deploy scheme. Apan dinhi gusto nako nga makakuha usa ka anam-anam nga pagtaas sa pagkakomplikado: una, ang mga pakete sa deb gitukod, ug pagkahuman usa ka sulud sa docker ang gitukod gikan kanila.


Mga pakete sa snap

Ang ebolusyon sa mga himan sa paghatud, o mga hunahuna sa Docker, deb, jar ug daghan pa Balikan nato ang snap packages. Una sila nga opisyal nga nagpakita sa Ubuntu 16.04. Dili sama sa naandan nga mga pakete sa deb ug mga pakete sa rpm, ang snap nagdala sa tanan nga mga dependency. Sa usa ka bahin, kini nagtugot kanimo sa paglikay sa mga panagbangi sa librarya, sa laing bahin, ang resulta nga pakete mas dako sa gidak-on. Dugang pa, kini mahimo usab nga makaapekto sa seguridad sa sistema: sa kaso sa snap delivery, ang tanan nga mga pagbag-o sa gilakip nga mga librarya kinahanglan nga bantayan sa developer nga nagmugna sa package. Sa kinatibuk-an, dili tanan yano ra ug ang unibersal nga kalipayan dili gikan sa paggamit niini. Apan, bisan pa, kini usa ka hingpit nga makatarunganon nga alternatibo kung ang parehas nga Docker gigamit lamang ingon usa ka himan sa pagputos ug dili alang sa virtualization.



Ingon usa ka sangputanan, gigamit na namon karon ang mga pakete sa deb ug mga sulud sa docker sa usa ka makatarunganon nga kombinasyon, nga, tingali, sa pipila ka mga kaso pulihan namon ang mga pakete sa snap.

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Unsay gamit nimo sa delivery?

  • Mga sinulat sa kaugalingon nga mga script

  • Kopyaha ang mano-mano sa FTP

  • deb nga mga pakete

  • rpm nga mga pakete

  • snap nga mga pakete

  • Docker-mga larawan

  • Mga imahe sa virtual nga makina

  • I-clone ang tibuok HDD

  • papet

  • ansible

  • Ang uban

109 ka tiggamit ang miboto. 32 ka tiggamit ang nag- abstain.

Source: www.habr.com

Idugang sa usa ka comment