Herokuを支える技術(仮)
Herokuのようなコンテナ型アーキテクチャによるプラットフォームクラウドが少しずつ市民権 を得てきたことから、Herokuやそれに似たアーキテクチャによるアプリケーション実行環境の 仕組みについて興味をもつ人も増えてきたようだ。
やはり『Herokuを支える技術』を執筆すべきだな。
— Ayumu AIZAWA (@ayumin) March 31, 2015
さすがに製品のネタばらしみたいなことはできないけれど、そういったプラットフォームを構 成する技術要素についてきちんと整理して情報提供するような書籍かそれに準ずるコンテンツ があれば、Herokuに対する理解を深めてもらうことができるんじゃないかとおもう。
というわけで書きたいなと思っているコンテンツを思いつくままに列挙してみた。
執筆方針
Herokuそのものの内部構造を詳細に紹介するのは難しいので、コンテナ型のアーキテクチャ 全般の設計・実装・運用上の考慮点と、Herokuがそれをどういうアプローチで解決している のか、そしてもし可能であればHerokuとは異なるアプローチについても紹介していきたい。
以下は全体的な構成とそれぞれの章で書きたいなと思っている内容。確実に自分ひとりの知識 で全部書くのは現実的ではないし、せっかくなのでそれぞれの分野に詳しい人たちにヒアリン グしたり(請けてくれれば)一部のセクションを書いてもらったりしたいなーとおもっている。
とはいえコレはまだ構想段階なので、最終的にどういうふうになるかはわからない。 これから調べなければならないこともかなり多いので、情報源になるようなサイトや書籍を 紹介していただけると嬉しいです。
目次(案)
- はじめに
- 第1章 (Herokuプラットフォーム)コンテナ型アーキテクチャとは何か
- 第2章 (Herokuコンポーネント)コンテナ型アーキテクチャの構成要素
- 第3章 (Cedarスタック)仮想サーバーとオペレーティングシステム
- 仮想サーバーの構成と配備
- サーバ構成の自動化
- chef
- puppet
- ansible
- サーバ構成の自動化
- 仮想サーバーの拡張
- オペレーテイングシステムの設定と設定変更
- 構成の永続化と管理
- 仮想サーバーの構成と配備
- 第4章 (Dyno)コンテナ
- 第5章 (Dyno Manager)コンテナ管理
- イミュータブルな実行環境
- コンテナのライフサイクル
- コンテナの生成プロセス
- アプリケーションのビルド
- HerokuのSlug Compilerのメカニズム
- バージョン管理システムとの連携
- Gitによるデプロイ(Herokuの場合)
- ビルドプロセスの記述
- Buildpack
- Dockerfile
- コンテナイメージ(Slug)のアーカイブ
- コンテナ生成とプロセスの軌道
- コンテナの配備
- アプリケーションのビルド
- コンテナの実行プロセス
- 実行環境の設定と設定変更
- コンテナの拡張とスケーリング
- コンテナの終了プロセス
- コンテナの停止
- コンテナの破棄
- 第6章 (Heroku Router)ネットワーク経路制御
- 第7章 (Backgournd Proccess)コンテナ間の通信
- 第8章 (Logplex/Log Drain)ログの管理
- イベントログの集約と可視化
- バッファリングと転送
- ログ配信の仕組み
- Syslogサーバーを利用したLog Drainの構築
- HTTPサーバーを利用したLog Drainの構築
- 第9章 (Heroku Addon Interface)外部システムとの連携
- 第10章 (Heroku Platform API)プラットフォーム制御インタフェース
- 第11章 (Service Reliability Management)コンテナ型アーキテクチャの運用
- 監視と障害検知
- 縮退・制限運用
- 障害の調査
- 環境のリカバリー
- 付録A コンテナ型アーキテクチャによる実行環境を提供するサービス紹介
- 付録B App Container Specification (翻訳)