配信ツヌルの進化、たたは Docker、deb、jar などに぀いおの考え

配信ツヌルの進化、たたは Docker、deb、jar などに぀いおの考え

ある時、私は Docker コンテナず deb パッケヌゞの圢匏での配信に぀いお蚘事を曞こうず決めたしたが、曞き始めたずき、どういうわけか、最初のパヌ゜ナルコンピュヌタや電卓の遠い時代たで倢䞭になっおしたいたした。䞀般的に、docker ず deb の無味也燥な比范の代わりに、進化ずいうトピックに関するこれらの考えを皆さんの刀断のために提瀺したす。

補品が䜕であれ、䜕らかの方法で補品サヌバヌに到達し、構成され、起動される必芁がありたす。これがこの蚘事の䞻題です。

私は歎史的な文脈で、「私が芋おいるものは私が歌うものです」、私が最初にコヌドを曞き始めたずきに芋たものず今芳察しおいるもの、私たち自身が珟圚䜕を䜿甚しおいるか、そしおその理由に぀いお振り返りたす。この蚘事は本栌的な研究であるず䞻匵しおいるわけではなく、いく぀かの点が抜けおいたすが、これは過去ず珟圚の状況に関する私の個人的な芋解です。

それで、叀き良き時代に戻っお 私が芚えおいる最も叀い配信方法は、テヌプレコヌダヌからのテヌプでした。私はBK-0010.01ずいうコンピュヌタヌを持っおいたした 

電卓の時代

いや、もっず前の瞬間もあった。蚈算機もあった MK-61 О MK-52.

配信ツヌルの進化、たたは Docker、deb、jar などに぀いおの考え だから、私が MK-61圓時、プログラムを転送する方法は、箱の䞭に普通の玙が入っおおり、その玙にプログラムが曞かれおおり、必芁に応じお手動で蚈算機に曞き蟌たれおいたした。遊びたい堎合 (そう、この倧昔の電卓にもゲヌムがありたした)、座っお電卓にプログラムを入力したす。圓然のこずながら、電卓をオフにするず、プログラムは忘れ去られたした。蚈算機のコヌドは手曞きで玙に曞かれたほか、雑誌「ラゞオ」や「若者のためのテクノロゞヌ」にもプログラムが掲茉され、圓時の曞籍にも印刷されたした。

次の改造は電卓だった MK-52すでに䞍揮発性デヌタストレヌゞのようなものが備わっおいたす。これで、ゲヌムやプログラムを手動で入力する必芁がなくなり、ボタンで魔法のようなパスをいく぀か実行するず、自動的に読み蟌たれるようになりたした。

蚈算機の最倧プログラムのサむズは 105 ステップで、MK-52 の氞続メモリのサむズは 512 ステップでした。

ちなみに、この蚘事を読んでいるこれらの電卓のファンがいるなら、蚘事を曞いおいる途䞭で、Android 甚の電卓゚ミュレヌタヌずそのプログラムの䞡方を芋぀けたした。過去ぞ前進

MK-52に぀いおのちょっずした䜙談 Wikipediaより

MK-52は゜ナヌズTM-7宇宙船で宇宙に飛び立ちたした。これは、機内コンピュヌタヌが故障した堎合に着陞軌道を蚈算するために䜿甚されるこずを目的ずしおいたした。

52 幎以来、Elektronika-Astro メモリ拡匵ナニットを搭茉した MK-1988 は、航法蚈算キットの䞀郚ずしお海軍艊艇に䟛絊されおいたす。

最初のパヌ゜ナルコンピュヌタ

配信ツヌルの進化、たたは Docker、deb、jar などに぀いおの考え 時代を遡ろう BK-0010。そこにはより倚くのメモリがあり、玙からコヌドを入力するずいう遞択肢がなくなったこずは明らかです (ただし、最初は他の媒䜓がなかったため、たさにそうしおいたした)。テヌプレコヌダヌ甚のオヌディオカセットが、゜フトりェアを保存および配信するための䞻な手段になりたす。





配信ツヌルの進化、たたは Docker、deb、jar などに぀いおの考えカセットに保存されおいたのは通垞、2 ぀たたは 3 ぀のバむナリ ファむルで、その他のすべおのファむルはその䞭に含たれおいたした。信頌性が非垞に䜎かったため、プログラムのコピヌを XNUMX  XNUMX ぀保持する必芁がありたした。読み蟌み時間も満足できるものではなく、愛奜家たちはこれらの欠点を克服するためにさたざたな呚波数゚ンコヌディングを詊したした。圓時、私自身はただ専門的な゜フトりェア開発BASIC での簡単なプログラムを陀くに携わっおいなかったため、残念ながら、内郚ですべおがどのように構成されおいるかを詳しく説明するこずはできたせん。コンピュヌタに RAM しか搭茉されおいないずいう事実が、デヌタ保存方匏の単玔さを倧きく決定づけたした。

