[和訳]事例:USDAのプラットフォームをDockerで構築する #docker
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Building USDA’s Platform of the Future with Docker (2016/4/20) の和訳です。
米国農務省(USDA)は連邦政府の農林と食料事情の発展に携わる役目を持ち、1390億ドル以上の予算を持っています。
その目指すところは農場経営の発展、米国内の農業交易に対する認識向上、食の安全の確保、天然資源の保護、地方機関の育成および米国内外での飢餓撲滅にあります。
今日ではUSDAは40以上のウェブサイトを管理しており、一か月に1億以上のアクセスを生み出しています。
また、2014年には安全で何度でも利用できる共用インフラストラクチャーをつくるウェブマネジメントプラットフォームの開発に乗り出しました。
最初期の(そしていまやレガシーである)ウェブプラットフォームは手動で管理する7つのモノリシックアプリケーションサーバーによって構成されているのですが、このサーバーは伝統的な
労働集約型のテクニックを使ってテクノロジーを実行します。
レガシーの環境ではシステム管理者が個々のシステムにSSHでログインし、アップデートとシステム構成をひとつずつ実行していました。
最初のアプローチではPHP、Ruby、そしてJavaとともに開発された多様なアプリケーション(Drupal、Jekyll、Jiraなど)を十分サポートできるほどの柔軟性もスケーラビリティもありませんでした。
USDAの求める共有プラットフォームを実現させるには別のアプローチが必要となったのでした。。
USDAはDockerと共にある
2015年7月、私はチームメイトと共にレガシープラットフォームのIndependent Verification and Validation (IV&V)のプロジェクトにつくことになりました。
将来へのもっともよい道に至るアーキテクチャを解析したところ、レガシープラットフォームの代わりにDockerとSaltを使用した最新のマイクロサービスアーキテクチャーを使うことだとわかりました。
これを実行するには、成功という概念実証が必要であり、そのために4つのウェブサイトのグループのデプロイが選ばれました。
大きな問題は、どこから始めればいいのかということです。
私は過去にDockerとVagrantベースのローカル開発スタックを置き換える仕事をしていました。その時はこれが新しいプラットフォーム作成に必要なツールを提供していると考えていました。
U.S. Digital Services Playbookの推奨で、私たちのチームはDockerがサポートされたプラットフォームでプロジェクトの開発を始め、DockerエンジンとDocker Toolbox(当初はBoot2Dockerでした)で最初の実装をしました。
後にDocker Swarmをデプロイする予定のため、Docker ネットワーク機能を追加しました。
多くのUSDAウェブサイトがDrupal CMSを活用しています。私たちがプラットフォームの開発で注目したのは、複数のDrupalウェブサイトを柔軟にシステムに追加する処理のサポートでした。
長期的なスケーラビリティと、基本ポート(80/443)から個々のDockerコンテナへの通信伝達をサポートするために、Varnishが追加されました。
サイト運営に必要なApacheと様々なPHPライブラリーを提供する個々のDockerコンテナを実行しました。
我々のチームは、Dockerの熱烈なファンからのおすすめである"thin container"(薄いコンテナ)に従って、メール配信などのいくつかの機能を改変しました。
具体的には、昔ながらのsendmailをインストールする代わりに、メール送信にmsmtpスクリプトメールを使うようにしました。不必要なメールサーバーを削除することで安全性を高めつつ、システムのオーバーヘッドを減らしました。
利点
プロジェクトの進行がはかどり全開発プロセスを最新式にすることができるだけでなく、コストを大幅に削減することで商業的利益を生むこともすでに確認済みです。
この5週間にわたる積極的な開発によって、2015年9月にはプラットフォーム上で4つのウェブサイトを開設できました。その後もUSDAはハードウェアのコストを全く上げることなくさらに
4つのウェブサイトを開設しましたが、これらのサイトのうちNew Farmersは米国農務省長官Tom Vilsackにより 、USDA People's Gardenは大統領夫人Michelle Obamaの主導によってつくられたのです。
Dockerを使うことで、テクノロジーインフラストラクチャー内の単独でも150,000ドルを越える節約ができます。さらに、共有インフラストラクチャーモデルの活用は人件費を削減します。
Docker Hub によってCIO Playbook guidelineを遵守しつつ開発者デプロイのワークフローを向上させることができます。
Docker を使うことで私たちが得る利点とは戦略的な機敏さであり、警備の厳重なの連邦政府データセンター環境で開発、テスト、保護、最新ソフトウェアのデプロイを行えるようにします。
わたしたちのチームは初期の環境構築で締め切りに間に合わせるためMVP(最低限の機能を持つ製品)の手法を使いました。次はインフラのDevSecOpsに移行しています。これはセキュリティを拡張するためにウェブサイト間を分離するためであり、これにはDockerネットワークを使います。わたしたちの開発システムはDockerネットワークに移行しています。そのため、SolrCloudのような仮想マシン間の通信をシームレスに行えるプラットフォーム・サービスへの移行も可能になります。
また、わたしたちのチームはDocker Cloud も評価しており、アップデート時の自動コンテナデプロイをシステムに統合することを望んでいます。
このようにDockerは私たちのインフラストラクチャーの主要部分なので、私たちは契約サポート合意点まで到達するかを評価するため、Dockerと私たち内部の利害関係者が共に働き続けているのです。
今回のケーススタディは私(Ron Williams)自身の見解であるにすぎず、必ずしも私の雇用主や米国農務省(USDA)の見解を表しているわけではありません。
Dockerに関してさらに学ぶには
・Docker初心者は、10分のオンラインチュートリアルをご覧ください。
・画像、自動構築などを無料のDocker Hubアカウントでシェアしてみましょう。
・Docker 1.10リリースノートを読んでみましょう。
・Docker Weeklyを購読してみましょう。
・次に予定されているDockerオンラインMeetupに登録してみましょう。
・次に予定されているDocker Meetupに参加してみましょう。
・DockerCon 2016に登録してみましょう。
・DockerCon EU 2015のビデオを見てみましょう。
・Dockerコミュニティへの貢献を始めましょう。