Amazon Web Services(AWS)は、ソフトウェアの継続的インテグレーションと継続的デプロイメント(CD/CI)を本格的に導入しようとする企業向けのサービスを前面に押し出している。それを考えれば、同社自身のCD/CIの取り組みが世界をリードするものであることは、当然と言えるかもしれない。しかし、同社が社内で実践しているCD/CIの取り組みは1つ上の次元に達しており、その運用はほぼ完全に「ハンズオフ」となっている。
提供:Joe McKendrick
AWSの主席ソフトウェアエンジニアClare Liguori氏によれば、同社の社内では、マイクロサービスに対する修正内容のプロダクション(本番)環境へのデプロイメントが、自動的に「継続的デプロイメントのパイプラインを通じて、1日に複数回行われている」という。このパイプラインを中心とした戦略は、AWSが持っている、常にコードをデプロイし続ける能力にとって重要な役割を果たしている。Liguori氏は、最近投稿されたブログ記事で、Amazonはなぜデプロイメントまでの各フェーズを、迅速かつ自動的に処理できるのかを説明している。驚くべきことに、同社の管理者や開発者は、デプロイメントの状況を見守ったり、影響がないかを調べるためにログや数字を監視したりする作業をほとんどやっていないという。「パイプラインのデプロイメントは自動化されており、通常は、プロダクション環境へのデプロイメントを積極的に監視し、数字をチェックし、問題があれば手動でロールバックする作業を行う開発者はいない。これは、デプロイメント作業が完全にハンズオフとなっているためだ。デプロイメントシステムが積極的に警告メッセージを監視し、デプロイメントの自動ロールバックが必要かどうかを判断している」と同氏は述べている。
AWSのソフトウェアのコードは、大きく4つのフェーズを経てデプロイされる。その過程では、自動化されたメカニズムとプロセスによって、途中のすべての段階でチェックとダブルチェックが行われる。
- ソースの変更と検証:Liguori氏は、Amazonのパイプラインは「アプリケーションのコードの変更だけでなく、プロダクション環境に関係するあらゆる種類のソースの変更内容を自動的に検証し、安全にデプロイしている」と述べている。「わが社のパイプラインは、ウェブサイトの静的なアセットやツール、テスト、インフラ、設定内容、アプリケーションの基盤になっている運用システムなど、あらゆるソースの変更内容を検証してデプロイすることができる。すべての変更内容は、個別のソースコードリポジトリーでバージョン管理されている。ライブラリーやプログラミング言語、AMI IDのようなパラメーターなど、ソースコードが抱えている依存関係は、少なくとも週に一度は自動的に最新版にアップグレードされる」