D'Evolutioun vu Liwwerinstrumenter, oder Gedanken iwwer Docker, Deb, Jar a méi

D'Evolutioun vu Liwwerinstrumenter, oder Gedanken iwwer Docker, Deb, Jar a méi

Irgendwéi op engem Punkt hunn ech beschloss en Artikel iwwer d'Liwwerung a Form vun Docker Container an Deb Packagen ze schreiwen, awer wéi ech ugefaang hunn, aus irgendege Grënn gouf ech zréck an déi wäit Zäit vun den éischte perséinleche Computeren a souguer Rechner gedroen. Am Allgemengen, amplaz vun dréchene Vergläicher vun Docker an Deb, hu mir dës Gedanken iwwer d'Thema vun der Evolutioun, déi ech fir Är Iwwerleeung presentéieren.

All Produkt, egal wat et ass, muss iergendwéi op d'Produktserver kommen, muss konfiguréiert a lancéiert ginn. Doriwwer wäert dësen Artikel handelen.

Ech wäert an engem historesche Kontext denken, "wat ech gesinn ass wat ech sangen", wat ech gesinn hunn wéi ech ugefaang hunn Code ze schreiwen a wat ech elo observéieren, wat mir selwer am Moment benotzen a firwat. Den Artikel mécht sech net als eng vollwäerteg Etude aus, e puer Punkte si verpasst, dat ass meng perséinlech Vue op wat war a wat elo ass.

Also, an de gudden alen Deeg ... déi fréist Method fir d'Liwwerung, déi ech fonnt hunn, war Kassettbänner vu Bandrecorder. Ech hat e Computer BK-0010.01 ...

Der Ära vun Rechner

Neen, et war nach e fréiere Moment, et gouf och e Rechner MK-61 и MK-52.

D'Evolutioun vu Liwwerinstrumenter, oder Gedanken iwwer Docker, Deb, Jar a méi Also wann ech hat MK-61, dann ass de Wee fir de Programm ze transferéieren e gewéinlecht Stéck Pabeier an enger Këscht, op där e Programm geschriwwen ass, wat, wann néideg, fir se manuell ze lafen, an de Rechner geschriwwe gouf. Wann Dir wëllt spillen (jo, och dëst antediluvian Rechner hat Spiller) - Dir sëtzt a gitt de Programm an de Rechner. Natierlech, wann de Rechner ausgeschalt gouf, ass de Programm an d'Vergiess verschwonnen. Nieft de Rechnercoden, déi a senger eegener Hand op Pabeier geschriwwe goufen, goufen d'Programmer an den Zäitschrëften "Radio" an "Technologie fir d'Jugend" publizéiert a goufen och a Bicher vun där Zäit publizéiert.

Déi nächst Ännerung war e Rechner MK-52, Et huet schonn e puer Schéin vun net-flüchtege Datelagerung. Elo muss d'Spill oder de Programm net manuell aginn ginn, awer nodeems se e puer magesch Passë mat de Knäpper gemaach hunn, ass et selwer gelueden.

D'Gréisst vum gréisste Programm am Rechner war 105 Schrëtt, an d'Gréisst vun der permanenter Erënnerung am MK-52 war 512 Schrëtt.

Iwwregens, wann et Fans vun dëse Rechner sinn, déi dësen Artikel liesen, am Prozess vum Artikel ze schreiwen, hunn ech souwuel e Rechner-Emulator fir Android a Programmer dofir fonnt. Fuert an d'Vergaangenheet!

Eng kuerz Digression iwwer MK-52 (vu Wikipedia)

MK-52 ass op der Sojus TM-7 Raumschëff an de Weltraum geflunn. Et sollt benotzt ginn fir d'Landungsstreck ze berechnen am Fall wou de Bordcomputer ausgefall ass.

Zënter 52 ass de MK-1988 mat der Elektronika-Astro Memory Expansioun Eenheet fir Navy Schëffer als Deel vun engem Navigatiouns-Computer-Kit geliwwert.

