もうすでにご本人がスライドを公開されているので、蛇足感満載なのだけれども、先週の金曜日(2014-09-)マイナビ IT ニュースサミットに参加してきて、そこで伊藤直也( id:naoya )氏が講演されたセッションがとてもよかったので、わたしの感想とメモを公開しておきたいと思います。
ではまずは、簡単にですがわたしの感想から
- ひと言で言うと、「ビッグデータとコンテナ型クラスタという点と点がつながった」のがよかった!(少なくともわたしの中では両者はつながっていなかったので 。)
- 直也氏の説明が以下のように順を追っていてわかりやすかったというのも個人的には理解するのに助けになりました。
- Immutable Infrastructure の説明
- OS レベル仮想化(コンテナ)の説明
- ビッグデータ基盤のトレンド( SQL on Hadoop )の説明
- MPP 系クエリエンジンの説明
- MPP 系クエリエンジンとコンテナの親和性の説明
- 直也氏の説明が以下のように順を追っていてわかりやすかったというのも個人的には理解するのに助けになりました。
- 本当にこのセッションに参加できただけで、マイナビ IT サミットに参加してよかった!
といったところかな、と。
で、以降はメモです。
【特別講演】Immutable Infrastructure / これからの Web & クラウドシステム
【講演者】KAIZEN platform 伊藤 直也 氏 Docker、Immutable Infrastructure をはじめとする昨今の議論の中から、これから先の Web システムがどう変化していくかそのトレンドが徐々に見えてきている。それらの現状を整理し考察する。 【プロフィール】 ニフティ、はてな取締役CTO、グリー統括部長を経て2013年9月よりKAIZEN platform Inc. 技術顧問。ブログやソーシャルブックマークなど10年間、ソーシャルメディアの開発と運営に携わる。著書に『入門Chef Solo』(達人出版会)『サーバ/インフラを支える技術』『大規模サービス技術入門』『Chef実践入門』 (技術評論社) など多数。
B2C の話がメインと聞いてもらいたい。
Kaizen Platform, Inc
- AB test クラウドサービス PlanBCD を開発する 50 名程度のスタートアップ企業
- SaaS で提供
- JS はってくれれば
Immutable Infra とは?
- たとえば Heroku
- AWS より一個上のレイア、 Git でソースコードを送り込むだけで Web app を動かしてくれる
- バックエンドは Cloud なので全世界でシェア
- DynoGrid (バックエンドで Heroku は自動で制御)
- このアーキテクチャの中で面白いのが、あたらしい変更をしたら、現状を上書きするはずだが、毎回あたらしい Dyno が作成される。
- 新 Dyno が準備完了:ルーティングが切り替わり古いものは廃棄
- ダウンタイムがないというメリット
- CI as a Service
- Continuous Integration
- Application testing
- 人間はテストしない、コンピュータにテストさせる
- CI 環境を Cloud 化してしまった
- Wercker, Travis CI, Circle CI etc...
- github に push すると自動でテストしてくれて通知してくれる
- Continuous Integration
テストの度に環境をつくりだす
- 複数のユーザが複数のシステムをテストする
- テストごとに新しいコンテナをつくる
- 他のユーザとは分離された環境がいるから
- テストが終わったら捨てる
Disposable Component
- 共通するのは廃棄するということ
- 必要になったら作る
- 更新は上書きではなく、捨てて新しいのを作る。つまり、変更はしない。
- それが Immutable Infra
身近な Immutable... サーバの状態
- ある日納品された Rails Server
- 様々な変更の繰り返し
- このサーバに半年ぶりに Rails app をデプロイ
- 果たしてデプロイは正しく終わるのか?
- サーバの状態を管理しないといけない
- 手順書?
- 自動化?
- サーバ構成管理サーバ
- Chef, Puppet
- そもそも管理しなければいいんじゃないか?
- Article: Trash your servers and burn your code
- で、実際にやろうとしたら Cloud 活用って話に
Blue Green Deployment
- 新規の環境ができたら、バランサ切り替えで、旧環境から切り替え。
- 失敗したら、また旧環境に切り返し
- Amazon はこの手法で、一時間に 1,000 回デプロイ
Immutable を支える技術→完全仮想化から OS レベル仮想化 (コンテナ)へ
Immutable に注目が集まる背景
- テクニックとしての Immutable
- CI, CD
- Blue Green Deployment
- 要素技術、実装
- コンテナ
- Docker
circle ci
- Annoucing Continuous Delivery with Docker containers
- Containers are a new standard in cloud infra
完全仮想化と OS レベル仮想化
- 完全仮想化
- マシンごとに仮想化し独立した環境を提供
- AWS の IaaS や VMware
- 仮想化といえば、現状思い浮かべるのはこちらだけれど
- OS レベル仮想化
- あくまで OS のプロセス
- chroot, Jail, LXC (コンテナ)
それぞれの仮想化
- コンテナ型仮想化とはなんだったのか
- OS レベル仮想化
- HW - OS - containers
Linux コンテナ
- ユーザプロセスとして新しい環境をつくる
- プロセスなので瞬時に生成される
- ユーザからあたかも新しい OS にみえる
- コンテナ vs VM にはトレードオフ
- コンテナ:
- 起動が瞬時。オーバーヘッド少ない、ホスト OS から制御可能
- VM:
- ホスト、ゲストも分離
- コンテナ:
Docker : コンテナが話題になった契機
- コンテナはハードルは高かったのだが、コンテナをマネジメントするシステムとして Docker が OSS 化され敷居が下がった
Google and Containers
- Everything at Google runs in a container. ( Containers At Scale // Speaker Deck )
クラウドにおける仮想化
- ホスティングや IaaS
- VM ベースがのぞましい
- as a Service や Google, Facebook
- Container
Immutable の流行とクラウドの将来
- クラウドが Container 型へ
ここからビッグデータと Immutable の話
Immutable とストレージ
- 廃棄可能とそうでない部品を明確にする
- そうでないものは従来通り運用するということ
Immutable 時代のアーキテクチャ
- フロントエンド、バックエンドの分離を明確に行う
- 結果的にはログはビッグデータ基盤にいれることになる
- Hadoop Cluster
- Bigdata as a Service
ビッグデータ基盤
- Hadoop, BigQuery ...
- IO をスケールアウトで並列処理することにより、ビッグデータ分析を可能に
- TB オーダーのデータに対し、数十〜数千台のクラスタ
- Hadoop に対して SQL なげたいという要望
- Hive
- ただし SQL を実行するためのオーバーヘッドが大きい
- adhoc の要求のたかまり
MPP 系クエリエンジン
- ビッグデータ基盤に対して小さいオーバーヘッドで SQL (SQL を並列分散処理)
Google BigQuery の話 #yapcasia // Speaker Deck- Hadoop
- Presto
- Cloudera Impala
- Apache Drill
- Google BigQuery
- Dremel
- Hadoop
ビッグデータの並列処理
- 基本クラスタリング
- 多数のサーバで並列処理
- リソース管理、ジョブスケジューリング
- クラスタと仮想化
- 仮想化をかませたほうが効率が良いという話に
Kubernetes
- クラスタソフト
- これもコンテナを使っている
- Docker を前提にしている
- Google, IBM, MS, RH
- Google Compute Engine の中で使われている
ビッグデータとコンテナ型クラスタ
- 仮想化で管理するならコンテナ
- IO オーバーヘッドが少ない
- IO をちらすためにへいれつしょりしているビッグデータ基盤にとって支配的
- 中央から制御しやすい
- BigQuery の内部構造などからもその方向性がみえる
- これからのビッグデータ基盤もコンテナからの影響を大きく受ける!
- IO オーバーヘッドが少ない
まとめ
- クラウドインフラはコンテナ型へという大きな転換点
- 他、 Web 分散システム全般に影響をあたえるトレンドだと(少なくとも直也氏は思っている!)
あわせて読まれたい
- #hcj2014 Hadoop Conference Japan 2014 で主に SQL on Hadoop の話を中心に聞いてきました(超個人的総括エントリ)
- #hcj2014 並列SQLエンジンPresto - 大規模データセットを高速にグラフ化する方法のメモ。
- 法被を脱いで最終形態になった @shiumachi 氏が最強だった #hcj2014 Evolution of Impala - Hadoop 上の高速SQLエンジン、最新情報のメモ
- Spark Beginner にもやさしかった #hcj2014 A Deeper Understanding of Spark Internals のメモ
- LINE 的 Lambda Architecture 実装紹介とでもいう内容だった #hcj2014 SQLによるバッチ処理とストリーム処理のメモ