Chefが開発する新しいアプリケーション自動化プラットフォーム、Habitatのワークショップが開催
インフラストラクチャーの自動化ツールであるChefを開発するChefが、アプリケーションの実装の自動化を目指した新しいプラットフォーム「Habitat」のワークショップを2017年4月26日に開催した。これはDevOpsのプラクティスやマネージドサービス、HashiCorpのソリューションなどを提供する「新世代のシステムインテグレーター」と呼ばれるクリエーションライン株式会社の協力を得て行われたものだ。
内容は、ChefのIan Henry(Habitat Technical Community Advocate)によるレクチャーとハンズオン、さらにCTOのAdam Jacob氏によるデモで構成されており、チュートリアルに従って実際にHabitatを使ってアプリケーションを構築し、実装するまでを体験することで、Habitatの特徴を理解するのが目的だ。
Chefが開発する最新のオープンソースソフトウェアであるHabitatについては、DevOpsDays Tokyo 2017でも同社のエバンジェリスト、Michael Ducy氏がプレゼンテーションを行っているがここでもう一度、確認をしよう。
DevOpsに特化したイベント、DevOpsDays Tokyo 2017が開催
ChefのWebサイトによれば、Habitatは「アプリケーション自動化」のためのプラットフォームである。コンセプトはPaaSとは異なり、マスター&スレーブの関係を持たないシンプルな分散システムの上でアプリケーションを実行するためのメカニズムを提供することだ。そして実行されるアプリケーションが必要とするライブラリーやミドルウェア、ストレージなどをひとつのパッケージとして構成する仕組みを提供する。HabitatがコンテナやPaaSと異なる点は、実行される基盤がサーバー上に配置されたSupervisorという非常にフットプリントの小さいエージェントを使って、ピアツーピアで分散されたサーバー上で実行されることだ。Supervisorは複数のサーバーに配置され、ブリーアルゴリズム(Bully Algorithm、別名ガキ大将アルゴリズム。常に大きなID番号を持つプロセスが投票に勝つことから命名された)と呼ばれるシンプルなリーダー決定システムを使って分散処理されるという。ブリーアルゴリズムは複数のサーバーを協調させるための投票アルゴリズムのひとつで、CassandraやZookeeperなどの分散処理のためのソフトウェアでも採用されており、PaxosやRaftなどよりもシンプルに実装が可能であるということだ。そして、そのメッセージ交換の部分にはGossipプロトコルを使っているのが、Habitatのアーキテクチャー上の特徴であるとJacob氏は説明した。
アプリケーションが必要とする構成情報などは、マスターを持たないために全てのSupervisorに伝達され、共有されることで冗長化を実現しているという。つまりサーバーがダウンした時や別のサーバーを追加した時なども、マニュアルでアプリケーションを管理する必要はなく、スケーラビリティに優れているということもポイントだろう。パッケージされるアプリケーションが使うライブラリーなどは、バージョン番号なども全て構成ファイルに記述されること、パッケージ自体に公開鍵、秘密鍵を使って暗号化がなされることなど、セキュリティなどにも十分に配慮した実装になっていることが見て取れる。
ワークショップは、「固くならずにリラックスした雰囲気で」というChef社のやり方に則り、ビールとカツサンドが出されて始まった。
最初にHenry氏が簡単なプレゼンテーションを行い、どうしてHabitatが必要になったのかをレクチャー。今回のハンズオンは、MongoDB上にあるアメリカの国立公園の情報をGoogle Map上にマップするWebアプリケーションを実装するというものだ。プレゼンテーションの後、参加者は指示された内容に従って自身のノートパソコンを使ってHabitatのDepotと呼ばれるパブリックに公開されているリポジトリにアクセスして、デモ用のアプリケーションやMongoDBのパッケージをデモ用のサーバーにインストール。さらに数ステップのコマンドを実行して、デモアプリケーションが実際に稼働することをブラウザから確認するという流れだ。
コマンドを数回実行するだけで実際のWebアプリケーションが立ち上がって動き出すようすは、あまりに簡単過ぎて実感がわかないというのが筆者の印象だが、参加者の中にはHabitatのコマンドを叩いて状況を確認しながら理解を深めていた人もいたのが印象的だった。
CTOのAdam Jacob氏も複数のSupervisorが接続されているところをコマンドで確認した上で、環境の変更が複数のSupervisorに伝搬していくデモを実施。この辺りのアーキテクチャーが上手くシンプルにできているという感想に対して「でも裏側は複雑なことをやっているんだ。今の自動車がユーザーにとってはとてもシンプルに見えていて運転するのも簡単なように」とビール片手に語ってくれた。
その後は参加者からのQ&Aということで、CTOのJacob氏も参加して質疑応答を行った。
ここではいくつかの質疑応答を挙げておこう。
Q:Supervisorはどのくらいの大きさ?
A:まだ開発途中でデバッグのためのライブラリーを組み込んでいるので、最終的にどのくらいに最適化できるのかはわからないが、100MBかもう少し大きい程度だろう。
Q:実際にHabitatを使ってどのくらいのクラスターを構成できるのか?
A:理論的には無限大までスケールできるはず。実際にプロダクションシステムとして使っているユースケースがあるが、構成に関してはもう少し経ったら公開できると思う。
Q:Habitatと言う名前はどこから?
A:Habitatはその名前の通り、生息地、生物が生きていく環境を表している。アプリケーションを生き物に見立てれば、どんな環境でも生物はそれに応じて生きていく、そしてその環境は大きくなったり他の環境と接続したりすることで変化していく、そういうことをこの名前に託して付けた。もう一つは簡単な単語であることと、コマンドを打つ時に短いことが重要だった。Habitatであれば「hab start」のような短いコマンドになる。エンジニアにとって、それは大事だ。
Chefの考える次世代のITとはインフラストラクチャーの自動化にとどまらずに、いかにアプリケーションをインフラストラクチャーやライブラリーなどに依存せずに実行できるか? というところに移ってきているということが理解できたワークショップであった。仮想マシンからコンテナさらにパブリッククラウド、より性能を求めるベアメタルと、アプリケーションという生き物は常に最適の生息地を求めて彷徨っているのだとすると、その状況に合わせて一番シンプルに実行できるスケーラブルなプラットフォームとして作り上げたのがHabitatだ。Habitatのこのコンセプトを理解して賛同してくれるデベロッパーを、コミュニティの中でいかに拡大するか? それがHabitatの成功の鍵であろう。近々、日本法人の立ち上げも噂されるChefの今後に注目したい。