More Related Content
PDF
PDF
PDF
PDF
PDF
PDF
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計 PDF
Google Compute EngineとGAE Pipeline API PDF
What's hot
PDF
20200708サーバーレスでのAPI管理の考え方 PDF
awsで実現するミッションクリティカル業務のクラウド利用 VIP編 PDF
Kansai Azure Azure Overview & Update 20140926 PPTX
ITpro EXPO 2011 クラウド上での業務アプリ開発 PDF
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説 PPTX
PDF
SQL Server エンジニア のための コンテナ入門(k8s編) PDF
JAWS-UG初心者支部 - 2020-01-29 - マルチアカウント運用のはじめかた PDF
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5) PPTX
VMware SDDC on IBM SoftLayer Cloud PPTX
超基本! AWS 認定 SA アソシエイト 受験準備 (2020年3月10日) PDF
JJUG CCC 2015 Spring: Liberty Profile Technical Deepdive:IBMの新しいアプリケーションサーバーの... PPTX
【共通版】 IBM Cloud (SoftLayer) 最新動向情報 2017年11月版 v1.0 PDF
PDF
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ... PDF
PDF
PDF
Microsoft Azure 概要 (2015 年 4 月版) PDF
マルチテナント化で知っておきたいデータベースのこと PDF
それでもボクはMicrosoft Azure を使う Similar to BPStudy20121221
PPTX
PDF
PDF
いよいよ SAP Business Suite 正式サポート! SAP on AWS PDF
Amazon Web Servicesブース:UI×API×AWS 横田 聡 PDF
Google Compute EngineとPipe API PDF
PDF
PDF
PDF
ゆるべん Webアプリ開発概要 20130127 PPTX
PPTX
Windows Azure 基盤を支えるテクノロジー PDF
PDF
PPTX
PDF
Heroshima "Cloud & Security Day" and Night PDF
PDF
PDF
Guide to Cassandra for Production Deployments PDF
JAWSUG熊本で開催されたハンズオンにて発表したAWS初心者向け資料 PDF
JAWS熊本で使用したSWX社内用AWS初心者向け資料 More from Shinichiro Takezaki
PDF
PDF
PDF
PPTX
PDF
PDF
PDF
PDF
PPTX
PDF
PDF
PDF
PPTX
PPT
BPStudy20121221
- 1.
300万トランザクション/日を処理する
スケールアウト型
Web帳票システムの仕組みについて
2012/12/21 有限会社バーチャルテクノロジー
1
Copyright © Virtual Technology, Inc
- 2.
• 竹嵜伸一郎 (たけざきしんいちろう)
• (有)バーチャルテクノロジー
– 分散KVSのミドルウェア開発(ReflexWorks)
• 1992-2003
– 日本IBM ソフトウェア事業部
• 2007-2009
– (株)暮らしのデザイン CTO
2
Copyright © Virtual Technology, Inc
- 3.
- 4.
- 5.
背景
インストール型帳票アプリをWeb化するにあたって・・
• ユーザビリティ、パフォーマンス
– クライアントアプリに比べ遜色のないUI/UX
– ボタンを押して数秒以内に印刷開始、高速な印刷実行
– バーコード(EAN128など)やQRコードといった高品位な帳票印刷
• モダンブラウザ対応
– 昔はWindows+IEで十分だったが、最近ではMacでもという要望が増加
– Chrome、Firefox、Safariといったモダンブラウザにも対応させたい
• 急激なアクセス数の増大に柔軟に対応
– スタート時は最小のリソースで開始したいが実際にどれくらいのアクセス
が来るかわからない。(数十万ユーザの同時利用に耐えられるか)
– 将来的なアクセス増大に単純なリソース追加により対応したい。
5
Copyright © Virtual Technology, Inc
- 6.
- 7.
- 8.
- 9.
3つのポイント
UI/UX、パフォーマンス、スケーラビリティの3つを同時に解決
• ThinServer Architecture
– APサーバはデータを返すだけ(JSON/XML)
– Webサーバは静的コンテンツを返すだけ(HTML,CSS,JavaScript等)
Flash利用の異論
– クライアントによるレンダリングで70%負荷軽減
ActiveXと同じ問題?
HTML5は?
➡ 現実解
• Flash印刷コンポーネント
– クライアントリソースの活用でサーバ側への負荷は最小限
– バーコード、QRコードなどをクライアント側で高速に印刷
– Active Xを使用していないため様々なOSやブラウザで動作する
• Flash導入率は世界で99%以上。スマホなどを除くとほぼすべてのブラウザに対応
• 分散KVS
– 顧客数を最大に見積もらなくてもスモールスタートが可能
– 急激なアクセス増大にも単純なノードを追加で対応可能
9
Copyright © Virtual Technology, Inc
- 10.
- 11.
なぜ分散KVSを採用したのか
• キャッシュとして利用
– 読込/書込性能向上
– RDBのボトルネックを解消、スケールアウトできる
• O/Rマッパーが不要になる
– KVSに直接オブジェクトを保存可能
– 工数削減、開発の4割がマッピングに費やされている
– RDBを実質的に廃止できる RDBのインスタンス
• 管理コストが低い を増やすと管理が大変
– 導入設定が不要、スキーマの生成が不要
– 単純なログファイル、管理が非常に楽
11
Copyright © Virtual Technology, Inc
- 12.
- 13.
分散KVSを業務アプリで使うには
業務アプリにKVSであることを意識させないことが大事
h0p://blog.virtual-‐tech.net/2012/07/kvs.html
• ユーザビリティ
– ドキュメント指向でRESTによる操作を基本とする
• トランザクション処理
– 業務アプリを作るうえで必須(後述)
• RangeScan、セカンダリIndex
– キー以外の項目でも高速に検索できないと全走査
となって使い物にならない
• 1.5次元レベル、GAE
DatastoreなどはINDEXがある
13
Copyright © Virtual Technology, Inc
- 14.
- 15.
- 16.
- 17.
3. Thin ServerArchitecture
(RESTで疎結合)
17
Copyright © Virtual Technology, Inc
- 18.
Thin Server Architecture
クライアントからRESTでサーバリソースにアクセス
サーバからはJSONやXMLのデータを返すのみ
BaaSのような感じ
REST
データ
・・・
18
Copyright © Virtual Technology, Inc
- 19.
- 20.
直感的なRESTAPIによる操作
• リソースURLは自由に設定、追加できる。
• マッピングルールなどを書く必要がない
→
設定ファイル地獄、アノテーション地獄からの解放
• リソースを様々なフォーマットに変換できる。
• 単純なプロパティとListをもつPOJOで階層構造を表現
→
JSON
,
XML
,
msgpackなどに変換可能
• リソースに対してCRUD操作可能
20
Copyright © Virtual Technology, Inc
- 21.
フォルダとエントリの階層表現
• フォルダ配下の取得とエントリの取得
– GET /{フォルダ}
• {フォルダ}の集合(ATOM Feed)を取得
– GET /{フォルダ}/{エントリ}?entry
• {フォルダ}の集合の1エントリ (ATOM Entry)を取得
• 実はフォルダとエントリの区別はない
– エントリはフォルダの性質をあわせもつ
– GET /{フォルダ}/{エントリ}
• {フォルダ}/{エントリ}の集合を取得
– GET /{フォルダ}/{エントリ}/{エントリ2}?entry
• {フォルダ}/{エントリ}の集合の1エントリを取得
21
Copyright © Virtual Technology, Inc
- 22.
検索条件など
GET /d/{selfid}?{name}{=|.eq.|.lt.|.le.|.gt.|.ge.|.ne.}{value}&{name}{=|.eq.|.lt.|.le.|.gt.|.ge.|.ne.}{value}&...&l={n}
• パラメータに「プロパティ名=値」の形で複数指定可能
• 等しい条件以外の条件(以上、未満など)を指定する場合、=の代わりに以下を指定する。
.eq. : = (等しい)
.lt. : < (未満)
.le. : <= (以下)
.gt. : > (より大きい)
.ge. : >= (以上)
.ne. : != (等しくない)
• name=valueの形式での条件指定について、値の最後に“*”を指定することで前方一致検索ができる。
また、前後に指定することであいまい検索ができる。
• &countを付けることで件数を取得できる。
• パラメータにlを指定することで、取得件数の上限を指定できる。
• 検索結果が取得件数の上限に達した場合、link rel=“next”タグにcursor文字列が返されるので、次の検索においてパラメー
タpを使ってcursor文字列を渡す。
例)上限を3件として検索。検索結果が3件以上ある場合、cursor文字列が含まれて返される。
http://tagging-service.appspot.com/d/cloudec/Men/Tops?xml&l=3
次のページを表示するにはpにcursor文字列を指定する
http://tagging-service.appspot.com/d/cloudec/Men/Tops?xml&l=3&p=E9oBxxxx
予約語(以下の名称はtagging service内で使用しているためproperty名には使用できません)
callback
login
logout
related
title (entryのtitleを定義済)
allocids
その他の制約
プロパティは2文字以上の名称をつけてください。 先頭に_(アンダースコア)をつけた名称は、内部処理で使用しているため、プロパティの名前に使用できません。
パラメータのつなぎに.(ドット)を使用しているため、プロパティの名前に使用できません。
22
Copyright © Virtual Technology, Inc
- 23.
XMLとJSONが扱える
XML
<feed>
<entry>
• ATOM
Feed/Entryを拡張しユーザ定義の項目を追加する
• XMLとJSONの互換性を考えて通常は名前空間は省略
<transaction>
<total>100</total>
</transaction>
<item_list>
<item>
<description>商品1</description>
<unit_price>100</unit_price>
</item>
</item_list>
<content>テスト</content>
</entry>
</feed>
JSON
{"feed"
:
{"entry"
:
[{"transac>on"
:
{"total"
:
"100"},
"item_list"
:
{"item"
:
[{"descrip>on"
:
"商品1","unit_price"
:
"100"}]},
"content"
:
{"_______text"
:
"テスト"}}]}}
23
Copyright © Virtual Technology, Inc
- 24.
- 25.
疎結合だから並行開発できる
内部設計~単体テストフェーズにおいて並行開発ができる
・ユースケース図、ユースケース記述
・分析クラス図、論理ビュー 要件定義
・画面モックアップ 外部設計
・エンティティ設計、テーブル設計、インスタンス作成
・画面実装 ・Resorceモデル設計 ・DAOモデル設計
内部設計
・単体テスト
・フローアセンブル ・O/Rマッピング実装
・単体テスト
・単体テスト
・統合テスト テスト
・システムテスト
リリース
25
Copyright © Virtual Technology, Inc
- 26.
- 27.
基本的なスタンス
効率よくスケールすれば雲の中身はどうでもいい
BaaSのような感じ
WEB
AP
REST
セッションオブジェクト
DB
WEB
AP
セッションオブジェクト
・・・
WEB
AP
セッションオブジェクト
27
Copyright © Virtual Technology, Inc
- 28.
以下の技術とは区別する
枯れた技術だけを採用し以下は使わない方針
• 並列・並行プログラミング
– メニーコアで最大能力を引き出す
• http://modegramming.blogspot.jp/2012/12/scala3.html
– Concurrent Revisions
• http://research.preferred.jp/2011/10/modern-parallel-
concurrent-programming/
• リアルタイム処理
– ストリームデータ処理
• STM(Software Transactional Memory)
28
Copyright © Virtual Technology, Inc
- 29.
要はパフォーマンスと全体最適化の問題
• パフォーマンスの問題
これらの問題は実は
– データが増えると遅くなる モダンプログラミング
じゃなくても解決できる
– アクセスが多くなると遅くなる
ユーザ100万人が同時に使える?
実は他に改善すべき
• 全体最適化の問題 ことがいっぱいある
– VMの全体最適化では不十分
29
Copyright © Virtual Technology, Inc
- 30.
これまでの3階層システム
トランザクション
はDBMSの機能で実現
WEB
AP
DB
30
Copyright © Virtual Technology, Inc
- 31.
DBとボトルネック
単にWEBやAPを増やしてもスケールしない
DBがボトルネックとなり
WEB
AP
スケールしない
WEB
AP
DB
WEB
AP
31
Copyright © Virtual Technology, Inc
- 32.
分散キャッシュ
読込性能は上がるが・・
DBとの整合性はどうする?
WEB
AP
WEB
AP
Cache
DB
WEB
AP
32
Copyright © Virtual Technology, Inc
- 33.
案:スケーラブルなDBを使う
APをステートレスにしてAutoScaleできれば概ね解決
WEB
AP
セッションオブジェクト
DynamoDB
WEB
AP
とか
セッションオブジェクト
WEB
AP
セッションオブジェクト
33
Copyright © Virtual Technology, Inc
- 34.
しかし、本当にスケールするか?
なぜFacebook
Messages
でCassandraではなく
Hbaseが採用されたの
か?
h0p://www.slideshare.net/okuyamaoo/okuyama-‐20120119-‐ss
34
Copyright © Virtual Technology, Inc
- 35.
- 36.
- 37.
分割すりゃいいじゃん
困難は分割せよ
By
ルネ・デカルト
37
Copyright © Virtual Technology, Inc
- 38.
Scale-up vs Scale-Out
Scale-Up Scale-Out
性能の高いサーバは、極端に高くなる
性能の頭打ち(ムーアの法則)
性能は、価格に比例
廉価サーバ
38
Copyright © Virtual Technology, Inc
- 39.
- 40.
- 41.
- 42.
シャーディングの考え方
• お互いに干渉しないような分割キーを見つける
– ユーザIDなど
• SalesForceのマルチテナントアーキテクチャー
– テナント別の「組織ID」で物理分割
• http://www.publickey1.jp/blog/09/2id.html
– ユーザー企業が増えた場合でも、データが増えた場合でも、
パーティションを増やし、そのパーティションを処理するイン
スタンスを追加することでスケーラブルな対応をする
42
Copyright © Virtual Technology, Inc
- 43.
Berkeley DB JavaEdition
通常はキャッシュで処理、永続化も備える
43
Copyright © Virtual Technology, Inc
- 44.
- 45.
- 46.
- 47.
一貫性
• 一貫性(Consistency)
これ重要
• 可用性(Availability)
• 分割耐性(ParAAon
Tolerance)
• しかし、Consistencyはとても重要
47
Copyright © Virtual Technology, Inc
- 48.
CAP定理とプロダクト
Hadoopは、
Availabilityを犠牲
Cassandraは、
Consistencyを犠牲
(C)Nathan
Hurst's
Blog
48
Copyright © Virtual Technology, Inc
- 49.
- 50.
- 51.
Feed単位の1UOW(Unit
of
Work)
<atomicity(原子性)、isolation(分離性)>
・ entryはトランザクションの最小単位(RDBにおける1レコードに相当)
・ aliasの追加・削除はentry内でatomicでありisolationが保たれる
(例えばフォルダ移動で2重に見えたりはしない)
<consistency(一貫性)>
・ feedのPOST/PUTは1UOWで実行され一貫性は保たれる
(どれか一つのEntryが失敗するとロールバックされる)
ATOM Feed
<feed>
<entry> self
<link rel=“self" href=”/folder0/document1">
<link rel="alternate" href="/folder1/document1"> alias
・・・
</entry> transaction scope
<entry>
・・・
</entry>
・・・
</feed>
51
Copyright © Virtual Technology, Inc
- 52.
「受注と明細」を1つの更新処理に束ねる
• RDBだと2テーブルに跨ぐはず
– トランザクションで括るなど必要
• これを1リクエストで実行する
– 1Feed内に本体と明細のentryを入
れるだけで1トランザクションとして
実行可能
POST/PUT/DELETE
<feed>
<entry>
<id>受注のid
</id>
<entry>
<entry>
<id>明細のid</id>
<entry>
</feed>
52
Copyright © Virtual Technology, Inc
- 53.
- 54.
BDBのパフォーマンス
• Total 100,000requests、 100回繰り返し
• writeとdeleteの処理を実行、Value sizeは 1024 bytes
• Server1台(2CP,2.66GHz,3.3GB)、Client4台
•
メモリ内で実行
実際にBDBに書き込む
30000クライアントまで
30000クライアントまで
10000〜12000
(trans/sec)
4500〜8500
(trans/sec)
メモリに比べ
出典:Voldemort
性能は約半分
54
Copyright © Virtual Technology, Inc
- 55.
- 56.
本当のボトルネックはどこか
コンテンツ関係だけで相当な改善効果があった
サーバサイド
はJSON返すのみ
• 動的コンテンツの廃止
– クライアントによるレンダリングで70%負荷削減
– 帳票作成の負荷削減効果は計り知れない
• 静的コンテンツのWebサーバへの移動
– 10%~20%の負荷削減(ロードアベレージ)
56
Copyright © Virtual Technology, Inc
- 57.
- 58.
Publicクラウドはレイテンシーが課題
Flash印刷パフォーマンステスト
(Azure)
Windows
Azure
@singapore
・ データ1000件分格納後、取り出しを行う
3300Bytes
上り:41秒/1000件、下り:18秒/1000件
Table
Storage
/1レコード
1000レコード
444レコード*2
・ Flash側でダイレクト印刷する
WebRole(C#)
125秒/3000ページ
AMF
Messaging
Gateway
(印刷開始は1P目がスプールされた時点)
AMF3
125秒/3000ページ
(※印刷は1P目がスプールに出されると直ぐに開始される)
100MBPS
AWSも当時は東京リージョンがなく
同様だった
Windows7
/
Corei7 /
Flash10
58
Copyright © Virtual Technology, Inc
- 59.
7.可用性
59
Copyright © Virtual Technology, Inc
- 60.
- 61.
- 62.
実際のところ故障率は?
数ノードであれば故障はほとんどない
• エンタープライズシステムは故障率が低い
• HWが故障しても動き続ける
• SWの理由で停止しても年間1ノードが数十分程
度ぐらい。
• RDBにきちんと格納さえできていれば大丈夫
– RDBの代わりにHBaseはアリかも
• KVSの冗長化は無駄
– 3台に同じデータを書き込むなんて・・・
62
Copyright © Virtual Technology, Inc
- 63.
信頼性と安心感
実績、保守サポート体制が重要
• BDBはOracleの保守サポートを受けられる
– 他のOSSなどと比較すると安心感はある
63
Copyright © Virtual Technology, Inc
- 64.
まとめ
• 分散KVSでスケールアウトを実現
– 実質RDBいらない、過度な冗長機能はいらない
– トランザクション大事
• Thin Server Architecture
– 疎結合、REST、ユーザビリティ
– 本当のボトルネックをなんとかすべき
64
Copyright © Virtual Technology, Inc
- 65.