Top Banner
Google confidential | Do not distribute Google のインフラ技術から考える理想の DevOps Etsuji Nakai Cloud Solutions Architect at Google 2017/02/14 ver1.0
26

Googleのインフラ技術から考える理想のDevOps

Feb 21, 2017

Download

Technology

Etsuji Nakai
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Googleのインフラ技術から考える理想のDevOps

Google confidential | Do not distribute

Google のインフラ技術から考える理想の DevOps

Etsuji NakaiCloud Solutions Architect at Google2017/02/14 ver1.0

Page 2: Googleのインフラ技術から考える理想のDevOps

$ who am i

▪Etsuji Nakai

Cloud Solutions Architect at Google

Twitter @enakai00

好評発売中

Page 3: Googleのインフラ技術から考える理想のDevOps

DevOps を支える隠された視点

Page 4: Googleのインフラ技術から考える理想のDevOps

そもそも DevOps って何でしたっけ?▪開発チームと運用チームが一緒に会議すること?

▪開発チームが運用までやっちゃうこと?

▪運用チームがコードを書いて開発すること?

https://ja.wikipedia.org/wiki/DevOps

http://itpro.nikkeibp.co.jp/article/COLUMN/20131113/517746/

http://www.atmarkit.co.jp/ait/articles/1307/02/news002.html

Page 5: Googleのインフラ技術から考える理想のDevOps

Site Reliability Engineer

▪ Google の運用チームの名称● 開発者と同じスキルセット+インフラの知識● 運用作業 + 運用効率を改善するためのコード開発● 運用作業は、業務時間の 50% 以下に制限

Page 6: Googleのインフラ技術から考える理想のDevOps

Google が開発した分散ソフトウェア技術の例

▪全世界のデータセンターで共通化されたインフラの提供

▪スケーラブルで運用効率性の高いアプリケーションを実現する機能を提供

▪インフラを隠蔽して、アプリケーションレベルでの開発/管理に集中

Page 7: Googleのインフラ技術から考える理想のDevOps

公開論文から読み解くインフラ技術の「思想」▪「謎技術」の実体は、徹底的な合理主義 

▪「技術的制約」に対する恐ろしいほどの洞察力

● この制約を受けいれることが何が可能になるのか?● この制約を打破することで何が可能になるのか?

https://research.google.com/pubs/papers.html http://www.school.ctc-g.co.jp/columns/nakai2/

Page 8: Googleのインフラ技術から考える理想のDevOps

理想の DevOps を実現するための隠された視点

▪レイヤーごとの責任分界点を明確にすることで、「本質的でない依存関係」をなくして、全体最適化を実現● 無駄な依存関係がないからこそ、インフラ・開発・運用の 3 チームが健全な協力関係を

確立可能に

▪その上で「真に重要な依存関係」に叡智を結集● スケーラブルで運用効率性の高いアプリケーションに

必要なインフラ技術の提供● 運用段階での効率性や安定性、スケーラビリティの確

保を前提としたインフラ/アプリケーションの設計基盤開発

アプリケーション開発

運用

Page 9: Googleのインフラ技術から考える理想のDevOps

この先生きのこるために・・・

▪インフラを構成するソフトウェアの特性を深く理解して、最適なアプリケーション・アーキテクチャーを見極めることが重要

▪それぞれの技術要素を根本から理解して、システム全体のアーキテクチャーを俯瞰できる能力が必要

https://github.com/GoogleCloudPlatform/gke-gobang-app-example http://www.slideshare.net/strsk/google-container-engine-kubernetes

● 重要なのは、役割ではなく、知識範囲としてのフルスタック

Page 10: Googleのインフラ技術から考える理想のDevOps

Googleが開発したソフトウェア技術の例

Page 11: Googleのインフラ技術から考える理想のDevOps

Google が開発した基盤技術の例▪ Borg / Omega

● コンテナを用いたアプリケーション実行基盤● OS レイヤーを隠蔽して、アプリケーションレ

ベルでの管理に集中● リソーススケジューラーによるアプリケーシ

ョンデプロイの最適化

http://research.google.com/pubs/pub44843.htmlhttp://www.hpts.ws/papers/2015/wilkes.pdf

基盤とアプリケーションの明確な責任分界点

Page 12: Googleのインフラ技術から考える理想のDevOps

Google が開発したデータストア技術の例

▪ Google File System / Colossus● 分散ファイルシステム● 大容量ファイルのシーケンシャルな読み込みと追記処理に特化してチューニング● MapReduce や Bigtable など上位ミドルウェアのバックエンドとして使用

▪ Bigtable● 行単位アクセスに特化した Key-Value ストア(複数行のトランザクションは非対応)● 1つの行の中に複数のカラムファミリーを用意して複数データを保存● 追記処理しかできない GFS の上に高速なデータの書き換え処理を実装!

ユースケースの分析に基づいた機能選定

技術的制約の打破

Page 13: Googleのインフラ技術から考える理想のDevOps

Google が開発したデータストア技術の例

▪ Megastore● Bigtable をバックエンドとして実装した分散データストア● 複数データセンターにまたがるレプリケーションと「エンティティグループ」単位での

トランザクション(強い一貫性を持ったデータアクセス)● 実質的に無限のスケーラビリティ(レイテンシーは Bigtableより劣る)

▪ Spanner● MegaStore の欠点を克服するために再実装された分散データストア● RDBに類似したテーブル構造と SQL トランザクションを実現● 原子時計による時刻同期システムを用いて、分散データベースにおける性能問題を解決