Déi éischt perséinlech Computeren

D'Evolutioun vu Liwwerinstrumenter, oder Gedanken iwwer Docker, Deb, Jar a méi Komme mer zréck an d'Zäit BC-0010. Et ass kloer datt et méi Erënnerung do war, a Code aus engem Stéck Pabeier anzeginn war net méi eng Optioun (obwuel ech am Ufank just dat gemaach hunn, well et einfach keen anere Medium gouf). Audiokassetten fir Bandrecorder ginn den Haaptmëttel fir Software ze späicheren an ze liwweren.





D'Evolutioun vu Liwwerinstrumenter, oder Gedanken iwwer Docker, Deb, Jar a méiD'Lagerung op enger Kassett war normalerweis a Form vun engem oder zwee binäre Dateien, alles anescht war dobannen. Zouverlässegkeet war ganz niddereg, ech hu missen 2-3 Exemplare vum Programm halen. Luedzäiten waren och enttäuschend, an Enthusiaster experimentéiert mat verschiddene Frequenzkodéierungen fir dës Mängel ze iwwerwannen. Zu där Zäit war ech selwer nach net an der professioneller Softwareentwécklung involvéiert (net einfach Programmer an der BASIC zielen), also, leider, wäert ech Iech net am Detail soen wéi alles dobannen arrangéiert ass. Déi ganz Tatsaach, datt de Computer nëmmen RAM huet, huet d'Einfachheet vum Datelagerungsschema bestëmmt.

D'Entstoe vun zouverlässeg a grouss Stockage Medien

Méi spéit sinn Disketten opgetaucht, de Kopieprozess gouf vereinfacht an d'Zouverlässegkeet erhéicht.
Awer d'Situatioun ännert sech dramatesch nëmme wann genuch grouss lokal Späicheren a Form vun HDDs erscheinen.

D'Aart vun der Liwwerung ännert sech grondsätzlech: Installateursprogrammer erschéngen déi de Prozess vun der Konfiguratioun vum System verwalten, souwéi d'Botzen no der Entfernung, well d'Programmer net nëmmen an d'Erënnerung gelies ginn, mä och op d'lokal Späichere kopéiert sinn, aus deem Dir musst fäeg sinn onnéideg Saachen ze läschen wann néideg.

Zur selwechter Zäit geet d'Komplexitéit vun der geliwwerter Software erop.
D'Zuel vun de Fichieren an der Liwwerung vergréissert vun e puer honnert an dausende, Konflikter tëscht Bibliothéik Versiounen an aner Freed fänken wann verschidde Programmer déi selwecht Donnéeën benotzen.

D'Evolutioun vu Liwwerinstrumenter, oder Gedanken iwwer Docker, Deb, Jar a méi Deemools war d'Existenz vu Linux fir mech nach net oppen; Ech hunn an der Welt vun MS DOS gelieft a spéider Windows, a geschriwwen a Borland Pascal an Delphi, heiansdo op C++ gesicht. Vill Leit hunn InstallShield benotzt fir deemools Produkter ze liwweren. ru.wikipedia.org/wiki/InstallShield, déi ganz erfollegräich all zougewisen Aufgaben fir d'Software z'installéieren an ze konfiguréieren.




Internet Ära

No an no gëtt d'Komplexitéit vu Software Systemer nach méi komplex; vum Monolith an Desktop Uwendungen gëtt et en Iwwergang op verdeelt Systemer, dënn Clienten a Mikroservicer. Elo musst Dir net nëmmen ee Programm konfiguréieren, awer e Set vun hinnen, a sou datt se all zesumme schaffen.

D'Konzept huet komplett geännert, den Internet ass komm, d'Ära vun de Cloud Servicer ass ukomm. Bis elo, nëmmen an der éischter Etapp, a Form vu Websäiten, huet keen besonnesch vu Servicer gedreemt. awer et war e Wendepunkt an der Entwécklung an der Liwwerung vun Uwendungen.

