Upload
yahoo-japan
View
1.449
Download
3
Embed Size (px)
DESCRIPTION
Citation preview
Yahoo! JAPANの新しいクラウドストレージサービス~Yahoo! JAPANがRiakを選んだ理由とは?~
ヤフー株式会社
マーケティングソリューションカンパニー 新規事業本部
阪田 浩隆
2013年2月14日(木)
自己紹介
1Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
氏名:阪田 浩隆(さかた ひろたか)
入社年:2004年10月
担当業務実績:
- 社内認証システム開発
- ビジネス系認証システム開発
- 社内ツール系開発
- 分散KVS 開発・保守・運用
- オブジェクトストレージ 開発
現在:Riak開発部隊(Yahoo! JAPAN内)
2Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• アジェンダ
• Yahoo! JAPANを支える技術
• KVS
• データレプリケーション
• オブジェクトストレージ
• Riak概要
• Product一覧
• アーキテクチャ概要
• インストールから起動まで• Riak EDS
• Riak CS
• 簡易デモ
• Yahoo! JAPANの新しいクラウドストレージ
• なぜRiakを選んだのか3
Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
実はYahoo! JAPANには
17年のKVSの歴史がある
4Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
創業当時(1996年)から、
データを扱うプラットフォームとして
分散KVSを使用している
※当時はまだクライアントサーバーシステムが主流であり、現在のWebが主流
のスタイルではなかった
• 独自開発
• 大規模データ
• 例)ユーザーデータ
• 分散処理
• スケールアウト
• 複数DCでのデータレプリケーション
5Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANの技術
• 独自の技術で基盤を構築している
• Yahoo! Inc.とYahoo! JAPANで開発したコアテクノロジーを元に、強靭な基盤を築いている
• このテクノロジーを利用して、
Yahoo! JAPANのサービスは成り立っている
6Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANの技術
7
画面はサンプルです。実際の表示は異なることがあります。
Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANの技術
8
Yahoo! JAPANコアテクノロジー
画面はサンプルです。実際の表示は異なることがあります。
Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANの技術
9
Yahoo! JAPANコアテクノロジー
KVS
画面はサンプルです。実際の表示は異なることがあります。
Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANの技術
10
Yahoo! JAPANコアテクノロジー
KVS
認証システム 課金システム
広告技術 CDN
画面はサンプルです。実際の表示は異なることがあります。
Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANの技術
11
Yahoo! JAPANコアテクノロジー
KVS
認証システム 課金システム
広告技術 CDN
ストレージ RDBMS
画面はサンプルです。実際の表示は異なることがあります。
Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANの技術
12
Yahoo! JAPANコアテクノロジー
KVS
認証システム 課金システム
広告技術 CDN
ストレージ RDBMS
強靭なコアテクノロジー
画面はサンプルです。実際の表示は異なることがあります。
Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANのデータレプリケーションシステム
13Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANには
データレプリケーションシステムが存在します
• 独自開発
• スケールアウト
14Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例えば
15Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
KVS
発生する問題
16Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
KVS
・フロントサーバーがDCをまたがる構成になった場合→レイテンシが問題になる
・どこかのサービスが負荷をかけると全体に影響する→負荷分散が必要
データレプリケーション
17Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
KVSKVS
KVS
DC 1 DC 2
DC 3
レプリケーションにより1.レイテンシ問題の解決2.負荷分散
Yahoo! JAPANにおけるオブジェクトストレージ
18Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
実はYahoo! JAPANには・・・
オブジェクトストレージが存在します
• 独自開発
• スケールアウト
• データレプリケーション
19Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 開発コンセプト(2009年7月開発スタート)
• 容量無制限
• 無限にスケールアウトする
• 安価
• とにかく利用価格を安くする
• データの集中管理
• 集中管理する事で無駄をなくし、コスト削減を徹底する
• 使いやすいI/F
• REST形式のAPIを提供
• 高パフォーマンス
• 可用性
20Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPAN内での利用実績(一部ご紹介)
• Yahoo!ボックス
• Yahoo!天気・災害
• Yahoo!ブックストア
• Yahoo!ロコ プレイス
21
画面はサンプルです。実際の表示は異なることがあります。
Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
実際のトラフィック
• Yahoo!ボックスサービス開始から
数TB/day のアップロードを受けている
• サーバー台数が数千台に達している
• 数PBのデータが格納されている
22Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
KVSKVS
KVS
アーキテクチャ
独自KVS
23
API
メタデータ
CDN(大容量配信)※Yahoo!ボックスでは未使用
アプリケーション
Farm
・・・・
Farm
・・・・
Farm
・・・・
ストレージエンジン
・・・・
Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo!クラウド ストレージとして提供
• Yahoo!クラウド ストレージとして、2012年9月初旬より提供開始しましたが、より良いアーキテクチャへ変更予定です
• 変更する理由は後ほど
24Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak概要
25Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Product一覧
26Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• Riak
• OSS版のKVSエンジン
• 単一クラスタの構築が可能
• Riak EDS
• エンタープライズ版のRiak
• 複数クラスタの構築が可能
• クラスタ間レプリケーションが可能
27Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• Riak CS
• オブジェクトストレージ
• Object(ファイル)はRiak / Riak EDSに保存される
• Riak / Riak EDSが無いと動作しない
• 機能としてはAPIの役割を果たす
• 認証
• 大容量ファイルの分割配置など
28Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• コンポーネント一覧
29Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
コンポーネント名 役割 OSS 有償
Riak 分散型KVSエンジン ○
Riak EDS 分散型KVSエンジンクラスタ間レプリケーションが可能
○
Riak CS オブジェクトストレージAPI ○
Stanchion リクエストシリアライズ管理API ○
Riakアーキテクチャ概要
30Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak
31Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak Cluster
基本構成
Riak
32Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak Cluster
コンシステントハッシュでデータを格納&
データを冗長化して保持
Riak
33Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak Cluster
各ノードが全てAPI※ダウンしても他のノードが
サービス継続
Client
Riak EDS(有償版)
34Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
RiakCluster A replication
Riak Cluster B
クラスタ間のレプリケーションが可能
Riak EDS
35Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
RiakCluster A replication
Riak Cluster B
通常の使用方法
Proxy Proxy
Riak CS
36Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
基本構成
Riak Cluster
・・・・・・・・・・・・
Riak CS Cluster
Stanchion
Riak CS
37Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
RiakCluster A
replication
通常の使用方法
Proxy Proxy
Riak Cluster B
・・・・・・・・
Stanchion
Riak CS Riak CS
インストール方法
38Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak / Riak EDSインストールから起動まで
39Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 1nodeの構築• クラスタの構築• レプリケーションの設定
• 作業の流れ
• パッケージダウンロード
• インストール
• 設定ファイルの編集
• 起動
40Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 1nodeの構築•パッケージダウンロード
• 以下のサイトからダウンロード• http://basho.com/resources/downloads/
• お使いの環境に合わせてダウンロードしてください
41Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 1nodeの構築•インストール
42Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
CentOS 6の環境でインストールする場合
$ sudo yum install riak-1.2.1-1.el6.x86_64.rpm
• 1nodeの構築•設定ファイル編集 その1
43Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo vi /etc/riak/app.config
ローカルに環境がある場合は、設定ファイルの編集は、特には不要。
ネットワーク環境にある場合で、IPアドレスが指定されている場合は、以下を編集
{http, [ {"127.0.0.1", 8098 } ]},↓
{http, [ {“独自環境のIPアドレス", 8098 } ]},
• 1nodeの構築•設定ファイル編集 その2
44Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo vi /etc/riak/vm.args
ローカルに環境がある場合は、設定ファイルの編集は、特には不要。
ネットワーク環境にある場合で、IPアドレスが指定されている場合は、以下を編集
-name [email protected]↓
-name riak@独自環境のIPアドレス
• 1nodeの構築•起動
•確認 その1
45Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ riak start特に、何もレスポンスはありません
$ riak pingpong ← この表示が出ることを確認$
• 1nodeの構築•確認 その2
•確認 その1
46Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo riak-admin member_status================================= Membership =================================Status Ring Pending Node---------------------------------valid 100.0% -- ‘[email protected]'---------------------------------Valid:1 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
↑この表示が出ることを確認
• 1nodeの構築•確認 その3
•確認 その1
47Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo riak-admin ring_status============= Claimant ============= Claimant: ‘[email protected]'Status: upRing Ready: true========= Ownership Handoff ==========No pending changes.========= Ownership Handoff ==========All nodes are up and reachable
↑この表示が出ることを確認
• クラスタの構築
• 設定(コマンド)
• 確認
48Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ riak-admin cluster join riak@[IPアドレス]
$ sudo riak-admin member_status
↑このコマンドで、表示確認
• レプリケーションの設定(有償版のみ)
• 設定ファイル編集
49Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo vi /etc/riak/app.config
レプリケーション設定(以下 サンプル)を追加反映
{riak_repl, [{fullsync_on_connect, true},{fullsync_interval, 360},{data_root, “/var/lib/riak/riak_repl"},{queue_size, 104857600},{server_max_pending, 5},{client_ack_frequency, 5}
]},
• レプリケーションの設定(有償版のみ)
• レプリケーション設定
50Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ riak-repl add-listener ‘riak@自分自身のIP’‘自分自身のIP’ 9010
コマンド実行後は、特に何も出力しません
$ riak-repl add-site ‘同期先のIP’ 9010 クラスタ名コマンド実行後は、特に何も出力しません
• レプリケーションの設定(有償版のみ)
• 確認
51Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ riak-repl status
↑このコマンドで、表示確認
• レプリケーションの設定(有償版のみ)
• 同期開始
52Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ riak-repl start-fullsyncコマンド実行後は、特に何も出力しません
どの場面で利用するのが良いのか
53Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 高速にデータアクセスさせたい場合• 集合から単一データを高速に取得したい場合
• 将来的にデータ件数/容量が増える事が確実である場合• スケールアウトが必須の場合
• 運用コストを軽減したい場合• システムが巨大化してしまい、運用コスト軽減を検討
したい
• サーバー、人件費の両方
54Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak CSインストールから起動まで
55Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• 1nodeの構築• Stanchionの構築• Riakとの接続設定
• 作業の流れ
• Riak CS/Stanchion
•パッケージダウンロード
•インストール
•設定ファイルの編集
•起動
56Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• パッケージの種類
• 有償版のみ
57Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• Riak CSの構築
• 1nodeの構築
•パッケージダウンロード• 開発トライアル登録後、ダウンロードURLが案内される
•インストール
58Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
CentOS 6の環境でインストールする場合
$ sudo yum install riak-cs_1.2.0.el6.x86_64.rpm
•設定ファイル編集
59Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo vi /etc/riak-cs/app.config
ローカルに環境がある場合は、設定ファイルの編集は、特には不要。
ネットワーク環境にある場合で、IPアドレスが指定されている場合は、以下を編集
{cs_ip, "127.0.0.1"},↓
{cs_ip, "独自環境のIPアドレス"},
60Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
{riak_ip, "127.0.0.1"},↓
{riak_ip, "独自環境のIPアドレス"},
{stanchion_ip, “127.0.0.1"},↓
{stanchion_ip, “独自環境のIPアドレス"},
•設定ファイル編集
61Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo vi /etc/riak-cs/vm.args
ローカルに環境がある場合は、設定ファイルの編集は、特には不要。
ネットワーク環境にある場合で、IPアドレスが指定されている場合は、以下を編集
-name [email protected]↓
-name riak@独自環境のIPアドレス
•起動
•確認
62Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo riak-cs startok
$ sudo riak-cs pingpong
• Stanchionの構築
• 1nodeの構築
•パッケージダウンロード• Riak-CSと同じです
•インストール
63Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
CentOS 6の環境でインストールする場合
$ sudo yum install stanchion-1.0.1-1.el6.x86_64.rpm
•設定ファイル編集
64Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo vi /etc/stanchion/app.config
ローカルに環境がある場合は、設定ファイルの編集は、特には不要。
ネットワーク環境にある場合で、IPアドレスが指定されている場合は、以下を編集
{stanchion_ip, "127.0.0.1"},↓
{stanchion_ip, "独自環境のIPアドレス"},
65Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
{riak_ip, "10.1.1.192"},↓
{riak_ip, "独自環境のIPアドレス"},
{anonymous_user_creation, false},↓
{anonymous_user_creation, true},
•設定ファイル編集
66Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo vi /etc/stanchion/vm.args
ローカルに環境がある場合は、設定ファイルの編集は、特には不要。
ネットワーク環境にある場合で、IPアドレスが指定されている場合は、以下を編集
-name [email protected]↓
-name stanchion@独自環境のIPアドレス
•起動
•確認
67Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
$ sudo stanchion startok
$ sudo stanchion pingpong
• コマンドラインからの確認• 管理ユーザの作成
• テストファイルの配置
68Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak CSを使ったデモ
69Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
デモの概要
70Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Webサーバー(投稿)
Riak Cluster
マウント
Webサーバー(閲覧画面)
アップロード • エンコード
• サムネイル作成
APIコール
実際の導入事例
71Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
導入事例1
• LOHACO(アスクル様)
72Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak CSで画像配信
システム構成
73Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak CS Cluster
Riak EDS Cluster 1
CDN
Riak CS Cluster
Riak EDS Cluster 2レプリケーション
障害発生時のみ
データ
• 登録件数
• 約20万件弱 (データ移行は3時間程度)
• ファイルの種類/サイズ
• 画像データ
• 5k~500k
• リクエスト数
• 450req/sec
• CDNキャッシュヒット率
• 97%
• レスポンス
• 10ms~80ms (CDNにキャッシュされている状態だと10ms程度)
74Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
構築~リリースまでの期間
• 構成検討、各種調整(NW、サーバー調達)
• 1週間
• 構築&テスト・リリース
• 構築:1日
• テスト&リリース:1週間
問題になったところ
• データをフラットに配置したところ、
一覧取得できなくなった
• 解決策:ディレクトリを分けてもらった
75Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANの新しいクラウドストレージ
76Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Riak CSを利用しての
Yahoo! JAPANの新しいクラウドストレージ
77Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• スケジュール
• 2012年10月 トライアルリリース
• 2013年1月 先行リリース
• 2013年4月 本番サービス開始(予定)
78Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
なぜRiakを選んだのか
79Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
求められる機能の違い
• 独自のオブジェクトストレージでは全てに対応できなかった
• C向け、B向けで求められる機能が違うため、全てを1ソースで管理していくのは困難だった
80Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
S3互換のオブジェクトストレージが必要だった
• ユーザーニーズに早急に応える必要があった
• S3のユーティリティをそのまま流用したい旨のニーズが多かった
• 独自のオブジェクトストレージを改修する事も可能だったが、時間を節約したかった
81Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
KVSがストレージエンジンになる
• KVS単体でもストレージエンジンになりえるようになっている
• ただしサーバー台数が増えた時にどうするのか検討が必要
82Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
運用コスト削減
• 運用コストがかからないような構成になっている
• コンポーネント数が少ない
• 設定が項目が少ない
• サーバー追加が容易
83Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANで培ったKVSのノウハウを、ダイレクトに活かせそうなアーキテクチャだった
• +一緒に開発できそうな人たちだった
84Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
85Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Action!カード
今回のDevelopers Summitのテーマは「Action!」• 共感から行動へ、「デベロッパーは未来を作っている。世の中をエコでスマート
な社会にするために、デベロッパーは誇りを持って、行動しよう!」
• セッション後のAction!をレコメンド!
• メッセージ• 「世界に5つのコンピュータ」
インフラを意識させないインフラを作ろう
• おすすめのコミュニティ• Riak Meetup
• おすすめの本• プログラミングErlang
86Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
世界に5つの
コンピューター
インフラを
意識させない
インフラを作ろう
アンケートと引き換えに、ノベルティプレゼント!
ご清聴ありがとうございました
87Copyright © 2013 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止