deploy

概要

デプロイは、開発したアプリケーションをサーバに展開して利用できるようにすること。現代的な開発においてはデプロイを頻繁にして次々とリリースしていくため、デプロイのコストが低いことは重視される。

Memo

実際のチーム開発に必要な周辺ツール

単にデプロイが実行できるだけではチーム開発では不便である。

  • 検証環境用デプロイ ブランチとマシン環境を指定できる。
  • 本番環境用デプロイ 事故防止のため、デフォルトブランチだけをproductionマシンにデプロイできる。
  • デプロイのトリガー通知 誰がどのブランチを、どのマシン環境に向けてデプロイしたのか。誰かと同時に実行してないか。
  • デプロイの成功/失敗通知 デプロイが成功したか。失敗した場合はジョブへのリンクを表示する。

コンテナデプロイとGitデプロイの違い

EC2インスタンスやオンプレミスでサーバを動かす旧来の方法は、本質的にgit pullによって変更コードを取り込み、ビルドしてリリースする。git管理しているコードしか反映できず、言語環境や環境変数、秘密情報はサーバを操作する必要がある。そのため変更を追うのが難しく、それぞれの環境が異なるので再現性に欠ける。

コンテナデプロイでは、コードに加えて言語環境やライブラリも含めてコンテナに封入する。コンテナホストサービスによって秘密情報の登録もサポートされている。再現性が高く、宣言的に記述するためメンテナンスしやすい。

ブルーグリーン・デプロイ

古い環境はブルー、新しい環境はグリーン。古いデプロイと新しいデプロイが同時に混在する環境を構築した後、ロードバランサー等によってトラフィックを切り替え、ダウンタイムなしで環境を切り替えること。ユーザ側からみるとどちらかの状態しかなく、整合性が保たれている。

ローリングアップデート

稼働中のシステムを完全には停止させずに、徐々に新しいものに入れ替えていく方式。更新中は新旧のバージョンが混在するので整合性を維持しなければならない。

カナリアリリース

新機能を一部ユーザーのみが利用できるようにリリースして、新機能に問題がないことを確認しながら、段階的に全体に展開していくデプロイ手法のこと。

Tasks

Reference

Archives