Fir mech hunn ech festgestallt datt et zu deem Moment eng Ännerung an de Generatioune vun Entwéckler war (oder et war nëmmen a mengem Ëmfeld), an et war e Gefill datt all déi gutt al Liwwermethoden zu engem Moment vergiess goufen an alles ugefaang huet Ufank: all Liwwerung ugefaang Knéi Scripten ze maachen an houfreg et genannt "Kontinuéierlech Liwwerung". Tatsächlech huet eng Period vum Chaos ugefaang, wann dat alt vergiess gëtt an net benotzt gëtt, an dat neit einfach net existéiert.

Ech erënnere mech un d'Zäiten wou an eiser Firma wou ech deemools geschafft hunn (ech wäert et net nennen), amplaz iwwer Ant ze bauen (Maven war nach net populär oder existéiert guer net), d'Leit hunn einfach Jar an der IDE gesammelt a seriéis engagéiert et an SVN. Deementspriechend bestoung d'Deployment aus der Datei vum SVN zréckzekommen an et iwwer SSH op déi gewënscht Maschinn ze kopéieren. Et ass sou einfach a knaschteg.

Zur selwechter Zäit gouf d'Liwwerung vun einfache Siten an PHP op eng ganz primitiv Manéier gemaach andeems Dir déi korrigéiert Datei iwwer FTP op d'Zilmaschinn kopéiert. Heiansdo war dat net de Fall - de Code gouf live um Produktserver geännert, an et war besonnesch chic wann et iergendwou Backupe goufen.


RPM an DEB Packagen

D'Evolutioun vu Liwwerinstrumenter, oder Gedanken iwwer Docker, Deb, Jar a méiOp der anerer Säit, mat der Entwécklung vum Internet, hunn UNIX-ähnlech Systemer ugefaang ëmmer méi Popularitéit ze gewannen, besonnesch, et war zu där Zäit datt ech RedHat Linux 6 entdeckt hunn, ongeféier 2000. Natierlech goufen et och verschidde Mëttele fir Software ze liwweren; laut Wikipedia ass RPM als Haaptpakmanager schonn 1995 an der Versioun vu RedHat Linux 2.0 opgetaucht. An zënterhier a bis haut ass de System a Form vun RPM Packagen geliwwert an ass zimlech erfollegräich existéierend an entwéckelt.

Verdeelunge vun der Debian Famill hunn en ähnleche Wee gefollegt an hunn d'Liwwerung a Form vun Deb Packagen ëmgesat, déi bis haut onverännert bliwwen ass.

Package Manager erlaben Iech d'Softwareprodukter selwer ze liwweren, se während dem Installatiounsprozess ze konfiguréieren, Ofhängegkeeten tëscht verschiddene Packagen ze verwalten, Produkter ze läschen an onnéideg Elementer während dem Deinstallatiounsprozess ze botzen. Déi. zum gréissten Deel ass dat alles wat gebraucht gëtt, dofir hunn se e puer Joerzéngte praktesch onverännert gedauert.

Cloud Computing huet d'Installatioun fir Packagemanager bäigefüügt net nëmme vu kierperleche Medien, awer och vu Cloud Repositories, awer grondsätzlech wéineg huet geännert.

Et ass derwäert ze notéieren datt et de Moment e puer Beweegunge sinn fir vun der Deb ewech ze goen an op Snap Packagen ze wiesselen, awer méi méi spéit.

Also, dës nei Generatioun vu Cloud-Entwéckler, déi weder DEB nach RPM woussten, ass och lues a lues gewuess, Erfarung gewonnen, Produkter goufe méi komplex, an e puer méi raisonnabel Liwwermethoden waren gebraucht wéi FTP, Bash Scripten an ähnlech Studentenhandwierker.
An dat ass wou Docker an d'Bild kënnt, eng Zort Mëschung aus Virtualiséierung, Ressource Ofgrenzung a Liwwermethod. Et ass moudesch a jugendlech elo, awer ass et fir alles gebraucht? Ass dëst eng Panacea?

