[和訳] Habitat — アプリ自動化のための新しいオープンソースプロジェクト #habitat #getchef
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Habitat -- a new open source project for automating applications (2016/06/14) の和訳です。
本日、我々はアプリケーション自動化のための Habitat という新しいオープンソースプロジェクトを立ち上げました。ぜひ Habitat を試してみて、次の段階に進んだ自動化を体験してください。本稿は Adam Jacob が Habitat の哲学と新たなテクノロジが何をもたらすかを詳しく述べたものです。自動化はアプリとともに動き出します。
Adam の Habitat の発表とデモは こちら でご覧になれます。
なぜ Habitat?
Habitat はアプリをどのようにビルド・デプロイ・管理するかという問題を解決するために存在します。Marc Andreessen は 2011 年に述べた通り、「ソフトウェアが世界を食い尽くしている」のです。あらゆる部署で、あらゆる産業で、小さなスタートアップから大企業まで、企業をどのように組み立てて運営しているか、顧客とどのようにやりとりしているのか、その中心にソフトウェアがあるのです。この転換によって、すべてが迅速で、効果的で、ソフトウェア駆動の組織となることを強いられているのです。さもなければ、そうなっている競争相手に敗北するでしょう。
この挑戦は技術的なだけではありません。組織的なことでもあり、文化的なことでもあるのです。すべてを可能にするシステムの変更を伴い、一丸となって取り組んでいる方法を変えなければなりません。可能とする文化を作ることの助けとなる解決策を構築する必要があります。
これまで為してきたことは何ですか?
産業において、企業の全体像や、Facebook、Google、Netflix、Twitter などといった巨大なウェブ企業の全体像からこの問題点の解決策を模索してきました。
企業から始めると、とても狭い範囲に注目した解決策を構築しがちです。ソフトウェアは コンウェイの法則 (訳注:「システムを設計する組織は、その構造をそっくりまねた構造の設計を生み出してしまう」) の実例となってしまいます。ほとんどの企業に存在するサイロ担当が、特定の一つか二つのサイロのためのソフトウェアを設計させてしまうのです: セキュリティソフトウェアを作ったり、アプリデプロイソフトウェアを作ったり、構成管理ソフトウェアを作ったりします。サイロの間を遮る解決策を設計してしまうという罠から抜け出すための努力をするなら、他の問題に陥るはめになります: すべてのサイロに存在するソフトウェアのツールチェーンへの統合を強いられます。この結果、大変複雑で、理解や運用がとても困難なシステムになりがちです。悪いことに、これが統合における最も悪い点なのです。技術とサイロの異なる時代にまたがった複雑な基盤から逃げ出すのは困難です。
何かを考えるときに巨大なウェブ企業に目を向けると、物事はよりよく見えてきます。それぞれの企業は異なっていながら、効果的で、安全で、急速にソフトウェアをデリバリする能力をすべてで共有しています。彼らは競合する他の企業に比べて、より簡単で、より標準化されたインフラレイヤを構築したことでその偉業を達成しています。加えて、構築するアプリをサポートするランタイムを構築することで、ソフトウェア開発チームが新しいソフトウェアを書きやすくし、運用を合理化しています。問題の解決のためには、少なくとも方向性に関しては、ここで見たことは直感的に正しく思えます。
しかし、一般的な解決方法として方向性を難しくする 2つの事実が浮き彫りとなってきます。1つは、これらの企業のすべては 1つの基本的な真実を共有しているということです。すなわち、アプリの運命を初日からコントロールしていました。他の企業と異なり、巨大なウェブ企業はソフトウェアをゼロから書いてきました。この事実は自然と 2つ目の真実を導きます。すなわち、彼らが構築したプラットフォームがビジネスそのものだということです。もしこの道をたどろうとするなら、特定のランタイムプラットフォームを対象する世界中のソフトウェアの大部分を書き直さなければいけないでしょう。今日、そのようなものは存在しないし、巨大なウェブ企業において類似したものはありません。なぜならそれぞれのプラットフォームが異なっているからです。
アプリの全体像を理解する
Habitat はこの問いに答えることから始まりました: 我々のゴールがアプリを迅速かつ安全にビルド・デプロイ・管理することなら、この問題におけるアプリの全体像を理解したら何が起こるだろうか? 企業視点から始めるのではなく、巨大なウェブ企業のプラットフォーム中心の視点からだと、単純に注目する何かがあるなら、簡単にビルドし、簡単に管理し、簡単にデプロイする手段は何だろうか?
我々が見つけたこの答えを「アプリ自動化」と呼ぶことにしました。この偉大な発見は、プラットフォームから提供されたものではなく、自動化はアプリとともに進むという単純な話です。アプリが必要としているすべて----構築時の依存関係、実行時の依存関係、設定、動的なトポロジ、デプロイ戦略、機密情報の管理、セキュリティ監査、などなど----は、アプリに属しているのです。なぜなら、それらはアプリのために行うからです。ランタイムとインフラレイヤはアプリをサポートするために存在しますが、アプリの効率的なビルド・デプロイ・管理はそれらのレイヤから切り離されます。
既存のクラウドネイティブなソフトウェア: 単一の管理レイヤ
この結果、我々はアプリを理解し、アプリ自動化レイヤをラップし、生成したパッケージをインフラや適切なランタイムにデプロイできるようになります。あなたのアプリが、SAN 設定、ネットワークトポロジ、GPU などの物理インフラに強烈に依存しているなら、そちらにデプロイし、PaaS 上やコンテナにデプロイするソフトウェアを管理するのと同じ方法でそれを管理することができます。
パッケージングとスーパーバイザ
Habitat は 2つのメインコンポーネントによってこれを達成しています。ロバスト・安全・単純・セキュアなソフトウェアパッケージングシステムと、パッケージに記述されたサービスのライフサイクルを管理するスーパーバイザです。パッケージングレイヤは、ソフトウェアと設定オプションのすべての両方を含んだ、イミュータブルでアトミックなパッケージを作成します。
スーパーバイザコンポーネントは、実行時の魔法が起きる箇所です。各スーパーバイザは他多数とともに「リング」という、サービスグループに一緒に組み入れられて管理されるサービスに参加します。そしてスーパーバイザはアプリが正しい設定・正しい機密情報・正しいトポロジ・動的なソフトウェアアップデートとの連携でいられるように取り扱います。
本番の崖を回避する
このアーキテクチャは「本番の崖」問題を回避します。すなわち、本番に近づけば近づくほど、より難しくなるという問題です。本番に近づいていくとさまざまなインフラと管理ソフトウェアのデプロイを強制されるのではなく、運用チームは正しいトポロジの宣言・戦略の更新・設定といった多くのオプションをスーパーバイザに渡すだけです。アプリのデプロイは自動化のデプロイ、それだけということです。
Habitat をやってみよう!
我々は Habitat に自信を持っています。既にあるソフトウェアをよりよくできると思います。ランタイムやインフラプラットフォームをよりよく移動できるとも思っています。Habitat はアプリのビルド・デプロイ・管理をどのようにするかという複雑さを簡単にし、未来を届けるために協力が必要なチームに力を与え、ユーザによりよい体験を与えるための仕事のスピードを加速するテクノロジです。
百聞は一見にしかず、Habitat を試してみてください。ブラウザ上ですぐに試せます。そして チュートリアル と ドキュメント を読んでください。Habitat はオープンソースなので、お望みならば GitHub からソースを取得できます。