More Related Content
PPTX
PPTX
PPTX
Webアプリケーション上で 起きている問題の可視化 PDF
PPTX
【PlayFab】ログインと同時にいろんなデータを取得する方法 PDF
PDF
JAWS-UG CLI #19 LT - VM Import by AWS CLI PDF
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT What's hot
PDF
PDF
Inside of Baremetal Server Deployment on Private Cloud PDF
ISUCONの勝ち方 YAPC::Asia Tokyo 2015 PDF
PPTX
AWS VM import / export ハンズオン PDF
Behind-the-Scenes and Goals of LINE Summer Internship Program PDF
PDF
MarketPlaceのAMIをPackerで作る時、 Chefは3度配膳する PPTX
ActionCableのクライアントはRails外から利用できるのか PDF
PDF
WP Booster WordBench Tokyo 20120701 More from LINE Corporation
PDF
PDF
Reduce dependency on Rx with Kotlin Coroutines PDF
Kotlin/NativeでAndroidのNativeメソッドを実装してみた PDF
Use Kotlin scripts and Clova SDK to build your Clova extension PDF
The Magic of LINE 購物 Testing PPTX
PDF
UI Automation Test with JUnit5 PDF
Feature Detection for UI Testing PDF
PDF
PDF
PDF
PDF
LINE Chatbot - 活動報名報到設計分享 PDF
在 LINE 私有雲中使用 Managed Kubernetes PDF
PDF
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹 PDF
LINE Things - LINE IoT平台新技術分享 PDF
PDF
LINE Platform API Update - 打造一個更好的Chatbot服務 PDF
Keynote - LINE 的技術策略佈局與跨國產品開發 LINE 2016 エンジニアインターン 03
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
問題点 - UpgradeComponent
Game Core V1AuthBilling
Game Coreに
すごい機能を追加した、
アップグレードしよう
- 7.
問題点 - UpgradeComponent
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
1. Docker Imageのビルド
Task
Game Core V2
- 8.
問題点 - UpgradeComponent
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
2. Componentの追加
Task
Game Core V2
- 9.
問題点 - UpgradeComponent
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
2. Componentの追加
Task
Game Core V2
- 10.
問題点 - UpgradeComponent
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
3. 設定をコピー
Task
Game Core V2
- 11.
問題点 - UpgradeComponent
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
3. 設定をコピー
Task
Game Core V2
- 12.
問題点 - UpgradeComponent
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
3. 設定をコピー
Task
Game Core V2
人間のやることではない
→ ワンクリッックでやりたい
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
Auto Scaling -Gearbox
AuthBilling
Predicator
Scaler
コンテナ数
増やします
Game Core x 4
CPU使用率が
80%を
超えました
- 24.
- 25.
- 26.
問題点
• UIがない
• Elasticsearchから直
接データを取得・設
定するのは辛い
//Get Scaler Strategy
curl -XGET -d'
{
"query": {
"bool": {
"must": [{
"term": {
"serviceId": "LGTMTM"
}
}, {
"term": {
"phase": "RELEASE"
}
}, {
"term": {
"componentId": "COMP1"
}
}]
}
}
}
'
http://elasticsearch/gearbox_release_configuration/scaler_s
trategy/_search
- 27.
問題点
• UIがない
• Elasticsearchから直
接データを取得・設
定するのは辛い
//Get Scaler Strategy
curl -XGET -d'
{
"query": {
"bool": {
"must": [{
"term": {
"serviceId": "LGTMTM"
}
}, {
"term": {
"phase": "RELEASE"
}
}, {
"term": {
"componentId": "COMP1"
}
}]
}
}
}
'
http://elasticsearch/gearbox_release_configuration/scaler_s
trategy/_search
// Result
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 6,
"successful": 6,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "gearbox_release_configuration",
"_type": "scaler_strategy",
"_id": "1",
"_score": 1,
"_source": {
"serviceId": "LGTMTM",
"phase": "RELEASE",
"componentId": "COMP1",
"emailRecipients": [
"foo@linecorp.com"
],
"hostRole": "CUSTOM",
"scaleOutPolicy": {
"scaleBy": "Count",
"scaleFactor": 1,
"containerNumberLimit": 50
}
}
}
]
}
}
- 28.
問題点
• UIがない
• Elasticsearchから直
接データを取得・設
定するのは辛い
//Get Scaler Strategy
curl -XGET -d'
{
"query": {
"bool": {
"must": [{
"term": {
"serviceId": "LGTMTM"
}
}, {
"term": {
"phase": "RELEASE"
}
}, {
"term": {
"componentId": "COMP1"
}
}]
}
}
}
'
http://elasticsearch/gearbox_release_configuration/scaler_s
trategy/_searchUIを作った
- 29.
- 30.
Future work
• テストを書く(結構書いた)
• Gearbox UIのGameCloud UI (Knife) への埋め込み
• Gearbox UI自体は独立したReact Componentなのでそ
れほど難しくないはず
• スケーリング条件の可視化
• CPU使用率グラフがどうなるとスケールするのか……
みたいなツールチップを出したい
• ツールチップだけ作った
Enzyme + AVA
- 31.
Editor's Notes
- #3 順番に説明するよ〜
- #4 コンポーネントのアップグレードを行うボタン。コンポーネントって何?
Game Cloudの説明をします
- #5 Game CloudはLINE Game用のAWSのようなもの。
ゲームをServiceという単位、その中の機能をComponentとして持つ。
ComponentはContainerという実際のサーバー(仮想)を複数持ちうる。
- #6 たくさんのゲームを管理しやすい。
- #7 コンポーネントのアップグレードについて。
ゲームに新機能を追加した時の現在のアップグレード手順。
- #8 Docker Imageと呼ばれる雛形を作る。
Dockerfileという設定ファイルから作成。
- #9 Docker Imageを利用してServiceにComponentを追加する。
この作業にはServiceの設定ファイルの変更をする必要がある。
- #11 設定を旧verからコピー。例えばデータベースとの接続方法とか。
これもServiceの設定ファイル変更が主
- #12 実際に動作チェックを行う。うまくいったら切り替え。これも設定ファイルの変更が必要。
- #13 人間がやる作業ではない
- #14 設定ファイルを変更する仕組みはチューターさんが作ってくれた。
ボタンがやることはその仕組みを呼び出して、成功を待つ作業。
- #15 実装。コンポーネントをビルドして!というとビルド待ちになる。
ビルドが開始すると情報取得用のURLを取得できる。まずここが1回目の待ち
実際にビルドが完了するまで待つことも必要。Promiseを使うと結構綺麗に書けた。
- #16 GIF
- #17 ちょっとしたtweakもした。
ツールチップの追加。かわいい。
- #18 次はオートスケーリングのUI。オートスケーリングのシステムの名前がGearboxなので
Gearbox-UI。
- #19 オートスケーリングって何?
まずはスケーリングから。ある日新機能を追加したらたくさんの人が接続してきた。
- #20 対処しないとサーバーが落ちて炎上する。
- #21 ここでコンテナ数を増やす。ユーザーのアクセスは4つのコンテナに分散されて処理されるのでたくさんのアクセスに耐えられる。これがスケーリング。
- #22 でもいちいち人が増えたのをチェックしてコンテナを増やすコマンドを人間がするの?
いやなので自動化しましょう。それでオートスケーリング。
- #23 実際のGearboxの仕組み。Predicatorが監視役。
- #24 Predicatorがやばいと思ったらScalerにコンテナを増やせと命令を送る。するとScalerが様々な処理をしてくれてコンテナが増える。人が入らない!
- #25 もう少し詳しいGearboxの仕組み。データを集めるDataCollector。そのデータを利用して条件判断をするPredicator。実際のスケーリングを行うScaler。
- #26 Gearboxの実装手法。
「DataCollectorが集めたデータ
「どの条件でPredicatorがやばいと判断するか」「Scalerがどうスケールするか」は全て同じElasticsearchというデータベースに入れられている。
- #27 仕組みはある。でもUIがない。
今はElasticsearchのAPIを叩いて直接設定やその取得をしないといけない。
実際叩くと右の感じ。長い。
- #28 結果。明らかにヤバい。
- #29 じゃあUIを作ろう。作りました。
- #30 デモ。
- #31 これから。まずテストを書く。将来的な変更で元々ある機能が壊れないことを保証するため。
前半で述べたUIへの埋め込み。Gearbox-UIは独立したReact Componentなのでそこまで難しくないと思う。
スケーリング条件の可視化。CPUがずっと80%以上なら〜みたいな条件をグラフで表示すると直感的に分かりやすそう。ツールチップだけ作った。I'm Tooltip!
- #32 完