Aus mengen Observatioune gëtt den Docker ganz dacks net als raisonnabel Choix proposéiert, mee einfach well et engersäits an der Gemeng geschwat gëtt, an déi, déi et proposéieren, wëssen et nëmmen. Op der anerer Säit, si si meeschtens roueg iwwer déi gutt al Verpackungssystemer - si existéieren a maachen hir Aarbecht roueg an onopfälleg. An esou enger Situatioun gëtt et wierklech keng aner Wiel - d'Wiel ass evident - Docker.

Ech probéieren meng Erfahrung ze deelen wéi mir Docker implementéiert hunn a wat als Resultat geschitt ass.


Self-schrëftlech Scripten

Am Ufank waren et Bash Scripten déi Jar Archiven op déi erfuerderlech Maschinnen ofgesat hunn. Dëse Prozess gouf vum Jenkins geréiert. Dëst huet erfollegräich geschafft, well de Jar Archiv selwer schonn eng Versammlung ass, déi Klassen, Ressourcen a souguer Konfiguratioun enthält. Wann Dir alles op de Maximum setzt, dann ass et an e Skript auszebauen net dat schwéierst wat Dir braucht

Awer Scripte hunn e puer Nodeeler:

  • Skripte ginn normalerweis séier geschriwwen a sinn dofir sou primitiv datt se nëmmen ee beschte Fall Szenario enthalen. Dëst gëtt erliichtert duerch d'Tatsaach datt den Entwéckler un enger schneller Liwwerung interesséiert ass, an en normale Skript erfuerdert d'Investitioun vun enger anstänneger Quantitéit u Ressourcen
  • als Konsequenz vum virege Punkt, enthalen d'Skripte keng Uninstallatiounsprozeduren
  • keng etabléiert Upgrade Prozedur
  • Wann en neit Produkt erschéngt, musst Dir en neit Skript schreiwen
  • keng Ofhängegkeet Ënnerstëtzung

Natierlech kënnt Dir e raffinéierte Skript schreiwen, awer, wéi ech uewen geschriwwen hunn, ass dëst Entwécklungszäit, an net am mannsten, a wéi mir wëssen, gëtt et ëmmer net genuch Zäit.

All dëst limitéiert selbstverständlech d'Band vun der Uwendung vun dëser Deploymentmethod op nëmmen déi einfachste Systemer. D'Zäit ass komm fir dëst z'änneren.


Docker

D'Evolutioun vu Liwwerinstrumenter, oder Gedanken iwwer Docker, Deb, Jar a méiIrgendwann hunn frësch geprägte Mëttelen ugefaang bei eis ze kommen, mat Iddien ze sëtzen an iwwer den Docker ze raschten. Gutt, Fändel an der Hand - loosst eis et maachen! Et goufen zwee Versich. Béid waren net erfollegräich - loosst eis soen, wéinst groussen Ambitiounen, awer Mangel u reeller Erfahrung. War et néideg et ze forcéieren an op all méiglech Manéier fäerdeg ze maachen? Et ass onwahrscheinlech - d'Team muss op den erfuerderlechen Niveau evoluéieren ier se déi entspriechend Tools benotze kann. Zousätzlech, wann Dir fäerdege Docker Biller benotzt, hu mir dacks d'Tatsaach begéint datt d'Netzwierk net richteg funktionnéiert (wat vläicht wéinst der Feuchtigkeit vum Docker selwer war) oder et war schwéier d'Container vun anere Leit auszebauen.

Wéi eng Onbequemen hu mir begéint?

  • Netzwierkproblemer am Bréckmodus
  • Et ass onbequem Logbicher an engem Container ze gesinn (wann se net separat am Dateiesystem vun der Hostmaschinn gespäichert sinn)
  • ElasticSearch afréiert heiansdo komesch am Container, de Grond ass net festgeluecht, de Container ass offiziell
  • Et ass néideg eng Schuel an engem Container ze benotzen - alles ass ganz ofgerappt, et gi keng gewéinlech Tools
  • Grouss Gréisst vu gesammelt Container - deier fir ze späicheren
  • Wéinst der grousser Gréisst vu Container ass et schwéier verschidde Versiounen z'ënnerstëtzen
  • Méi laang Bauzäit, am Géigesaz zu anere Methoden (Skripten oder Deb Packagen)

