SlideShare une entreprise Scribd logo
1  sur  45
Copyright © DeNA Co.,Ltd. All Rights Reserved.
November 22, 2016
Makoto HARUYAMA
DeNA Co., Ltd.
マイクロサービスっぽい感じの話
Copyright © DeNA Co.,Ltd. All Rights Reserved.
少し自己紹介
2
● 2008年 DeNA入社(みんなのウェディング)
● 2010年 エンジニアになる
● 2011年 DeNA退社 -> 福岡へ
● 2013年 DeNAに出戻り
● 2016年 ゲーム事業本部
Makoto HARUYAMA
● GitHub https://github.com/SpringMT
● Twitter https://twitter.com/Spring_MT
春山 誠
Copyright © DeNA Co.,Ltd. All Rights Reserved.
3
DeNAのゲーム開発について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
4参照元 : http://recruit-games.dena.jp/technology/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
5参照元 : http://recruit-games.dena.jp/technology/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
6参照元 : http://recruit-games.dena.jp/technology/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
7参照元 : http://recruit-games.dena.jp/technology/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
1. Sakashoとは(軽く)
2. マイクロサービスぽい?
3. 最近の取り組み
4. まとめ
8
Copyright © DeNA Co.,Ltd. All Rights Reserved.
9
Sakashoとは
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
ネイティブゲーム用プラットフォーム
Sakasho
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoとは
ネイティブアプリゲーム開発に
必要とされるサーバー機能を
提供するゲームプラットフォーム
ゲーム開発におけるサーバーサイドで
やるべき事をSakashoが一括で受け持
つことで、各開発チームはクライアント側
の開発に専念できる
運用のしやすさも見据えたゲームの
作り方のルールもある程度強いる
11
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ゲーム開発・運用に必要なAPIの提供
● ユーザー情報API
● マスターデータ配信API
● ログインボーナスAPI など
12
Sakashoが提供している機能
● 課金API
● アセット配信API
● CS対応のための機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
SDK
● 課金やPush通知など、OSに依存している機能について
簡単に使えるインターフェースの提供
● Unity、C++のゲームエンジンに対応
13
Sakashoが提供している機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
WebView用インターフェースの提供
● お知らせの配信
● 掲示板
● 利用規約など
14
Sakashoが提供している機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ゲーム専用サーバーとの連携機能
● ゲーム専用サーバーからSakashoにアクセスできるWeb APIを提供
● ゲーム専用サーバーを介してのユーザー情報の取得などに対応
15
Sakashoが提供している機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの機能一覧(一部抜粋)
● マスターデータ配信
● アセット配信
● プレイヤー管理
● お知らせ管理
● アイテム管理
● ログインボーナス
● お問合せ機能
● 課金
● ログ管理
16
● ランキング
● 掲示板
● 補填機能
● メンテナンス
● Push通知
● プレイヤー検索機能
● ギルド
● アプリのバージョン管理
● CS運用ツール
Sakashoが提供している機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
主なリリースタイトル
17
Copyright © DeNA Co.,Ltd. All Rights Reserved.
18
マイクロサービスぽい?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成について(Web View)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マイクロサービス?
役割毎に10の独立したAPIコード群がある
○ メリット
■ 他のAPIへの影響を考えずにデプロイできる
■ リソースを細かく調整できる
○ デメリット
■ 運用工数がかかる(gemの更新とか)
■ 結局サービス毎に人を専用にアサインとかしなかったので、全員
全部見る状態
コード量も少ない(API全部ファイル数が700程度、行数3万行)のでこの規模
だと管理工数のほうが大きい
Sakashoの構成について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マイクロサービスの利点
Sakashoの構成について
● 各サービスは比較的小さくなる
○ コンテナの起動が早くなり、開発のイテレーションが高速になる
● 各サービスのデプロイは独 して える
○ 各サービスを独 して開発していけるので複数のチームが独立して
動く事が出来る
○ 各サービスが独立しているので開発の規模拡大が容易である
● 障害耐性を向上させる
○ 各サービスが完全に独立してるので、影響が他に及ばない
出典 : http://microservices.io/patterns/microservices.html
http://www.slideshare.net/zigorou/microservices-57643957
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マイクロサービスの構成で必要なこと
Sakashoの構成について
● 独立性の確保
○ 開発、デプロイの独立
○ 各サービスは夫々独立したデータベースを持っている
● 各サービスのインターフェース
○ HTTP/RESTのような同期的なプロトコル
○ AMQPのような非同期的なプロトコル
出典 : http://microservices.io/patterns/microservices.html
http://www.slideshare.net/zigorou/microservices-57643957
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成を考える上で
Sakashoの構成について
■ Sakashoはプラットフォームなので、サービスが落ちることは避けたい。
● 障害の影響を最小限に押さえ込みたい
○ workerの枯渇等で一気にサービスダウンになるのを防ぐ
■ 仕様が固まったサービスには極力触らない
● 仕様が固まりリリースされたサービスには手をつけたくない
○ QAもしない(影響範囲に加えない)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
27
マイクロサービスがよいのでは?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
実際は
マイクロサービスぽい?
● サービス毎にデータは隔離されていない
○ データベースが別れてもいないので、どれか1つのサービスでTMC
がでたら、他のサービスも影響を受ける
● サービス毎にロジックが独立になっていない
○ あるサービスのロジックを他のサービスでもつかえるようなgemが
あったりする(本来は各サービスのインターフェースを通して行うは
ず)
○ 共通のgemのアップデート問題
● チーム体制は一チーム(8人〜10人)で開発・運用が続いていて、そこまで
独立性が高くはない
Copyright © DeNA Co.,Ltd. All Rights Reserved.
実際は
マイクロサービスぽい?
● サービスが別れすぎていて、結局全部触るチームなのに、チームにjoinし
てからのキャッチアップが時間がかかる
● 共通化している部分がわからん
Copyright © DeNA Co.,Ltd. All Rights Reserved.
30
1番の問題は?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
あるサービスのロジックを他のサービスでもつ
かえるようなgemがあったりする
マイクロサービスぽい?
● プレイヤーのデータを保存しながら同時にほげほげしたい
例)
● アチーブメント
○ プレイヤーデータの保存とアチーブメント報酬の受け取りを1トラン
ザクションで実行したい
○ ClaimAchievementPrizesAndSave()
Copyright © DeNA Co.,Ltd. All Rights Reserved.
結果生まれたのが
マイクロサービスぽい?
● sakasho-common_models
Copyright © DeNA Co.,Ltd. All Rights Reserved.
なぜ?
マイクロサービスぽい?
● 一貫性を重要視し、不整合が起きない仕組みにする
○ 同一トランザクションでなんとかできないか?
■ プレイヤーの仮想通貨の管理
■ プレイヤーのデータの保存
■ プレイヤーのアイテム管理
● チートはさせたくない
○ ロジックはサーバーによせる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
現在、コードベース整理中
マイクロサービスぽい?
● 管理
○ サービスが別れてて逆に分かりにくくなっている
○ チーム規模は小さい
● サーバーリソースの状況
○ 省メモリのサービス
● サービスを跨いだコードベース・データの共有
○ 影響範囲が読めなくなりつつある
● データベース
○ ほぼ共通になっている
Copyright © DeNA Co.,Ltd. All Rights Reserved.
現在、コードベース整理中
マイクロサービスぽい?
● 今まででも良かった部分もある
○ workerの枯渇等でとあるサービスが止まっても他のサービスに影響
はない状態(DBが詰まるとだめなのはそのまま)
○ APIのコードがそこまで膨れ上がっておらず、省メモリで運用できて
いる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
現在、コードベース整理中
マイクロサービスぽい?
● 一旦コードを1つにまとめる
○ 管理のしやすさ
■ 共通のモジュールはgemではなく、1つのサービスに取り込む
○ サーバーリソースには余裕がある
■ 1つにまとめても問題ない
○ 独立性
■ そもそも1チームしかないので、独立性を持たせることは今は重
要じゃない(将来的に必要になるかもしれないが)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
スケジュール
マイクロサービスぽい?
● コードベースを整理する前に、仕様が変わっていないことを保証するため
に結合テストを準備
○ 2016年上期に集中的に対応
● 2016年下期
○ コードベースの統合に着手
○ deployの整理も合わせてしている
Copyright © DeNA Co.,Ltd. All Rights Reserved.
SDKのテストと自動化
Copyright © DeNA Co.,Ltd. All Rights Reserved.
39
結合テストの整備
● google製のC++テスティングFW
○ https://github.com/google/googletest
○ ライブラリのインストールはいらず、ccファイルをテストコードと一緒
にビルドすればテストの実行ファイルができる
● Xcode(XCTest)と一緒に動かせる
● テスト結果を出力しやすいこと(JUnit形式)
● Native Sakasho SDKが対象
googletestの採用
39
Copyright © DeNA Co.,Ltd. All Rights Reserved.
結合テストの整備
SDK
✔テスト結果を
通知
テストを実行
Slackプラグインで通知も
GitHub pull request builder plugin
で結果を表示
PP
Junit XML
Copyright © DeNA Co.,Ltd. All Rights Reserved.
41
結合テストの整備
SDKのテスト(iOS)
41
Copyright © DeNA Co.,Ltd. All Rights Reserved.
現在、コードベース整理中
マイクロサービスぽい?
● 自動テストも整備が終わって
○ 粛々とAPIを一緒にしている
■ 全部ロードさせる
■ 最初は統合のみ、改善は後で
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ゲーム開発を支えるプラットフォームSakasho
○ Sakashoがサーバー側の運用を一括で受け持つことで
各ゲームタイトルはゲーム開発に集中できる
マイクロサービスぽい構成からモノリシックな構成に直してる
○ 管理コストの削減が狙い
○ まだ途中なので、後日談も発表したいですね
まとめ
Copyright © DeNA Co.,Ltd. All Rights Reserved.
44
最近の取り組み
44
2017/2/10 FRI 13:00-20:30
SHIBUYA HIKARIE HALL A/B
Copyright © DeNA Co.,Ltd. All Rights Reserved.
45
最近の取り組み
SDKのテスト
45
● SWETチームとの共同作業
参照元 : https://career.dena.jp/job.phtml?job_code=476

