Capistrano が Docker と Kubernetes に置き換えられた理由

Capistrano が Docker と Kubernetes に置き換えられた理由

David Eastman 氏は、コンテナ以前 (Chef 以前!) のソフトウェア ツールである Capistrano を振り返りながら、アンティーク ショーの技術版を主催します。

Capistrano が Docker と Kubernetes に取って代わられた理由からの翻訳。

知的財産権とデジタル権利の擁護者として有名なコーリー・ドクトロウ氏が新著の一部を読んでいるのを聞いていると、彼がカリフォルニア州カピストラーノについて言及しているのが聞こえた。しかし、もちろん、2010 年代初頭に人気があったリモート サーバー自動化ツールである Capistrano を覚えています。それは、コンテナーや Kubernetes が登場する前のことでした。

私は、時が経つにつれて人気が薄れていく、よく使われる技術に興味を持つことがあります。もちろん、カピストラノは本当に死んではいません。たとえ私が過去形で説明しているとしても。オープンソース ツールは実際には決して消滅することはありません。単に人気がなくなるだけです (そしておそらく屋根裏にしまっておかれるでしょう)。 10 年以上前に Capistrano をリモート サーバー自動化ツールとして使用していたことを覚えています。 SSH を使用してスクリプトを実行し、ターゲット サーバーに更新を展開できるようになります。更新は、新しい実行可能ファイル、コード、構成、データベースの変更である可能性があります。それは素晴らしいことですが、もはや一般的に使用されていないシステムをなぜレビューするのでしょうか?

まず、傾向を理解するには、過去の例を振り返ることが役立ちます。何かが失われたかどうかを確認しながら、何かの人気が下がった時点を記録することも役立ちます。現在のテクノロジーはタイムライン上のほんの一瞬に過ぎず、時々振り返ってみると、次に何が起こるかを予測するのははるかに簡単です。新しいサイトへの展開を処理する必要がある場合は、自分の好みのツールに加えて、さまざまなツールがあると便利です。古いスタックで Capistrano を使用する必要がある場合もあります。それでは、この骨董品を評価して、どれくらいの価値があるか見てみましょう。

環境

Capistrano は、通常、運用、ステージング、開発という 3 つの基本的な環境を理解します。開発環境はラップトップである可能性があります。ステージング環境は、QA がアクセスできる何らかのクラウド サーバーである可能性があります。これらの定義を使用して、Capistrano は特定のコンピューターを対象に実行することができます。

使命と役割

Capistrano における基本的なコマンドはタスクです。これらは展開のさまざまな段階で実行されます。ただし、これらのタスクをフィルタリングするには、ロールを使用して、システムのどの部分で作業しているかを記述できます。

 role :app, "my-app-server.com" role :web, "my-static-server.com" role :db, "my-db-server.com"

これは、アプリケーション サーバー (動的コンテンツを生成する部分)、Web ページまたは Web サーバー、およびデータベースが別々の部分であることを意味します。もちろん、独自の定義を作成することもできます。

あるいは、環境の分離に重点を置き、その下でキャラクターを操作することもできます。実稼働環境の説明については、次のように設定します。

 # config/deploy/production.rb server "11.22.333.444", user: "ubuntu", roles: %w{app db web}

デフォルトのデプロイ タスクには、デプロイの段階を表すいくつかのサブタスクがあります。

  • deploy:starting はデプロイメントを開始し、前提条件が満たされていることを確認します。
  • deploy:updating サーバーを新しいバージョンに更新します
  • deploy:publishing 新しいバージョンをリリースする
  • deploy:finishing デプロイを完了し、クリーンアップを開始します
  • deploy:upload は、現在デプロイされているバージョンにファイルをコピーします。これは段階的にファイルを更新する場合に便利です
  • deploy:rollback すべてをロールバックする

これはカスタム展開タスクの例です。この Ruby のようなコードは、ロールを使用してタスクとデプロ​​イメントのフェーズをフィルター処理します。この場合、終了する前に style.css ファイルを更新できます。

 namespace :deploy do after :finishing, :upload do on roles(:web) do path = "web/assets" upload! "themes/assets/style.css", "#{path}" end on roles(:db) do # Migrate database end end end

Capistrano をインストールした後、次のコマンドを使用してコマンドラインからこのアクションをトリガーできます。

デフォルトのデプロイメント プロセスと対応するロールバック プロセス。より詳細な例を以下に示します。

 deploy deploy:starting [before] deploy:ensure_stage deploy:set_shared_assets deploy:check deploy:started deploy:updating git:create_release deploy:symlink:shared deploy:updated [before] deploy:bundle [after] deploy:migrate deploy:compile_assets deploy:normalize_assets deploy:publishing deploy:symlink:release deploy:published deploy:finishing deploy:cleanup deploy:finished deploy:log_revision

「starting」、「publishing」などのアクションに対応するフック(「started」、「updated」、「published」、「finished」)が表示されます。これらは、上で説明したように、before 句と after 句を使用してカスタム タスクをプロセスにフックするために使用されます。

公開後、最新バージョンを指す「現在の」シンボリックリンクが作成または更新されることに注意してください。いずれかのステップでデプロイメントが失敗した場合、現在のシンボリック リンクは引き続き古いバージョンを指します。

それで何が起こったのですか?