Op der anerer Säit, firwat ass et méi schlëmm fir e Fréijoersservice a Form vun engem Jararchiv duerch déiselwecht Deb z'installéieren? Ass Ressource Isolatioun wierklech néideg? Ass et derwäert praktesch Betriebssystem Tools ze verléieren andeems Dir e Service an e staark reduzéierten Container stoppt?

Wéi d'Praxis gewisen huet, ass et an der Realitéit net néideg, de Deb Package ass genuch an 90% vun de Fäll.

Wéini klappt déi gutt al Deb a wéini brauche mir wierklech Docker?

Fir eis war dëst Servicer am Python z'installéieren. Vill Bibliothéike gebraucht fir Maschinnléieren an net an der Standardverdeelung vum Betribssystem abegraff (a wat war et waren déi falsch Versiounen), Hacks mat Astellungen, de Besoin fir verschidde Versioune fir verschidde Servicer, déi um selwechte Hostsystem liewen dëst , datt déi eenzeg raisonnabel Manéier dës nuklear Mëschung ze liwweren war den Docker. D'Aarbechtsintensitéit fir en Docker Container ze montéieren huet sech méi niddereg gewisen wéi d'Iddi fir dat alles an getrennten Deb Packagen mat Ofhängegkeeten ze packen, an tatsächlech géif keen an hirem richtege Geescht dëst ënnerhuelen.

Den zweete Punkt wou mir plangen Docker ze benotzen ass Servicer z'installéieren mat dem blo-gréngen Deploy Schema. Awer hei wëll ech eng graduell Erhéijung vun der Komplexitéit kréien: als éischt ginn Deb Packagen gebaut, an dann en Docker Container vun hinnen gebaut.


Snap Packagen

D'Evolutioun vu Liwwerinstrumenter, oder Gedanken iwwer Docker, Deb, Jar a méi Loosst eis zréck op Snap Packagen. Si sinn als éischt offiziell an Ubuntu 16.04 opgetaucht. Am Géigesaz zu den üblechen Deb Packagen an Rpm Packagen, dréit Snap all Ofhängegkeeten. Engersäits erlaabt dëst Iech Bibliothéikskonflikter ze vermeiden, op der anerer Säit ass de resultéierende Package méi grouss. Zousätzlech kann dëst och d'Sécherheet vum System beaflossen: am Fall vun der Snap-Liwwerung, all Ännerunge vun den abegraffe Bibliothéike mussen vum Entwéckler iwwerwaacht ginn, deen de Package erstellt. Am Allgemengen ass net alles sou einfach an universell Gléck kënnt net aus dem Gebrauch. Awer trotzdem ass dëst eng komplett raisonnabel Alternativ wann deeselwechten Docker nëmmen als Verpackungsinstrument benotzt gëtt an net fir Virtualiséierung.



Als Resultat benotze mir elo souwuel Deb Packagen wéi och Docker Container an enger raisonnabel Kombinatioun, déi, vläicht, an e puer Fäll ersetzen mir mat Snap Packagen.

Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen. Umellen, wann ech glift.

Wat benotzt Dir fir Liwwerung?

  • Self-schrëftlech Scripten

  • Kopie manuell op FTP

  • deb Packagen

  • rpm Packagen

  • snap Packagen

  • Docker-Biller

  • Virtuell Maschinn Biller

  • Klon déi ganz HDD

  • Marionett

  • Sprooch ass

  • Aner

109 Benotzer hunn gestëmmt. 32 Benotzer hu sech enthalen.

Source: will.com

Setzt e Commentaire