オンライン小売業およびクラウドサービスで世界最大規模の企業であるAmazonは、自社のITインフラをどのように整備しているのだろうか。もちろん、サービス指向アーキテクチャ(SOA)の原則に基づいて行っている。しかし、このことは同社がより効率的で顧客中心の開発を行うことに役立つものの、デプロイ時には悪夢のような状態を引き起こしていた。そこでプロジェクト「Apollo」によって、自動化を進める時が来たのである。
2014年11月に投稿された記事で、Amazonの最高技術責任者(CTO)のWerner Vogels氏は、同社のSOAベースのデプロイメントエンジンであるApolloの目的とメリットについて概要を説明した。もちろん、ほかでもないAmazonは、手広く事業を行っている会社であり、多種多様な部門とプロジェクトが存在している。AmazonのITは、個別のサービスに沿って構築されており、専門チームがそれぞれ開発し、管理している。
しかし、デプロイ時には常に大変な状況になっていたと、Vogels氏は説明している。「1つしかないホストにソフトウェアをデプロイするのは簡単だ。マシンにSSHでログインし、スクリプトを走らせて、結果が得られれば、それで完了だ」(Vogels氏)。しかしAmazonの本番環境は、それよりもっと複雑である。Vogels氏によれば、それはアプリケーションとウェブサービスを「複数のデータセンターにまたがる非常に多くのホスト全体で稼働」させる必要があるためだという。これが絶えずボトルネックとなっていた部分だとVogels氏は述べている。「手作業でのデプロイメントの手順は、リリースのペースを遅らせ、人為的ミスによるバグを生じさせていた。多くのチームは、この問題を解決するために、デプロイ作業の完全な自動化に着手していが、それは当初考えられていたほど単純なことではなかった」(同)
解決策として、企業全体で共有するデプロイメントサービスを導入した。このサービスは、ソフトウェアのアップデートを複数のサーバにわたって自動的に順次処理する。「開発者が1つのホストに対してソフトウェア設定プロセスを定義すれば、Apolloがそのアップデートをすべてのホストと連携させる。これによって、開発者は自分のアプリケーションを、まずはデバッグ用の開発ホストへ、次にテスト用の中間環境へ、そして最後はアップデートを顧客にリリースするための本番環境へと、手をかけず容易にデプロイできるようになった」(同)
Apolloは現在、開発ホスト、テストホスト、本番ホストへのデプロイを年間5000万件扱っているとVogels氏は述べている(それは1秒間に1回デプロイが行われていることになるという)。このデプロイメントシステムによって、作業プロセスは非常に合理的になり、一度に一部のサーバのみをオフラインにするローリングアップデートを実施するとともに、デプロイメントの進捗状況のデータを提供している。「Amazonの数多くの開発者は毎日、JavaやPython、Rubyのアプリから、HTMLウェブサイト、ネイティブコードのサービスまで、多種多様なソフトウェアをデプロイするのにApolloを使用している」(同)
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。