「これを実行してから、あれを実行する」というモデルは、必ずしも展開後のシステムがどのようになるかを適切に予測できるわけではありません。 Chef のようなツールは、モデルから始めて「この設定を true にする」と指示するため、無秩序に広がるシステムに対処するのに適しています。 Chef は収束とべき等性に基づいて動作します。不足している部分が追加されますが、その後同じ手順を再度適用しても何も変わりません。したがって、同じ操作を複数回実行しても、状態に副作用は発生しません。

Capistrano の柔軟性により、経験の浅い開発者でも、機能するが不安定なデプロイメントを構築できるようになります。

対照的に、単一の Docker イメージを使用すると、OS、パッケージ、ライブラリ、コードを体系的に制御できます。また、ラップトップやクラウド サーバーを、コンテナーをマウントする場所として同様に扱うことも可能になります。

最後に、Kubernetes は速度低下やタイムアウトを心配することなくクラスターを処理します。完全に透明なインフラストラクチャと、必要なサービスと正確な構成のあらゆる側面を実行できる機能により、DevOps チームの作業が大幅に容易になります。すでに実行中のサービスを変更する代わりに、新しいコンテナを作成し、古いコンテナを終了することができます。

現代的な観点から見た Capistrano のもう 1 つの問題は、Ruby で構築されていることです。 Ruby 言語は Ruby on Rails の人気と不当に関連付けられています。 Node.js と JavaScript の台頭により減少しました。一般的に、他の言語や言語のトレンドが人気を上回っています。たとえば、Python はスクリプト言語として選ばれるようになりました。示されているタスクは、実際には Ruby Rake ビルド ツールである DSL を使用します。

何か紛失したものはありますか?可能。迅速な変更を行うための一連のカスタム タスクがあると、ハッカーのアプローチが促進されますが、小規模でアドホックなイベント ベースの変更も可能になります。 「サーバーを常にこのように保ちたい」ではなく、「この変更を実現する」です。

もっと良い言い方をすれば、Capistrano のようなツールは、より広い視点が必要になる前の通過点として、あらゆるチームのデプロイメントの過程に現れると言えるでしょう。しかし、たとえほこりをかぶった遺物であっても、Capistrano は Web アプリケーションの展開とメンテナンスを自動化するための優れたモジュール式ツールです。

カリフォルニア州カピストラノについてはどうですか?残念ですがそれは悪い知らせです。

写真

驚き

記事を読み終えると、カピストラノがすぐそばにいることに気づいた。 Vagrant はこれを使用しました:

写真


<<:  1 つの記事で K8s コントローラー ランタイムを理解する

>>:  クラウドのエンドポイントセキュリティについて知っておくべきこと

推薦する

図解分散システム - 上級プログラマーへの道

[[384439]] 65 兄さんは 2 年間働き、単純で反復的なプログラミング作業を行い、CRUD...

ウェブサイト分析ハック集: JavaScript ドキュメント オブジェクト モデル

この記事は、Web 分析の第一人者である Eric T. Peterson 氏の著書「Web Sit...

ハイブリッドクラウドは「発酵」を続け、大きなトレンドとなっている

[[439567]]企業がクラウドに移行するには、パブリック クラウド、プライベート クラウド、ハイ...

マイクロソフトは、中国本土を除き来年SkypeがMSNに取って代わることを確認した。

テンセントテクノロジーニュース(同運)北京時間11月7日、マイクロソフトは火曜日、Windows L...

グーグルは中国国内で新たな競争相手が出現し、引き続き苦戦を強いられている

海外のビジネス分析会社comScoreのデータによると、最近のデータはGoogleが検索エンジン分野...

SEOの究極の進化には、マーケティングレベルから問題を見ることが必要です

私は、SEO のレベルは 3 つのレベルに分けられると常に信じています。最初のレベルは SEO を学...

Baidu によって外部リンクが認識されている Web サイトはいくつありますか?

Baiduの4.25ウェブマスタープラットフォームがLeeの外部リンク判定を発表して以来、SEO業界...

クラウド大手の AWS、Alibaba Cloud、Google Cloud などは、独自のクラウドを開発することを好みます。なぜ?

今日、接続とデータマイニングの嵐であるクラウドコンピューティングは、当初嵐が吹き荒れていたインターネ...

WootHosting - $15/年/KVM VPS/512MB メモリ/25GB ハードドライブ/ロサンゼルス データセンター

WootHosting は 2007 年に設立されたホスティング会社だと言われており、2010 年に...

SEO の重要性を上司に伝える方法

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています検索エンジ...

インターネットウェブサイトマーケティングのいくつかの側面についての簡単な説明

ウェブマスターにとって、ウェブサイトを構築する目的は非常に直接的です。つまり、利益を上げることです。...

Java で独自の Redis 分散ロックをゼロから実装する

[[347022]] Redis 分散ロック分散ロックはなぜ必要なのでしょうか? JDK はロックす...

インターネットがリソースをめぐる激しい競争の段階に入ると、一般ユーザーは苦しむことになる。

世界の一般的な傾向として、長い分裂の期間の後には統一が起こり、長い統一の期間の後には分裂が起こります...

10年経っても、なぜZhihuはまだ利益を上げるのが難しいのでしょうか?

知乎はFラウンドに到達した今、商業化は避けられないが、コンテンツの質を担保しながらいかに収益を上げる...

格安 VPS レンタル: 10 年の経験、海外の格安 VPS レンタル業者のグループを推奨、Alipay での支払いも可能です!

格安 VPS レンタル: ウェブマスターの海外 VPS 使用経験約 10 年に基づき、格安 VPS ...