信頌性が高く倧容量のストレヌゞメディアの出珟

その埌、フロッピヌ ディスクが登堎し、コピヌ プロセスが簡単になり、信頌性が向䞊したした。
しかし、HDD 圢匏の十分に倧きなロヌカル ストレヌゞが登堎した堎合にのみ、状況は劇的に倉化したす。

配信のタむプは根本的に倉わりたす。プログラムは単にメモリに読み蟌たれるのではなく、ロヌカル ストレヌゞにコピヌされおいるため、システムの構成プロセスず削陀埌のクリヌンアップを管理するむンストヌラヌ プログラムが登堎したす。必芁に応じお、䞍芁なプログラムをクリヌンアップできる必芁がありたす。

同時に、提䟛される゜フトりェアの耇雑さも増したす。
配信されるファむルの数は単䜍から数癟、数千ぞず増加し、異なるプログラムが同じデヌタを䜿甚するず、ラむブラリ バヌゞョンの競合やその他の問題が発生し始めたす。

配信ツヌルの進化、たたは Docker、deb、jar などに぀いおの考え 圓時、私には存圚ずいうものがただ明らかにされおいなかった。 Linux私はMS DOSの䞖界に䜏んでいお、その埌、 Windowsプログラミング蚀語はBorland PascalずDelphiを甚い、時折C++にも手を出しおいた。圓時、倚くの人が補品の配垃にInstallShieldを䜿甚しおいた。 ru.wikipedia.org/wiki/InstallShieldこれにより、゜フトりェアの展開ず構成のすべおのタスクが非垞にうたく解決されたした。




むンタヌネット時代

モノリスやデスクトップ アプリケヌションから分散システム、シン クラむアント、マむクロサヌビスに至るたで、゜フトりェア システムの耇雑さは埐々にさらに耇雑になっおいたす。ここで、1 ぀のプログラムだけではなく、耇数のプログラムをセットにしお、それらがすべお連携しお動䜜するように構成する必芁がありたす。

抂念は完党に倉わり、むンタヌネットが登堎し、クラりドサヌビスの時代が始たりたした。今のずころ、りェブサむトずいう圢ではただ初期段階にありたす。誰もサヌビスを本圓に倢芋おいたせん。しかし、これはアプリケヌションの開発ず実際の配信の䞡方においお業界にずっおの転換点ずなりたした。

私自身、その瞬間に開発者の䞖代亀代があったこずに気づきたしたあるいは私の呚りだけだったかもしれたせんが。叀き良きデリバリヌ方法がすべお䞀瞬で忘れ去られ、すべおが最初から始たったように感じたした。すべおのデリバリヌは、反射的なスクリプトで行われるようになり、圌らは誇らしげにそれを「継続的デリバリヌ」ず呌んでいたした。実際、叀いものは忘れ去られ、䜿われなくなり、新しいものもたったく存圚しない、混乱の時代が始たっおいたす。

圓時私が働いおいた䌚瀟 (名前は蚀いたせん) では、ant 経由でビルドするのではなく (圓時は maven は普及しおいなかったか、たったく存圚しおいたせんでした)、IDE で jar をビルドしお、それを SVN に静かにコミットしおいた時代を芚えおいたす。したがっお、展開は、SVN からファむルを取埗し、SSH 経由で目的のマシンにコピヌするこずで構成されたす。それはずおも単玔か぀粗雑なこずだ。

同時に、単玔な PHP サむトの配信は、修正されたファむルを FTP 経由でタヌゲット マシンにコピヌするだけの、非垞に原始的な方法で行われおいたした。時々、そのようなこずは起こりたせんでした。コヌドは運甚サヌバヌ䞊でラむブで線集され、どこかにバックアップがあれば特に問題ありたせんでした。


RPM および DEB パッケヌゞ

配信ツヌルの進化、たたは Docker、deb、jar などに぀いおの考え䞀方、むンタヌネットの発展に䌎い、UNIX系のシステムがたすたす人気を集めるようになり、特に私がRed Hatを知ったのはその頃だった。 Linux 6、2000幎頃。圓然ながら、そこにも゜フトりェアを配信するための手段がいく぀か存圚した。Wikipediaによるず、䞻芁なパッケヌゞマネヌゞャヌずしおのRPMは、1995幎にRed Hat版で登堎した。 Linux 2.0。それ以降、このシステムはRPMパッケヌゞずしお提䟛され、匕き続き発展を続けおいる。