Contenu connexe

Tendances

MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜KLab Inc. / Tech
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までMasahito Zembutsu
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveTokoroten Nakayama
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
型安全性入門
型安全性入門型安全性入門
型安全性入門Akinori Abe
 
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話Yuhei Miyazato
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介T. Suwa
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介MITSUNARI Shigeo
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門Hiroyuki Wada
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門Shuji Yamada
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?土岐 孝平
 

Tendances (20)

MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
 

Similaire à マイクロサービスっぽい感じの話

DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceMakoto Haruyama
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNA
 
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)さくらインターネット株式会社
 
デブサミ2013LT大会 Japan SenchaUG
デブサミ2013LT大会 Japan SenchaUGデブサミ2013LT大会 Japan SenchaUG
デブサミ2013LT大会 Japan SenchaUGdsuke Takaoka
 
多対多のクラウド利用を支えるデータ標準化技術
多対多のクラウド利用を支えるデータ標準化技術 多対多のクラウド利用を支えるデータ標準化技術
多対多のクラウド利用を支えるデータ標準化技術 CData Software Japan
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!
Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!
Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!Kazuya Sugimoto
 
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~Ouka Yuka
 
初心者がWio LTEで作った話~IN 名古屋ハッカソン 2017~
初心者がWio LTEで作った話~IN 名古屋ハッカソン 2017~初心者がWio LTEで作った話~IN 名古屋ハッカソン 2017~
初心者がWio LTEで作った話~IN 名古屋ハッカソン 2017~Shingo Makino
 
