Daniel Schauenberg氏は先日のQCon Londonで、DevOpsや継続的インテグレーションを実践していることで有名なEtsyが、いかにして1日に50回ものデプロイをしているのかについて語った。リスクを最小限に抑えながらこのペースの変更を実現するためには、完全に自動化されたデプロイメントパイプライン、徹底的なアプリケーションのモニタリング、IRCベースの共同作業、これらすべてが重要なのだ。
Etsyの開発への取り組みは、いくつもの小さくて途切れることのない変更を中心に回っている。直接影響するのは、一日に何度もデプロイする必要性だ。Daniel Schauenberg氏の言葉を借りれば、Etsyの開発者はいつどんなときでも「今すぐこの変更をデプロイするゆとりが自分にはあるか?」という質問の答えを知っていなければいけない。常にゆとりを持てるように、Etsyはさまざまなツールやプラクティスを導入した。たとえば、IRCベースのコミュニケーションは必須、開発者用仮想マシン、継続的インテグレーション、ワンクリックデプロイ、アプリケーションとシステムの徹底的なモニタリング、非難禁止のポストモーテム、それから開発チームと運用チームの双方がお互いにいつでも呼べば来るというオンコール方針をとった。
開発者は一人ひとり、Chefで構成されたKVM (Kernel-based Virtual Machine)を自分専用に持つ。本番環境で使用されるものと同じクックブックが、開発者用の仮想マシンにも使用される。ということはつまり、各開発者が自分専用のEtsyをフルスタックで持つということだ。プロセス全体を自動化できるWebアプリケーションであるVirtual Madnessを使うことで、誰でも仮想マシンをプロビジョニングすることが可能だ。
継続的インテグレーションの面で、Daniel氏はTryがいかに彼らのプロセスの中心になっているかを説明した。Tryは、Etsyで使われているCIツールであるJenkinsの上で、開発者がtrunkにコミットすることなしに自分の変更をテストできるようにするためのツールだ。開発者が素早くかつ確実に自分の変更をテストしているその間でも、Tryはtrunkをキレイに保ち、それゆえデプロイを可能にしてくれる。CIクラスタは、150人のエンジニアと、さらに1日あたり1万4千回以上のテストスイートの実行を十分に支えられるほどに強力なものでなければならない。LinuxコンテナであるLXCはワークロードを並列化する。また、コンテナ同士の衝突を回避するために必要な隔離機能も用意されている。
デプロイメントパイプラインは本番に行く前に、Princessという環境、すなわちステージング環境を通る。Princessは事実上の本番環境ではあるが、ここにはEtsyの社員だけがアクセスすることができる。DeployinatorはEtsyで作られ使われているデプロイメントツールで、ワンクリックデプロイを提供するものだ。
設定フラグはフィーチャーフラグとしても知られているが、これはデプロイメントプロセスを構成する上でなくてはならないものだ。Feature APIを使うことでEtsyではA/Bテストが可能となり、1つまたはある一定の異なるフィーチャーの有効無効を完璧に指定できるのだ。
モニタリングは、Etsyのチームが継続的デリバリーをおこなうための信頼を構築するためのカギだ。開発者は自分たちのフィーチャーをモニタリングし、全員がダッシュボード上のすべてのグラフにアクセスすることができる。Etsyの方針は、デフォルトでは、グラフ化可能なものはすべてグラフに、だ。時間とともにメトリクスの数がどんどん増加してきたので、Etsyは異常パターンの検出を容易にするためにKaleを作った。すべてのログは、ログのS/N比を向上させるWebベースのリアルタイムログ表示ツール、Supergrepで見ることができる。
IRCはEtsyのいたるところで使われているメインとなるコミュニケーションツールで、Etsyの共同作業文化のカギとなるものだ。いくつものさまざまなチャットルームがあり、それぞれに特定の目的がある。たとえば、#warroomというのがあるが、そこでは機能停止に関連する会話だけが許されている。その部屋は、原因究明の調査を調整したり、対応手段や解決手段の監視について議論したりということに使われるのだ。#warroomは他のチャットルームと同様、新参のエンジニアがROMることが奨励される場所のひとつであり、学ぶにはちょうど良い場所だと考えられている。
機能停止や機能停止寸前になったあとは毎回、全員がポストモーテムに招かれる。ポストモーテムは非常に重要な文化的イベントで、財務部門の人やサポート部門の人でさえも望めば参加が可能だ。ポストモーテムは学習する機会としてあるのであって、だからこそ誰も非難されることはない。ポストモーテムに関するすべての情報はMorgueに記録されている。たとえば、日付、深刻度、IRCのログ、グラフ、改善アクションなどだ。MorgueもまたEtsyが作ったツールで、ポストモーテムの記録保存という具体的な目的のために作られた。
運用、開発、決済、サポートの部門にはオンコール方針がある。開発者は通常4週間毎に1週間の頻度で、原則交代制のオンコール状態におかれる。この方針の狙いは、Webサイトに迫る日々の問題を皆に意識し続けさせることだ。それによって、新しいフィーチャーを開発するときや既存のプロセスを改善するときに、それらの問題が考慮されるようになるのだ。
Etsyの訪問者数は毎月6千万、月あたりのページビューは15億だ。