ayuminのあまり更新しないBlog

筆不精なのでめったに更新しません

Herokuを支える技術(仮)

Herokuのようなコンテナ型アーキテクチャによるプラットフォームクラウドが少しずつ市民権 を得てきたことから、Herokuやそれに似たアーキテクチャによるアプリケーション実行環境の 仕組みについて興味をもつ人も増えてきたようだ。

さすがに製品のネタばらしみたいなことはできないけれど、そういったプラットフォームを構 成する技術要素についてきちんと整理して情報提供するような書籍かそれに準ずるコンテンツ があれば、Herokuに対する理解を深めてもらうことができるんじゃないかとおもう。

というわけで書きたいなと思っているコンテンツを思いつくままに列挙してみた。

執筆方針

Herokuそのものの内部構造を詳細に紹介するのは難しいので、コンテナ型のアーキテクチャ 全般の設計・実装・運用上の考慮点と、Herokuがそれをどういうアプローチで解決している のか、そしてもし可能であればHerokuとは異なるアプローチについても紹介していきたい。

以下は全体的な構成とそれぞれの章で書きたいなと思っている内容。確実に自分ひとりの知識 で全部書くのは現実的ではないし、せっかくなのでそれぞれの分野に詳しい人たちにヒアリン グしたり(請けてくれれば)一部のセクションを書いてもらったりしたいなーとおもっている。

とはいえコレはまだ構想段階なので、最終的にどういうふうになるかはわからない。 これから調べなければならないこともかなり多いので、情報源になるようなサイトや書籍を 紹介していただけると嬉しいです。

目次(案)

  • はじめに
  • 第1章 (Herokuプラットフォーム)コンテナ型アーキテクチャとは何か
    • コンテナ型アーキテクチャの概観
    • コンテナ型アーキテクチャの特長
      • サーバ仮想化技術おさらい
      • コンテナ
    • 仮想サーバーとコンテナの違い
    • サービスの可搬性を高めるその他のアプローチ
  • 第2章 (Herokuコンポーネント)コンテナ型アーキテクチャの構成要素
  • 第3章 (Cedarスタック)仮想サーバーとオペレーティングシステム
    • 仮想サーバーの構成と配備
      • サーバ構成の自動化
        • chef
        • puppet
        • ansible
    • 仮想サーバーの拡張
    • オペレーテイングシステムの設定と設定変更
    • 構成の永続化と管理
  • 第4章 (Dyno)コンテナ
    • コンテナに求められる要件
    • コンテナを実現する主要なソフトウェアの紹介
      • FreeBSD Jail
      • LXC(Linux Container)
      • Warden
      • Oracle Solaris Containers
      • OpenVZ
      • Docker
        • Dockerが提供するツール
        • CoreOSについて
      • Rocket
        • AppContainerSpecについて
    • コンテナを実現するソフトウェアの比較
  • 第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)プラットフォーム制御インタフェース
    • API設計方針
    • リソース設計
    • RESTFul API
    • ストリーミングAPI
    • APIの公開と利用
    • SDK(Software Development Kit)の提供
  • 第11章 (Service Reliability Management)コンテナ型アーキテクチャの運用
    • 監視と障害検知
    • 縮退・制限運用
    • 障害の調査
    • 環境のリカバリー
  • 付録A コンテナ型アーキテクチャによる実行環境を提供するサービス紹介
  • 付録B App Container Specification (翻訳)