Idcfクラウドhw占有タイプ開発話
Idcfクラウドhw占有タイプ開発話Idcfクラウドhw占有タイプ開発話
Idcfクラウドhw占有タイプ開発話IDC Frontier
 
エンジニアからCTOへ 2015-06-11 IVS CTO Night & Day
エンジニアからCTOへ 2015-06-11 IVS CTO Night & DayエンジニアからCTOへ 2015-06-11 IVS CTO Night & Day
エンジニアからCTOへ 2015-06-11 IVS CTO Night & Day株式会社MonotaRO Tech Team
 
OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性Hirofumi Ichihara
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについてMasahito Zembutsu
 
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装において何に気をつけるべきかDrupalによる大規模サイトの設計・実装において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきかdgcircus
 
デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介Keiji Kamebuchi
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容sairoutine
 
SORACOM Canalを使った キャンペーン端末事
SORACOM Canalを使った キャンペーン端末事SORACOM Canalを使った キャンペーン端末事
SORACOM Canalを使った キャンペーン端末事Tosihiyuki Hirai
 
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)株式会社MonotaRO Tech Team
 

Similaire à マイクロサービスっぽい感じの話 (20)

DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
 
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
 
MonotaRO TechTalk #1 ごあいさつ
MonotaRO TechTalk #1 ごあいさつMonotaRO TechTalk #1 ごあいさつ
MonotaRO TechTalk #1 ごあいさつ
 
