講演資料


講義資料スライドの表紙

講義資料スライドの表紙です。スライド画像、または下の要約文中の青いページ番号リンクをクリックすると、別のタブで無駄なノイズのない、純粋なPDFビューア画面が起動し、指定されたページへ直接ジャンプして快適に閲覧できます。

全体概要

本セミナーは、2015年時点における世界最先端の大規模分散システムの実装思想と技術スタックを、Twitterの事例を中心に体系的に解説するものです。セミナー全体が提起する中心的な問いは、「数億人規模のユーザーを支える分散システムを、いかにして信頼性・予測可能性・拡張性を保ちながら構築・運用できるか」という点にあります [p.5], [p.6]

Twitterのアーキテクチャーは2009年のモノリシックなRuby-on-Railsアプリから始まり、わずか数年のうちにサービス指向・非同期処理・クラスター管理へと劇的な変貌を遂げました。その変化の背景には、「毎秒100万以上のtweetに耐える」という具体的な性能要件と、「予測可能なパフォーマンス」への強い要請がありました [p.5], [p.103]。平均性能ではなく最悪ケース性能を設計基準に据えるというこの姿勢は、大規模システムの本質的な哲学として本講義全体を貫く思想的な背骨となっています [p.3], [p.103]

技術的なアプローチの最大の特徴は二つあります。第一に、非同期処理と関数型プログラミングの融合です。TwitterはScalaと独自ライブラリFinagleを使い、分散システムを「Futureの巨大な変換装置」として捉え直しました [p.5], [p.2]。Futureとflatmap、Filterといった関数型のコンビネーターによって、非同期処理の合成・エラー処理・並列化が統一的なモデルで記述できることを示しています。第二に、こうしたシステムの中核実装をオープンソースとして公開している点です [p.6]。Finagle、Mesos、AuroraといったコンポーネントはいずれもOSSとして公開され、GoogleのBorgに触発されながらも、Googleが公開しなかった領域を切り拓く意義を持ちます [p.191], [p.192]

さらに、分散データベースManhattanの設計思想は、可用性・低遅延・拡張性・運用容易性・開発者生産性という多角的な要件を同時に満たすためのアーキテクチャー的試みを示しており [p.99], [p.100], [p.101]、クラスター管理基盤Mesosは「データセンターをOSのように扱う」という発想によって、大規模分散の世界に新たなパラダイムをもたらしています [p.128]。本セミナーは、Twitterという一企業の技術進化を通じて、大規模分散システムの現在地と未来の方向性を鮮明に照らし出す、きわめて実践的かつ思想的な講義です。


講義のロードマップ

■ Part 1: Twitterのシステムの変化

  • この部の核心:

2009年から2014年にかけてのTwitterのアーキテクチャー進化を概観します。モノリシックなRailsアプリから、サービス指向・ヘテロな分散システムへと移行した軌跡を追い、その変化を駆動した技術的・組織的な動機を明らかにします [p.9], [p.10], [p.11], [p.12], [p.13]

  • 論理展開:
  • 2009年:MySQL+Ruby-on-Rails+memcacheの純粋モノリス構成。新機能追加が困難で、スピード・信頼性に課題 [p.9], [p.10]
  • 2010〜2012年:サービス分離・インフラ共有化・TFE(HTTPプロキシ)の導入で全トラフィックを新システムへ移行 [p.11], [p.12]
  • 2013年:Finagle・Mesos・ZooKeeper等を組み合わせた本格的な分散スタックが確立 [p.14]
  • 2014年:既存OSSでは低遅延要件を満たせないとしてManhattanを開発・投入 [p.17], [p.18]


■ Part 2: Finagle — 関数型言語による分散処理の記述

  • この部の核心:

Twitterの分散システムの中枢ライブラリであるFinagleの設計思想を、関数型プログラミングの概念から丁寧に積み上げて解説します。「計算=関数」「非同期=Future」「合成=flatMap」という三段階の論理展開が、大規模RPCシステムの統一的な記述モデルへと結実する過程を示します [p.20], [p.79]

  • 論理展開:
  • シーケンシャル処理を関数合成でモデル化し、待機・エラーという現実問題を提起 [p.22], [p.23], [p.25]
  • Futureを「結果を入れる箱(空/成功/失敗の三状態)」として導入し、非同期化の仕組みを定式化 [p.28], [p.30]
  • flatMapによりFuture同士を連鎖させ、Callback Hellを解消する非同期シーケンシャル処理を実現 [p.41], [p.52], [p.58]
  • Future.collectによるパラレル処理の合成、ServiceとFilterによるRPCの抽象化・モジュール化へと展開 [p.65], [p.69], [p.74], [p.77]


■ Part 3: Manhattan — 多機能分散データベース

  • この部の核心:

毎秒数百万クエリー・複数地域展開・最悪ケースでの低遅延という苛烈な要件に応えるため、Twitterが既存OSSを捨てて自社開発した分散データベースManhattanの設計哲学と実装を解説します。「信頼性」「可用性」「拡張性」「運用容易性」「低遅延」「開発者生産性」という六つの設計要件がその全体構造を規定しています [p.99], [p.100], [p.101]

  • 論理展開:
  • 大規模システムでは稀な障害が稀でなくなるという認識から、最悪ケースのパフォーマンスを設計基準に据える [p.103], [p.104]
  • コアをinterfaces・storage services・storage engines・coreの四層に分離し、モジュラー性を確保 [p.106], [p.107]
  • 整合性モデルはeventually consistentを基本とし、強整合性はopt-inで提供。read-repairとhinted-handoffで調停 [p.108], [p.109]
  • seadb・sstable・btreeの三ストレージエンジン、Hadoopバッチインポート、強整合性サービス、時系列カウンターサービスを階層上に構築 [p.110], [p.113], [p.115], [p.116]
  • マルチテナント・セルフサービス・QoS管理により「Storage as a Service」を実現 [p.118], [p.120], [p.122], [p.123]


■ Part 4: Mesos — データセンターOSとその影響の拡大

  • この部の核心:

「データセンター全体を一つのリソースプールとしてプログラムする」というMesosのビジョンと、その上に構築されたAurora・Mesosphere・Docker Containerizer等のエコシステムを包括的に解説します。GoogleのBorgをオープンソース化した系譜に位置し、大規模分散の民主化という歴史的意義を持ちます [p.128], [p.191]

  • 論理展開:
  • Mesosはマスター・スレーブ・フレームワークの三層構造でリソースオファーを介したスケジューリングを実現。ZooKeeperによる耐障害性も確保 [p.132], [p.133], [p.134], [p.137], [p.138]
  • Apache AuroraはMesos上でJob→Task→Processの抽象階層を提供し、.aurora設定ファイルで宣言的に記述 [p.143], [p.146], [p.150], [p.151]
  • Docker ContainerizerによりMesos上でDockerイメージをtask/executorとして実行可能に [p.166], [p.169], [p.170]
  • MesosphereはApache Mesosを商用強化したDCOSとして提供し、「全マシンを単一リソースプールとして管理する新種のOS」を標榜。Kubernetes・Cassandra・Sparkなど主要フレームワークとの統合も進む [p.179], [p.181], [p.187], [p.188]


■ Part 5: 歴史的・社会的考察

  • この部の核心:

大規模分散システムのパワーが、かつてはGoogleのみが持っていたものから、TwitterやNetflixを経てMesosphereによって「万人が利用できる技術」へと民主化されつつある変化を俯瞰します [p.190], [p.194], [p.195]

  • 論理展開:
  • MesosはGoogleのBorg(企業秘密として非公開だった)をインスパイア元とし、2015年にGoogleがBorg論文を初公開して技術的な系譜が明確化 [p.191], [p.192], [p.193]
  • 「クラウドを作る人」と「使う人」の分離から、誰もが大規模分散を「作れる」時代への移行という構造変化を指摘 [p.194], [p.195]
  • SOA・RPC・コンテナーの歴史的な流れ(CORBA→J2EE→WebService→Grid→Mesos)という長期的な技術進化の視点も補足 [p.83], [p.239]