家族の分垃 Debian 圌らは同様の道を蟿り、debパッケヌゞの圢匏で配信を実装した。この圢匏は今日たで倉わっおいない。

パッケヌゞ マネヌゞャヌを䜿甚するず、゜フトりェア補品自䜓を配信したり、むンストヌル時に構成したり、さたざたなパッケヌゞ間の䟝存関係を管理したり、補品を削陀したり、アンむンストヌル時に䞍芁な項目をクリヌンアップしたりできたす。それらの。ほずんどの堎合、必芁なのはそれだけであり、それが䜕十幎も実質的に倉わるこずなく存続しおきた理由です。

クラりド コンピュヌティングでは、物理メディアからのむンストヌルだけでなく、クラりド リポゞトリからのむンストヌルもパッケヌゞ マネヌゞャヌに远加されたしたが、基本的な倉化はほずんどありたせん。

珟時点では、deb から snap パッケヌゞぞ移行する詊みがいく぀かあるこずは泚目に倀したすが、これに぀いおは埌ほど詳しく説明したす。

そのため、DEB も RPM も知らなかったこの新䞖代のクラりド開発者もゆっくりず成長し、経隓を積み、補品はより耇雑になり、FTP、bash スクリプト、および同様の孊生の技巧よりも合理的な配信方法が必芁になりたした。
ここで登堎するのが、仮想化、リ゜ヌス分離、配信方法を組み合わせた Docker です。今は流行っおいお若々しいですが、すべおのこずに必芁なものでしょうかこれは䞇胜薬ですか

私の芳察では、Docker が提案されるのは、合理的な遞択ずしおではなく、単にコミュニティ内で話題になっおおり、それを提案する人だけがそれを知っおいるからずいうだけの理由である堎合が非垞に倚いです。䞀方、叀き良きパッケヌゞング システムはほずんど知られおいたせん。぀たり、存圚し、静かに、気づかれずにその圹割を果たしおいるのです。このような状況では、他に遞択肢はありたせん。遞択肢は明らかです。Docker です。

Docker をどのように実装したか、そしおその結果はどうだったかに぀いおの私の経隓を共有したいず思いたす。


自䜜のスクリプト

圓初は、必芁なマシンに jar アヌカむブを展開する bash スクリプトがありたした。このプロセスは Jenkins によっお管理されたした。 jar アヌカむブ自䜓は既にクラス、リ゜ヌス、さらには構成を含むアセンブリであるため、これは正垞に機胜したした。すべおを最倧限に投入すれば、それをスクリプトにレむアりトするこずは、最も難しいこずではありたせん。

しかし、スクリプトにはいく぀かの欠点がありたす。

  • スクリプトは通垞、急いで曞かれるため非垞に原始的であり、最も奜たしいシナリオが 1 ぀しか含たれおいたせん。これは、開発者が最速の配信に関心があり、通垞のスクリプトにはかなりの量のリ゜ヌスが必芁であるずいう事実によっお促進されたす。
  • 前述の理由により、スクリプトにはアンむンストヌル手順は含たれたせん。
  • 確立されたアップグレヌド手順がない
  • 新しい補品が登堎したら、新しいスクリプトを曞く必芁がありたす
  • 䟝存関係のサポヌトなし

もちろん、掗緎されたスクリプトを曞くこずもできたすが、䞊で曞いたように、開発には時間がかかり、しかも、ご存知のずおり、時間が足りないのです。

これらすべおにより、この展開方法の適甚範囲は、明らかに最も単玔なシステムにのみ制限されたす。これを倉えるべき時が来たした。


デッカヌ

配信ツヌルの進化、たたは Docker、deb、jar などに぀いおの考えある時点で、アむデアが湧き䞊がり、Docker を絶賛する、できたおのミドルたちが私たちのずころにやっお来るようになりたした。さお、行きたしょうやりたしょう詊みは2回ありたした。䞡者ずも倱敗に終わりたした。倧きな野心があったものの、実務経隓が䞍足しおいたためだず蚀えたす。無理やり、どんな手段を䜿っおでも終わらせる必芁があったのでしょうか可胜性は䜎いです。適切なツヌルを䜿甚するには、チヌムが必芁なレベルたで進化する必芁がありたす。たた、既補の Docker むメヌゞを䜿甚するず、ネットワヌクが正垞に動䜜しなかったり (Docker 自䜓の未熟さも原因だったず思われたす)、他の人のコンテナの拡匵が困難であったりするケヌスも頻繁に発生したした。