デブサミ2013LT大会 Japan SenchaUG
デブサミ2013LT大会 Japan SenchaUGデブサミ2013LT大会 Japan SenchaUG
デブサミ2013LT大会 Japan SenchaUG
 
多対多のクラウド利用を支えるデータ標準化技術
多対多のクラウド利用を支えるデータ標準化技術 多対多のクラウド利用を支えるデータ標準化技術
多対多のクラウド利用を支えるデータ標準化技術
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!
Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!
Mulesoft meetup #02 Anypointで日本のクラウドサービスを繋いでみた!
 
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
 
初心者がWio LTEで作った話~IN 名古屋ハッカソン 2017~
初心者がWio LTEで作った話~IN 名古屋ハッカソン 2017~初心者がWio LTEで作った話~IN 名古屋ハッカソン 2017~
初心者がWio LTEで作った話~IN 名古屋ハッカソン 2017~
 
Idcfクラウドhw占有タイプ開発話
Idcfクラウドhw占有タイプ開発話Idcfクラウドhw占有タイプ開発話
Idcfクラウドhw占有タイプ開発話
 
エンジニアからCTOへ 2015-06-11 IVS CTO Night & Day
エンジニアからCTOへ 2015-06-11 IVS CTO Night & DayエンジニアからCTOへ 2015-06-11 IVS CTO Night & Day
エンジニアからCTOへ 2015-06-11 IVS CTO Night & Day
 
OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装において何に気をつけるべきかDrupalによる大規模サイトの設計・実装において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきか
 
デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
 
SORACOM Canalを使った キャンペーン端末事
SORACOM Canalを使った キャンペーン端末事SORACOM Canalを使った キャンペーン端末事
SORACOM Canalを使った キャンペーン端末事
 
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
 
20180319 ccon sync kintone
20180319 ccon sync kintone20180319 ccon sync kintone
20180319 ccon sync kintone
 

Plus de Makoto Haruyama

Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Makoto Haruyama
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてMakoto Haruyama
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1Makoto Haruyama
 
fluent-plugin-resque_stat
fluent-plugin-resque_statfluent-plugin-resque_stat
fluent-plugin-resque_statMakoto Haruyama
 
初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談Makoto Haruyama
 
初心者エンジニアの システム構築 失敗談
初心者エンジニアの システム構築 失敗談初心者エンジニアの システム構築 失敗談
初心者エンジニアの システム構築 失敗談Makoto Haruyama
 
Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2Makoto Haruyama
 
分散ファイルストレージ
分散ファイルストレージ分散ファイルストレージ
分散ファイルストレージMakoto Haruyama
 
Automation tech casual_talks_1_20120717
Automation tech casual_talks_1_20120717Automation tech casual_talks_1_20120717
Automation tech casual_talks_1_20120717Makoto Haruyama
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1Makoto Haruyama
 
20110622 haruyama webso]cket
20110622 haruyama webso]cket20110622 haruyama webso]cket
20110622 haruyama webso]cketMakoto Haruyama
 

Plus de Makoto Haruyama (13)

Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1
 
Fluentd in Co-Work
Fluentd in Co-WorkFluentd in Co-Work
Fluentd in Co-Work
 
fluent-plugin-resque_stat
fluent-plugin-resque_statfluent-plugin-resque_stat
fluent-plugin-resque_stat
 
初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談初心者エンジニアのシステム構築失敗談
初心者エンジニアのシステム構築失敗談
 