技術的制約と機能要件の合理的なトレードオフ

技術的制約の打破

Page 14: Googleのインフラ技術から考える理想のDevOps

Google が開発したデータ処理技術の例

▪ MapReduce● Map / Shuffle / Reduce の処理モデルに基づいた分散データ処理基盤

▪ FlumeJava● MapReduce を汎化して、より一般的なデータ変換のフローを記述可能にした基盤● 最適化された MapReduce を内部的に生成して実行● バッチ型のデータ処理機能を提供

▪ MillWheel● ストリームデータの処理基盤● Low Watermark(処理済みイベント時刻)を用いた時系列イベントのトラッキング● イベントデータの永続性と処理の一貫性を基盤レベルで保証

制約の受け入れによるスケーラビリティの実現

アプリケーションの開発生産性にフォーカスした機能実装

Page 15: Googleのインフラ技術から考える理想のDevOps

実装とユースケース

Page 16: Googleのインフラ技術から考える理想のDevOps

Borg / Omega

▪ Google のデータセンターで稼働するミドルウェア/アプリケーションの多数が稼働する標準基盤● Web Search● Gmail, Google Docs● Bigtable, MapReduce, FlumeJava, MillWheel● Google File System, Bigtable, Megastore● 分散ビルドシステム● Google Compute Engine● etc…

▪ OSS として再実装したものが Kubernetes

https://research.google.com/pubs/pub43438.html

Page 17: Googleのインフラ技術から考える理想のDevOps

(参考) Colossus について

▪ Google File System の後継として開発▪ Google における標準的な分散ファイルシステムとして利用▪詳細情報は未公開

Page 18: Googleのインフラ技術から考える理想のDevOps

Google File System

▪ Google におけるファイルアクセスのパターンを分析して仕様を決定● 大容量ファイルのシーケンシャルな読み込みと追記処理に特化してチューニング● 他の操作(部分書き換えなど)も可能ではあるが、性能は出ない

▪冗長性の確保などは基盤側で実装● 64MBのチャンクに分割して複数サーバーに複製保存● サーバー障害時は自動的に切り替え

並列データ処理の結果を受け渡し大容量データの受け渡し

http://research.google.com/archive/gfs.html

Page 19: Googleのインフラ技術から考える理想のDevOps

Google File System

19チャンクサーバー プライマリセカンダリ セカンダリ

データフロー

クライアントクライアント

コントロールフロー

▪データフローを最適化することで書き込み性能を向上● クライアントから複数のチャンクサーバーに対してシリアルにデータ転送● データ受信を開始したチャンクサーバーは、即座に転送を開始● コントロールフローを分離して、チャンクサーバー間のデータ整合性を確保

Page 20: Googleのインフラ技術から考える理想のDevOps

Bigtable

▪構造化データを保存するための大規模分散 Key-Value ストア● クローラーが収集した HTML ファイル

から、衛星画像ファイルまで大小さまざまなデータを保存

● 行単位でのアトミックな操作● Row Key の辞書順での高速スキャン

http://research.google.com/archive/bigtable.html

Page 21: Googleのインフラ技術から考える理想のDevOps

Bigtable

▪ Row Key の一定範囲ごとに Tablet に分割にして、分散アクセスを実現● Tablet の実体はバックエンドの GFS に保存(Tabletサーバーが障害停止しても、他のTabletサーバーが引き継ぎ可能)

● イミュータブルな SSTable/memtable と追記型ログファイルの組み合わせにより、 GFS上のファイルに対する追記処理のみで、高速なランダムアクセスを実現

Page 22: Googleのインフラ技術から考える理想のDevOps

Spanner

▪複数データセンターにまたがった分散データベース● RDBに類似したテーブル構造とトランザクション機能を実現● すべての書き込みデータにタイムスタンプを付与することで、サーバー間でのデータの整合性を確保(TrueTime APIで信頼できる時刻同期の範囲をチェックして、タイムスタンプの値と書き込み間隔を調整)

● 原子時計と GPS を用いたタイムサーバーにより、高精度な時刻同期を実現

http://research.google.com/archive/spanner.html

Page 23: Googleのインフラ技術から考える理想のDevOps

まとめ

Page 24: Googleのインフラ技術から考える理想のDevOps

理想の DevOps を実現するための隠された視点

▪レイヤーごとの責任分界点を明確にすることで、「本質的でない依存関係」をなくして、全体最適化を実現● 無駄な依存関係がないからこそ、インフラ・開発・運用の 3 チームが健全な協力関係を

確立可能に

▪その上で「真に重要な依存関係」に叡智を結集● スケーラブルで運用効率性の高いアプリケーションに

必要なインフラ技術の提供● 運用段階での効率性や安定性、スケーラビリティの確

保を前提としたインフラ/アプリケーションの設計

基盤開発

アプリケーション開発

運用

SRE基盤開発チーム

決して「謎技術」ではありません!

Page 25: Googleのインフラ技術から考える理想のDevOps

Google のインフラを一般開放した Google Cloud Platform

VIRTUAL NETWORK

LOAD BALANCING

CDN

DNS

INTERCONNECT

Management Compute Storage Networking DataMachineLearning

STACKDRIVER

IDENTITY ANDACCESS

MANAGEMENT

CLOUD ML

SPEECH API

VISION API

TRANSLATE API

NATURALLANGUAGE API

Page 26: Googleのインフラ技術から考える理想のDevOps

Thank you!