どのような䞍䟿がありたしたか?

  • ブリッゞモヌドでのネットワヌクの問題
  • コンテナ内のログを衚瀺するのは䞍䟿ですログがホストマシンのファむルシステムに個別に移動されおいない堎合
  • コンテナ内のElasticSearchが定期的に奇劙にフリヌズするが、理由は明らかにされおいない。コンテナは公匏である。
  • コンテナ内のシェルを䜿甚するのは䞍䟿です。すべおが非垞に限られおおり、通垞のツヌルはありたせん。
  • 収集された容噚のサむズが倧きいため、保管に費甚がかかる
  • コンテナのサむズが倧きいため、耇数のバヌゞョンをサポヌトするのは困難です。
  • 他の方法スクリプトや deb パッケヌゞよりもビルド時間が長くなりたす

䞀方、同じ deb を介しお jar アヌカむブの圢匏で Spring サヌビスをデプロむする方がなぜ悪いのでしょうか?リ゜ヌスの分離は本圓に必芁ですか?倧幅に瞮小されたコンテナにサヌビスを詰め蟌むこずで、オペレヌティング システムの䟿利なツヌルを倱う䟡倀はあるでしょうか?

実践が瀺しおいるように、珟実にはこれは必芁ありたせん。 90% のケヌスでは deb パッケヌゞで十分です。

叀き良き deb が倱敗するのはい぀ですか? たた、docker が本圓に必芁なのはい぀ですか?

私たちの堎合は、Python でサヌビスを展開しおいたした。機械孊習に必芁な倚くのラむブラリが暙準のオペレヌティング システムの配信には含たれおおらず (含たれおいたずしおも適切なバヌゞョンではなかった)、蚭定に関するハックがあり、同じホスト システム䞊で皌働するさたざたなサヌビスに異なるバヌゞョンが必芁であるこずから、この栞ずなる混合物を配信する唯䞀の合理的な方法は Docker であるずいう事実に至りたした。 Docker コンテナを組み立おる劎働集玄床は、䟝存関係を持぀個別の deb パッケヌゞにこれらすべおをパックするずいうアむデアよりも䜎いこずが刀明し、実際、正気でこれを採甚する人は誰もいなかったでしょう。

docker が䜿甚される予定の 2 番目のポむントは、ブルヌグリヌン デプロむ スキヌムを䜿甚しおサヌビスをデプロむするこずです。しかし、ここでは耇雑さを埐々に増やしおいきたいず考えおいたす。たず、deb パッケヌゞがビルドされ、次にそれらから docker コンテナがビルドされたす。


スナップパッケヌゞ

配信ツヌルの進化、たたは Docker、deb、jar などに぀いおの考え スナップパッケヌゞの話に戻りたしょう。スナップパッケヌゞは最初に公匏に登堎したのは Ubuntu 4月16日。埓来のDEBパッケヌゞやRPMパッケヌゞずは異なり、Snapパッケヌゞにはすべおの䟝存関係が含たれおいたす。これによりラむブラリの競合は回避されたすが、結果ずしおパッケヌゞのサむズが倧きくなりたす。さらに、これはシステムセキュリティにも圱響を䞎える可胜性がありたす。Snapパッケヌゞをデプロむする堎合、パッケヌゞを䜜成する開発者は、含たれるラむブラリぞのすべおの倉曎を管理する必芁がありたす。党䜓ずしお、それほど単玔なものではなく、Snapパッケヌゞを䜿甚するこずが垞に双方にずっおメリットがあるずは限りたせん。しかし、たずえばDockerを仮想化ではなく、パッケヌゞングツヌルずしおのみ䜿甚する堎合には、Snapパッケヌゞは十分に合理的な遞択肢ずなりたす。



その結果、珟圚では deb パッケヌゞず docker コンテナの䞡方を適切な組み合わせで䜿甚しおおり、堎合によっおは snap パッケヌゞに眮き換えるこずもありたす。

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

配達には䜕を䜿いたすか

  • 自䜜のスクリプト

  • FTPに手動でコピヌする

  • debパッケヌゞ

  • rpm パッケヌゞ

  • スナップパッケヌゞ

  • Dockerむメヌゞ

  • 仮想マシンむメヌゞ

  • HDD党䜓のクロヌンを䜜成する

  • 人圢

  • アンシブル

  • その他

109 人のナヌザヌが投祚したした。 32名のナヌザヌが棄暩した。

出所 habr.com

DDoS 保護機胜を備えた信頌性の高いサむト甚ホスティング、VPS VDS サヌバヌを賌入する 🔥 DDoS攻撃察策付きの信頌性の高いりェブサむトホスティング、VPS/VDSサヌバヌを賌入したしょう | ProHoster