初心者エンジニアの システム構築 失敗談
初心者エンジニアの システム構築 失敗談初心者エンジニアの システム構築 失敗談
初心者エンジニアの システム構築 失敗談
 
Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2Mysql casual fukuoa_vlo_2
Mysql casual fukuoa_vlo_2
 
Yapc2012 ltthon
Yapc2012 ltthonYapc2012 ltthon
Yapc2012 ltthon
 
分散ファイルストレージ
分散ファイルストレージ分散ファイルストレージ
分散ファイルストレージ
 
Automation tech casual_talks_1_20120717
Automation tech casual_talks_1_20120717Automation tech casual_talks_1_20120717
Automation tech casual_talks_1_20120717
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
20110622 haruyama webso]cket
20110622 haruyama webso]cket20110622 haruyama webso]cket
20110622 haruyama webso]cket
 

マイクロサービスっぽい感じの話

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. November 22, 2016 Makoto HARUYAMA DeNA Co., Ltd. マイクロサービスっぽい感じの話
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. 少し自己紹介 2 ● 2008年 DeNA入社(みんなのウェディング) ● 2010年 エンジニアになる ● 2011年 DeNA退社 -> 福岡へ ● 2013年 DeNAに出戻り ● 2016年 ゲーム事業本部 Makoto HARUYAMA ● GitHub https://github.com/SpringMT ● Twitter https://twitter.com/Spring_MT 春山 誠
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. 3 DeNAのゲーム開発について
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA for GAME CREATORS 4参照元 : http://recruit-games.dena.jp/technology/
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA for GAME CREATORS 5参照元 : http://recruit-games.dena.jp/technology/
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA for GAME CREATORS 6参照元 : http://recruit-games.dena.jp/technology/
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA for GAME CREATORS 7参照元 : http://recruit-games.dena.jp/technology/
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること 1. Sakashoとは(軽く) 2. マイクロサービスぽい? 3. 最近の取り組み 4. まとめ 8
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. 9 Sakashoとは
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA for GAME CREATORS ネイティブゲーム用プラットフォーム Sakasho
  • 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. Sakashoとは ネイティブアプリゲーム開発に 必要とされるサーバー機能を 提供するゲームプラットフォーム ゲーム開発におけるサーバーサイドで やるべき事をSakashoが一括で受け持 つことで、各開発チームはクライアント側 の開発に専念できる 運用のしやすさも見据えたゲームの 作り方のルールもある程度強いる 11
  • 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. ゲーム開発・運用に必要なAPIの提供 ● ユーザー情報API ● マスターデータ配信API ● ログインボーナスAPI など 12 Sakashoが提供している機能 ● 課金API ● アセット配信API ● CS対応のための機能
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. SDK ● 課金やPush通知など、OSに依存している機能について 簡単に使えるインターフェースの提供 ● Unity、C++のゲームエンジンに対応 13 Sakashoが提供している機能
  • 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. WebView用インターフェースの提供 ● お知らせの配信 ● 掲示板 ● 利用規約など 14 Sakashoが提供している機能
  • 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. ゲーム専用サーバーとの連携機能 ● ゲーム専用サーバーからSakashoにアクセスできるWeb APIを提供 ● ゲーム専用サーバーを介してのユーザー情報の取得などに対応 15 Sakashoが提供している機能
  • 16. Copyright © DeNA Co.,Ltd. All Rights Reserved. Sakashoの機能一覧(一部抜粋) ● マスターデータ配信 ● アセット配信 ● プレイヤー管理 ● お知らせ管理 ● アイテム管理 ● ログインボーナス ● お問合せ機能 ● 課金 ● ログ管理 16 ● ランキング ● 掲示板 ● 補填機能 ● メンテナンス ● Push通知 ● プレイヤー検索機能 ● ギルド ● アプリのバージョン管理 ● CS運用ツール Sakashoが提供している機能
  • 17. Copyright © DeNA Co.,Ltd. All Rights Reserved. 主なリリースタイトル 17
  • 18. Copyright © DeNA Co.,Ltd. All Rights Reserved. 18 マイクロサービスぽい?
  • 19. Copyright © DeNA Co.,Ltd. All Rights Reserved. Sakashoの構成について
  • 20. Copyright © DeNA Co.,Ltd. All Rights Reserved. Sakashoの構成について
  • 21. Copyright © DeNA Co.,Ltd. All Rights Reserved. Sakashoの構成について(Web View)
  • 22. Copyright © DeNA Co.,Ltd. All Rights Reserved. マイクロサービス? 役割毎に10の独立したAPIコード群がある ○ メリット ■ 他のAPIへの影響を考えずにデプロイできる ■ リソースを細かく調整できる ○ デメリット ■ 運用工数がかかる(gemの更新とか) ■ 結局サービス毎に人を専用にアサインとかしなかったので、全員 全部見る状態 コード量も少ない(API全部ファイル数が700程度、行数3万行)のでこの規模 だと管理工数のほうが大きい Sakashoの構成について
  • 23. Copyright © DeNA Co.,Ltd. All Rights Reserved. マイクロサービスの利点 Sakashoの構成について ● 各サービスは比較的小さくなる ○ コンテナの起動が早くなり、開発のイテレーションが高速になる ● 各サービスのデプロイは独 して える ○ 各サービスを独 して開発していけるので複数のチームが独立して 動く事が出来る ○ 各サービスが独立しているので開発の規模拡大が容易である ● 障害耐性を向上させる ○ 各サービスが完全に独立してるので、影響が他に及ばない 出典 : http://microservices.io/patterns/microservices.html http://www.slideshare.net/zigorou/microservices-57643957
  • 24. Copyright © DeNA Co.,Ltd. All Rights Reserved. マイクロサービスの構成で必要なこと Sakashoの構成について ● 独立性の確保 ○ 開発、デプロイの独立 ○ 各サービスは夫々独立したデータベースを持っている ● 各サービスのインターフェース ○ HTTP/RESTのような同期的なプロトコル ○ AMQPのような非同期的なプロトコル 出典 : http://microservices.io/patterns/microservices.html http://www.slideshare.net/zigorou/microservices-57643957
  • 25. Copyright © DeNA Co.,Ltd. All Rights Reserved. Sakashoの構成を考える上で Sakashoの構成について ■ Sakashoはプラットフォームなので、サービスが落ちることは避けたい。 ● 障害の影響を最小限に押さえ込みたい ○ workerの枯渇等で一気にサービスダウンになるのを防ぐ ■ 仕様が固まったサービスには極力触らない ● 仕様が固まりリリースされたサービスには手をつけたくない ○ QAもしない(影響範囲に加えない)
  • 26. Copyright © DeNA Co.,Ltd. All Rights Reserved. Sakashoの構成について
  • 27. Copyright © DeNA Co.,Ltd. All Rights Reserved. 27 マイクロサービスがよいのでは?
  • 28. Copyright © DeNA Co.,Ltd. All Rights Reserved. 実際は マイクロサービスぽい? ● サービス毎にデータは隔離されていない ○ データベースが別れてもいないので、どれか1つのサービスでTMC がでたら、他のサービスも影響を受ける ● サービス毎にロジックが独立になっていない ○ あるサービスのロジックを他のサービスでもつかえるようなgemが あったりする(本来は各サービスのインターフェースを通して行うは ず) ○ 共通のgemのアップデート問題 ● チーム体制は一チーム(8人〜10人)で開発・運用が続いていて、そこまで 独立性が高くはない
  • 29. Copyright © DeNA Co.,Ltd. All Rights Reserved. 実際は マイクロサービスぽい? ● サービスが別れすぎていて、結局全部触るチームなのに、チームにjoinし てからのキャッチアップが時間がかかる ● 共通化している部分がわからん
  • 30. Copyright © DeNA Co.,Ltd. All Rights Reserved. 30 1番の問題は?
  • 31. Copyright © DeNA Co.,Ltd. All Rights Reserved. あるサービスのロジックを他のサービスでもつ かえるようなgemがあったりする マイクロサービスぽい? ● プレイヤーのデータを保存しながら同時にほげほげしたい 例) ● アチーブメント ○ プレイヤーデータの保存とアチーブメント報酬の受け取りを1トラン ザクションで実行したい ○ ClaimAchievementPrizesAndSave()
  • 32. Copyright © DeNA Co.,Ltd. All Rights Reserved. 結果生まれたのが マイクロサービスぽい? ● sakasho-common_models
  • 33. Copyright © DeNA Co.,Ltd. All Rights Reserved. なぜ? マイクロサービスぽい? ● 一貫性を重要視し、不整合が起きない仕組みにする ○ 同一トランザクションでなんとかできないか? ■ プレイヤーの仮想通貨の管理 ■ プレイヤーのデータの保存 ■ プレイヤーのアイテム管理 ● チートはさせたくない ○ ロジックはサーバーによせる
  • 34. Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在、コードベース整理中 マイクロサービスぽい? ● 管理 ○ サービスが別れてて逆に分かりにくくなっている ○ チーム規模は小さい ● サーバーリソースの状況 ○ 省メモリのサービス ● サービスを跨いだコードベース・データの共有 ○ 影響範囲が読めなくなりつつある ● データベース ○ ほぼ共通になっている
  • 35. Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在、コードベース整理中 マイクロサービスぽい? ● 今まででも良かった部分もある ○ workerの枯渇等でとあるサービスが止まっても他のサービスに影響 はない状態(DBが詰まるとだめなのはそのまま) ○ APIのコードがそこまで膨れ上がっておらず、省メモリで運用できて いる
  • 36. Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在、コードベース整理中 マイクロサービスぽい? ● 一旦コードを1つにまとめる ○ 管理のしやすさ ■ 共通のモジュールはgemではなく、1つのサービスに取り込む ○ サーバーリソースには余裕がある ■ 1つにまとめても問題ない ○ 独立性 ■ そもそも1チームしかないので、独立性を持たせることは今は重 要じゃない(将来的に必要になるかもしれないが)
  • 37. Copyright © DeNA Co.,Ltd. All Rights Reserved. スケジュール マイクロサービスぽい? ● コードベースを整理する前に、仕様が変わっていないことを保証するため に結合テストを準備 ○ 2016年上期に集中的に対応 ● 2016年下期 ○ コードベースの統合に着手 ○ deployの整理も合わせてしている
  • 38. Copyright © DeNA Co.,Ltd. All Rights Reserved. SDKのテストと自動化
  • 39. Copyright © DeNA Co.,Ltd. All Rights Reserved. 39 結合テストの整備 ● google製のC++テスティングFW ○ https://github.com/google/googletest ○ ライブラリのインストールはいらず、ccファイルをテストコードと一緒 にビルドすればテストの実行ファイルができる ● Xcode(XCTest)と一緒に動かせる ● テスト結果を出力しやすいこと(JUnit形式) ● Native Sakasho SDKが対象 googletestの採用 39
  • 40. Copyright © DeNA Co.,Ltd. All Rights Reserved. 結合テストの整備 SDK ✔テスト結果を 通知 テストを実行 Slackプラグインで通知も GitHub pull request builder plugin で結果を表示 PP Junit XML
  • 41. Copyright © DeNA Co.,Ltd. All Rights Reserved. 41 結合テストの整備 SDKのテスト(iOS) 41
  • 42. Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在、コードベース整理中 マイクロサービスぽい? ● 自動テストも整備が終わって ○ 粛々とAPIを一緒にしている ■ 全部ロードさせる ■ 最初は統合のみ、改善は後で
  • 43. Copyright © DeNA Co.,Ltd. All Rights Reserved. ゲーム開発を支えるプラットフォームSakasho ○ Sakashoがサーバー側の運用を一括で受け持つことで 各ゲームタイトルはゲーム開発に集中できる マイクロサービスぽい構成からモノリシックな構成に直してる ○ 管理コストの削減が狙い ○ まだ途中なので、後日談も発表したいですね まとめ
  • 44. Copyright © DeNA Co.,Ltd. All Rights Reserved. 44 最近の取り組み 44 2017/2/10 FRI 13:00-20:30 SHIBUYA HIKARIE HALL A/B
  • 45. Copyright © DeNA Co.,Ltd. All Rights Reserved. 45 最近の取り組み SDKのテスト 45 ● SWETチームとの共同作業 参照元 : https://career.dena.jp/job.phtml?job_code=476