Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
LINE internship 2016
最終発表
開発2センター LINEゲーム開発1室
やったこと
• Game Cloud UI への Upgrade Button の追加
• オートスケーリングシステムのUI作成
Upgrade Component Button
Game Cloud
Service
Components
- Alpha
- Beta
- Release
- …
Game CoreAuthBilling
¥
- 複数のContainerを含む
¥
¥
Game Cloud
問題点 - Upgrade Component
Game Core V1AuthBilling
Game Coreに
すごい機能を追加した、
アップグレードしよう
問題点 - Upgrade Component
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
1. Docker Imageのビルド
Task
Game Core V2
問題点 - Upgrade Component
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
2. Componentの追加
Task
Game Core V2
問題点 - Upgrade Component
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
2. Componentの追加
Task
Game Core V2
問題点 - Upgrade Component
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
3. 設定をコピー
Task
Game Core V2
問題点 - Upgrade Component
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
3. 設定をコピー
Task
Game Core V2
問題点 - Upgrade Component
Game Core V1
Game Coreに
すごい機能を追加した、
アップグレードしよう
3. 設定をコピー
Task
Game Core V2
人間のやることではない
→ ワンクリッックでや...
Upgrade Button: 実装
• 前述のタスクを行うJenkins Serverはチューターさんが
用意してくれた
• クリックでそのAPIを呼び出し、ビルド・デプロイが終
了するまで待つ
Upgrade Button: 実装
service.buildComponent(settings)
.then((resp) => {
return pollBuildUrl(resp)
}).then((resp) => {
return...
Upgrade Button
misc
Gearbox-UI
Auto Scaling
Game CoreAuthBilling
アップグレードしたら
ユーザーがたくさん
接続してきた
Auto Scaling
Game CoreAuthBilling
アップグレードしたら
ユーザーがたくさん
接続してきた
炎上
Auto Scaling
Game Core x 4AuthBilling
アップグレードしたら
ユーザーがたくさん
接続してきた
コンテナ数を増やす
Auto Scaling
Game Core x 4AuthBilling
アップグレードしたら
ユーザーがたくさん
接続してきた
コンテナ数を増やす
人間のやることではない
åAuto Scaling - Gearbox
AuthBilling
CPU使用率が
80%を
超えました
Predicator
Game Core
Auto Scaling - Gearbox
AuthBilling
Predicator
Scaler
コンテナ数
増やします
Game Core x 4
CPU使用率が
80%を
超えました
åGearbox: AutoScaling System
Container
Data Collector
CPU Usage
Memory Usage
…
Predicator
CPU is Busy!
CPU Usage > 75%?
Do...
Gearbox: AutoScaling System
問題点
• UIがない
• Elasticsearchから直
接データを取得・設
定するのは辛い
// Get Scaler Strategy
curl -XGET -d'
{
"query": {
"bool": {
"must": [{
"...
問題点
• UIがない
• Elasticsearchから直
接データを取得・設
定するのは辛い
// Get Scaler Strategy
curl -XGET -d'
{
"query": {
"bool": {
"must": [{
"...
問題点
• UIがない
• Elasticsearchから直
接データを取得・設
定するのは辛い
// Get Scaler Strategy
curl -XGET -d'
{
"query": {
"bool": {
"must": [{
"...
demo
Future work
• テストを書く (結構書いた)
• Gearbox UIのGameCloud UI (Knife) への埋め込み
• Gearbox UI自体は独立したReact Componentなのでそ
れほど難しくないはず
• ...
Thank you for listening!
Upcoming SlideShare
Loading in …5
×

LINE 2016 エンジニアインターン 03

25,453 views

Published on

LINE 2016 エンジニアインターン 03

Published in: Internet
  • Be the first to comment

LINE 2016 エンジニアインターン 03

  1. 1. LINE internship 2016 最終発表 開発2センター LINEゲーム開発1室
  2. 2. やったこと • Game Cloud UI への Upgrade Button の追加 • オートスケーリングシステムのUI作成
  3. 3. Upgrade Component Button
  4. 4. Game Cloud Service Components - Alpha - Beta - Release - … Game CoreAuthBilling ¥ - 複数のContainerを含む
  5. 5. ¥ ¥ Game Cloud
  6. 6. 問題点 - Upgrade Component Game Core V1AuthBilling Game Coreに すごい機能を追加した、 アップグレードしよう
  7. 7. 問題点 - Upgrade Component Game Core V1 Game Coreに すごい機能を追加した、 アップグレードしよう 1. Docker Imageのビルド Task Game Core V2
  8. 8. 問題点 - Upgrade Component Game Core V1 Game Coreに すごい機能を追加した、 アップグレードしよう 2. Componentの追加 Task Game Core V2
  9. 9. 問題点 - Upgrade Component Game Core V1 Game Coreに すごい機能を追加した、 アップグレードしよう 2. Componentの追加 Task Game Core V2
  10. 10. 問題点 - Upgrade Component Game Core V1 Game Coreに すごい機能を追加した、 アップグレードしよう 3. 設定をコピー Task Game Core V2
  11. 11. 問題点 - Upgrade Component Game Core V1 Game Coreに すごい機能を追加した、 アップグレードしよう 3. 設定をコピー Task Game Core V2
  12. 12. 問題点 - Upgrade Component Game Core V1 Game Coreに すごい機能を追加した、 アップグレードしよう 3. 設定をコピー Task Game Core V2 人間のやることではない → ワンクリッックでやりたい
  13. 13. Upgrade Button: 実装 • 前述のタスクを行うJenkins Serverはチューターさんが 用意してくれた • クリックでそのAPIを呼び出し、ビルド・デプロイが終 了するまで待つ
  14. 14. Upgrade Button: 実装 service.buildComponent(settings) .then((resp) => { return pollBuildUrl(resp) }).then((resp) => { return pollBuildResult(resp) }).then((resp) => { if (err) showErr(err) success(resp) }) • ComponentのビルドAPIは「 ビルドキューID」を返す • すぐにビルドが始まるわけ ではない • ビルドが開始すると、ビルド の情報が得られるJenkinsの ページのURLが入手できるよ うになる • 結果を待つ
  15. 15. Upgrade Button
  16. 16. misc
  17. 17. Gearbox-UI
  18. 18. Auto Scaling Game CoreAuthBilling アップグレードしたら ユーザーがたくさん 接続してきた
  19. 19. Auto Scaling Game CoreAuthBilling アップグレードしたら ユーザーがたくさん 接続してきた 炎上
  20. 20. Auto Scaling Game Core x 4AuthBilling アップグレードしたら ユーザーがたくさん 接続してきた コンテナ数を増やす
  21. 21. Auto Scaling Game Core x 4AuthBilling アップグレードしたら ユーザーがたくさん 接続してきた コンテナ数を増やす 人間のやることではない
  22. 22. åAuto Scaling - Gearbox AuthBilling CPU使用率が 80%を 超えました Predicator Game Core
  23. 23. Auto Scaling - Gearbox AuthBilling Predicator Scaler コンテナ数 増やします Game Core x 4 CPU使用率が 80%を 超えました
  24. 24. åGearbox: AutoScaling System Container Data Collector CPU Usage Memory Usage … Predicator CPU is Busy! CPU Usage > 75%? Do Scale out Settings is …Scaler
  25. 25. Gearbox: AutoScaling System
  26. 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. 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. 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. 29. demo
  30. 30. Future work • テストを書く (結構書いた) • Gearbox UIのGameCloud UI (Knife) への埋め込み • Gearbox UI自体は独立したReact Componentなのでそ れほど難しくないはず • スケーリング条件の可視化 • CPU使用率グラフがどうなるとスケールするのか…… みたいなツールチップを出したい • ツールチップだけ作った Enzyme + AVA
  31. 31. Thank you for listening!

×