Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
AndApp開発の全て
Atsushi Kobayashi
General Manager
Systems Development Dept.
Open Platform Business Unit
DeNA
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
自己紹介
• 小林 篤
⁃ 2011/03にDeNAに入社
⁃ MobageOpenPlatformのAPI/ProxyServer開発に従事
⁃ オープンプラットフォーム事業本部 システム開発部 部長
• Mobage全般・MobageOpenPlatform、協業Platform事業などの開発責任者
⁃ 一般社団法人JapanPerlAssociation 代表理事
• YAPC(Yet Anoter Perl Conference)などを主催しPerlの普及振興に尽力
⁃ Perl Hacker
• 自作のライブラリが日本の有名企業各所でも利用
⁃ 最近では社内GCP(GoogleCloudPlatform)エバンジェリスト的な活動
も
• 特別エバンジェリスト程詳しくもないですが…
2
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
AndAppとは
3
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
AndAppとは
• DeNAが新しく提供するPC向けのアプリケーションプラットフォーム
⁃ スマホでもPCでも遊べる場の提供
• 2016年11月にサービスローンチ
• 現在では11タイトルがリリース済
⁃ 今後続々リリース予定
4
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
AndAppとは
• 完全ド新規サービスなのでシステムをフルスクラッチで開発
• 本日は本システムの開発の裏側を余すところなくお伝え致します
5
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
開発現場の過去と現在
6
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
過去
• 今までの開発手法と技術スタック
⁃ Infra
• 基本オンプレ
• パブリッククラウドを使ってもサーバインスタンスの上にオンプレライクな
環境を構築
⁃ 開発言語はサーバはPerlがメイン
• DeNA内部要素に特化したライブラリが整備されている
• Perlでの開発に慣れ親しんだエンジニアが多い
⁃ JSON Schemaやmicroservice、JWTを積極的に導入
⁃ 認証/認可ではOpenID Connect等の標準仕様に則った設計/開発や
JWT(JSON Web Token)等を積極的に活用
7
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
現在
• 今の開発手法と技術スタック
⁃ Infra
• GCP(Google Cloud Platform)の中のGoogleAppEngineを積極的に活用しほ
ぼ全てのシステムをGAEで提供
⁃ 開発言語はサーバをgolangに変更
• GAE SE(Standard Environment)でPerlをサポートしていない為
⁃ JSON Schema/microservice/OIDC/JWTなどの技術は引き続き利用
8
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
過去 to 現在
• 何故変えたのか?
• 変える必要あったのか?
• 変えてどうだったのか
9
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
何故変えたのか
• 変えたかったから!
10
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
第一部完
11
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
何故変えたのか1
• Infra
⁃ 運用という名の苦行
• 運用はとても大切です
⁃ 大規模システムになればなるほど使うサーバ台数が多くなる
• 故障率というのがあってだな
⁃ 台数が多くなるとメンテナンスコストが高くなる
• 故障率(ry
• セキュリティパッチ等
• オペミスの確率も上がる
⁃ 多数のサーバ管理を効率化する為の自動化するにも工数がかかる
• 歴史的背景等もあるわけです
• 歴史・経験があるからこその独自ツール
• 其の環境でしか使えないナレッジ
12
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
変える必要があったのか
• 究極変えなくてもやっていける
• ただ既存のテクノロジーの上でヌクヌクしていると、数年後には其の環境
でしかやっていけない人材になってしまう
• 現状維持は退化でしかなく、挑戦し続けることで第一線で戦い続けられる
• フルスクラッチでシステム開発出来る機会なんて早々ない。
• つまり今しかない!
13
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
何故変えたのか2
• 人の工数は有限
• システムを開発・運用する上でどうしても必要となる工数以外はサービス
を創る工数に回したい・回すべき
• 人間の頭脳を余すところなく最大限モノづくりに投入したい
• 周辺テクノロジーでそれを実現出来るものがある!
• 使わないわけには!
14
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
技術選定
15
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
GoogleAppEngine
• 運用コスト等を最大限抑えることが第一のお題
• パブリッククラウドで提供されるフルマネージドサービスをフル活用する
べく様々なサービスの検討を開始
ではないんです
16
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
GCP ManagedVM
• 本検討の少し前にGCPのManagedVMというサービスがβ提供始まった
• 簡単に言うとManagedVMは好きなプログラミング言語をランタイムに選
べるGAEみたいなもの
• DeNAのエンジニアはPerlに慣れ親しんでいるので開発言語をPerlのまま
でGCP ManagedVMを利用すれば丁度いい感じにマネージドされる環境を
構築できるんじゃないか
• ということでPerl on ManagedVMという技術スタックで一部システムの
開発を先行させる
• なので、他のパブリッククラウドのサービスを細かく調べてはいません
⁃ ある程度情報は持ってる、何ができそうかのイメージはあるが精緻に
は調べてない
17
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
GCP ManagedVM
• 実際にManagedVM上で開発してみるも、GCPの各サービスやAPIとつな
ぐのにライブラリの開発から必要だった!
⁃ そらそうだ
• βサービスということもありGAEほどこなれておらずtry&errorがかなり多
くなってしまった
⁃ βですし…
• パフォーマンスも思った以上に出ず、チューニングにかなり工数が取られ
そうだった
• ManagedVMは人類には早かった
⁃ ちなみに今はGoogleAppEngine FlexibleEnvironmentと名称等が変
わっております
18
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
Google Container Engine(GKE)
• ManagedVMで1機能作るのに並行してGKEでも1機能作り始めた
• GAE系ではネットワーク周りの制限が一部あるので、その制限を受けられ
ない機能を開発する場合は違う技術選定をする必要がある
• Google Compute Engine(GCE)をつかう事も当然できるがお題に反する
• GKEを活用して上手く構成を組めればフルマネージドサービスに近いシス
テム構築が可能ではある
• 色々試行錯誤し実際に開発したが…
• もっと楽にできないのかっ!何気にめんどくさい!
19
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
Firebase
• GKEでは通知関連のシステムを作ろうとしていたのでGCPファミリーにな
ったFirebaseの利用を検討
• 通知の基盤としてはFirebaseを活用し、周辺APIをGAEで作ることでフル
マネージド!
20
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
と、言う感じで
• 幾つかの試行錯誤の上、我々が求めるものを一番満たしてくれるのはGAE
のStandard Environmentだという結論に至る
• サクッとGAE/go+Firebaseでシステム開発を始めたわけではなく、幾つ
かの試行錯誤と失敗を積み重ねました
• ただ、あるテクノロジーが有用なのかどうか、その場のニーズに合うかど
うかを見極めるには実際に使ってみるのが一番
21
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
GAE SEに決めてから
• GAE SEにすると意思決定した後に開発言語を再選定する必要があった
⁃ Java7
⁃ PHP
⁃ Python 2.7
⁃ Go
• 今までPerlというLL言語を利用していたので折角ならLL以外で。
• ということでPHPとPythonは除外
• Perlエンジニア的にはGoが一番良いというウワサとJavaが嫌いという同
しようもない理由でGoとしました(え
⁃ 実際Perl Hacker達は最近ではGoを使うことが多いですね
⁃ GAEとの相性も良い
• Footprintが軽くspin-upしてくる時間がJavaと比べると圧倒的
22
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
システムアーキテクチャ
23
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
AndApp System Overview
24
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
基本構成
• 機能単位でコンポーネントを分割
⁃ User / Notification / 分析 / 決済などの単位
• コンポーネント毎にGAEのサービスとして配置
• データストアにはDatastoreを利用
⁃ RDBMSを使わない選択!
• Go
⁃ WebApplicationフレームワークにはGinを採用(一部echo)
⁃ DatastoreライブラリとしてはGoonを採用
• 分析用途としてはBigQueryを採用
• Log管理はStackdriver Logging
• 監視はStackdriver
• システムメトリックスはGCPのコンソール
• Theフルマネージド
25
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
なぜDatastore
• GCP上でRDBSを利用するとするとCloudSQLが選択肢に入る
⁃ GCE上にMySQLを立てるとかもできるけど趣旨に反する
• ただCloudSQLが思った以上にパフォーマンスが出ない
⁃ 途中でパフォーマンス改善はあったものの
• PokemonGoでの実績
• 郷に入っては郷に従え
26
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
開発体制
27
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
チーム構成
• 大まかな機能単位でチーム構成
⁃ 一人チームもあれば2〜3人チームもあり、最大でも1チーム5名程
度
⁃ 総開発人員数は25名程
• Microserviceでの開発を行っており、1機能1コンポーネント1リポジト
リ1サービスという形の開発を行っているので開発そのものは複数のチー
ムに分かれて実施可能
28
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
チームを細切れにしてもワークした理由
• チームメンバーが多く、かつチームが細切れだと空中分解しかねない
• そうさせないために
⁃ 各チームのリードエンジニア陣をあつめたDSを実施
⁃ 共通基盤チームを用意しライブラリや開発作法ほ基本統一
⁃ JSON Schemaを活用しI/Fの可視化とValidationで利用
⁃ Documentのフォーマットを決めDocument Firstでの開発
29
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
GAE+microservice
• なにげに相性が良い
• 1コンポーネントがGAEの1サービスとなり、他コンポーネントに基本影
響されずに管理が可能
⁃ オンプレなどではどのサーバにどのコンポーネントをdeployするか
⁃ LBやProxyの設定をどのようにするかの管理が複雑…
• ただし1プロジェクトあたりの利用可能Service数が20なので要注意
⁃ 相談すれば上限突破してくれるかも
⁃ 現時点で我々は26サービスを利用している
30
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
コスト
31
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
コスト is 何?
• 一番イメージしやすいのは
⁃ サーバ購入費
⁃ データセンター関連の諸費用
• 忘れがちなのが人件費
• なかなか思いつかないのはコミュニケーションコスト
32
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
コスト(サーバ・DC)
• 当然必要な台数を用意する必要があるので初期費用がかかります
• パブリッククラウドって一般的にはこういう初期費用をかけずに利用でき
るのがウリだったりしますよね
• オンプレでサーバを用意する場合、例えば他サービスで余ったサーバを回
してもらう、減価償却切れのサーバを回してもらうとすれば初期費用はお
さえらえれるかもしれない
• DCのコスト(ラック・電源・ネットワーク・etc)はどうしてもかかって
いく。規模によってはボリュームディスカウント効くけど
⁃ 前職ではサービス規模に対して結構な額になったり
33
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
コスト(人件費)
• 何かを安定的に維持するには人が必要
• サービス開発以外にInfraをお守りする必要がありそこで働く人のコスト
が発生する
• 規模が大きくなれば必要とする人も多く必要になってくる
34
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
コスト(コミュニケーション)
• 情報共有はとても大切
⁃ 大規模開発になりチームが細切れだったりチーム人数が多ければ特に
• とても大切だし必要なんだけど関係者が膨れ上がるとそれはコストになる
• 営業・企画・デザイナー・エンジニア・QA・法務・などなど関係者が膨
らんでくるともう大変
• 密室ではなくシンプルに出来るところはする
35
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
まとめ
36
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
まとめ
• 既存の技術や運用にとらわれない事
• モノづくりに集中出来る環境を如何に用意できるか
• 今回の例は実はかなりチャレンジング
⁃ もっとスモールスタートしてもいい
⁃ つまり既存のシステム・サービスの一部から始めるもよい
• 新しい取り組みに失敗はつきもの
⁃ 失敗を許容しよう、そこから学ぼう
• 振り返ろう
⁃ やって満足しない。課題はいっぱいある
• 一番大切なことは
⁃ めいいっぱい楽しむこと。ワクワクしよう!
37

More Related Content

PPTX
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
PPTX
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
PDF
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
PPTX
DeNAのプログラミング教育の取り組み #denatechcon
PPTX
DeNA private cloudのその後 #denatechcon
PPTX
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
PPTX
DebugHeadを使ったiOSアプリ開発手法 #denatechcon
PPTX
革新的ブラウザゲームを支えるプラットフォーム技術
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
DeNAのプログラミング教育の取り組み #denatechcon
DeNA private cloudのその後 #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DebugHeadを使ったiOSアプリ開発手法 #denatechcon
革新的ブラウザゲームを支えるプラットフォーム技術

What's hot (20)

PDF
サービスの成長を支えるフロントエンド開発 #denatechcon
PDF
Unityアバターアプリ開発パッケージのご提案
PDF
これからの Microservices
PDF
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
PDF
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
PPTX
DeNAが取り組む Software Engineer in Test
PPTX
Unityネイティブプラグインマニアクス #denatechcon
PDF
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
PPTX
Unityで本格戦国シュミレーションRPG 開発
PDF
DeNAのゲーム開発を支える技術 (クライアントサイド編)
PPTX
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
PDF
FFRKを支えるWebアプリケーションフレームワークの技術
PDF
チラシルiOSでの広告枠開発
PPTX
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
PDF
B2B2Cなヘルスケアサービスの作り方
PPTX
マンガボックスのiOS10プッシュ通知導入事例
PDF
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
PPTX
Anyca におけるUIフレームワークと スマホによるドア操作の仕組み
PDF
DeNAインフラの今とこれから - 今編 -
PPTX
技術選択とアーキテクトの役割 (要約版)
サービスの成長を支えるフロントエンド開発 #denatechcon
Unityアバターアプリ開発パッケージのご提案
これからの Microservices
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
DeNAが取り組む Software Engineer in Test
Unityネイティブプラグインマニアクス #denatechcon
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
Unityで本格戦国シュミレーションRPG 開発
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
FFRKを支えるWebアプリケーションフレームワークの技術
チラシルiOSでの広告枠開発
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
B2B2Cなヘルスケアサービスの作り方
マンガボックスのiOS10プッシュ通知導入事例
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
Anyca におけるUIフレームワークと スマホによるドア操作の仕組み
DeNAインフラの今とこれから - 今編 -
技術選択とアーキテクトの役割 (要約版)
Ad

Viewers also liked (20)

PPTX
ScalaからGoへ
PDF
AWS X-Rayによるアプリケーションの分析とデバッグ
PDF
SLOのすすめ
PDF
golang.tokyo #6 (in Japanese)
PPTX
MongoDBの可能性の話
PDF
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
PDF
Blockchain on Go
PDF
Apache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
PDF
神に近づくx/net/context (Finding God with x/net/context)
PDF
An introduction and future of Ruby coverage library
PDF
Microservices at Mercari
PDF
Fast and Reliable Swift APIs with gRPC
PDF
Swaggerでのapi開発よもやま話
PDF
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
PDF
So You Wanna Go Fast?
PPTX
Solving anything in VCL
PDF
Google Home and Google Assistant Workshop: Build your own serverless Action o...
PDF
Spark Streaming Programming Techniques You Should Know with Gerard Maas
PPTX
リクルートを支える横断データ基盤と機械学習の適用事例
PDF
「サーバレスの薄い本」からの1年 #serverlesstokyo
ScalaからGoへ
AWS X-Rayによるアプリケーションの分析とデバッグ
SLOのすすめ
golang.tokyo #6 (in Japanese)
MongoDBの可能性の話
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Blockchain on Go
Apache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
神に近づくx/net/context (Finding God with x/net/context)
An introduction and future of Ruby coverage library
Microservices at Mercari
Fast and Reliable Swift APIs with gRPC
Swaggerでのapi開発よもやま話
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
So You Wanna Go Fast?
Solving anything in VCL
Google Home and Google Assistant Workshop: Build your own serverless Action o...
Spark Streaming Programming Techniques You Should Know with Gerard Maas
リクルートを支える横断データ基盤と機械学習の適用事例
「サーバレスの薄い本」からの1年 #serverlesstokyo
Ad

Similar to AndApp開発における全て #denatechcon (20)

PPTX
DataEngConf NYC’18 セッションサマリー #2
PDF
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
PPTX
エンジニアという職業について
PDF
Intalio japan special cloud workshop
PPT
Google Product
PDF
MuleアプリケーションのCI/CD
PPTX
Rails on GKEで運用するWebアプリケーションの紹介
PDF
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
PPTX
Dangerでpull requestレビューの指摘事項を減らす
PPTX
Jenkins+Gitによる検証済みマージ(30分版)
PPTX
バージョンアップ対応を軽減するサービス:マスティフ
PDF
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
PDF
おすすめインフラ! for スタートアップ
PPTX
CakePHP × 国産! baserCMS3の深化と今後の拡がり
PPTX
技術選択とアーキテクトの役割
PDF
OSC2013@FUKUOKA
PDF
楽天がCloud foundryを選んだ理由
PDF
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
PDF
とあるメーカーのRedmine活用事例
PPTX
グループ制作注意
DataEngConf NYC’18 セッションサマリー #2
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
エンジニアという職業について
Intalio japan special cloud workshop
Google Product
MuleアプリケーションのCI/CD
Rails on GKEで運用するWebアプリケーションの紹介
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Dangerでpull requestレビューの指摘事項を減らす
Jenkins+Gitによる検証済みマージ(30分版)
バージョンアップ対応を軽減するサービス:マスティフ
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
おすすめインフラ! for スタートアップ
CakePHP × 国産! baserCMS3の深化と今後の拡がり
技術選択とアーキテクトの役割
OSC2013@FUKUOKA
楽天がCloud foundryを選んだ理由
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
とあるメーカーのRedmine活用事例
グループ制作注意

More from DeNA (20)

PPTX
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
PPTX
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
PPTX
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...
PDF
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
PPTX
クラウド環境でのセキュリティ監査自動化【DeNA TechCon 2020 ライブ配信】
PPTX
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
PDF
仕様起因の手戻りを減らして開発効率アップを目指すチャレンジ 【DeNA TechCon 2020 ライブ配信】
PPTX
DeNA データプラットフォームにおける 自由と統制のバランス【DeNA TechCon 2020 ライブ配信】
PPTX
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】
PDF
MOV の機械学習システムを支える MLOps 実践【DeNA TechCon 2020 ライブ配信】
PDF
コンピュータビジョン技術の実応用〜DRIVE CHARTにおける脇見・車間距離不足検知〜【DeNA TechCon 2020 ライブ配信】
PDF
DeNA の Slack 導入と活用の事例紹介
PPTX
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]
PPTX
オートモーティブ領域における 位置情報関連アルゴリズムあれこれ
PPTX
後部座席タブレットにおけるMaaS時代を見据えた半歩先のUX設計」 [MOBILITY:dev]
PPTX
ドライブレコーダ映像からの3次元空間認識 [MOBILITY:dev]
PPTX
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
PPTX
MOV お客さま探索ナビの GCP ML開発フローについて
PPTX
課題ドリブン、フルスタックAI開発術 [MOBILITY:dev]
PPTX
DeNA の AWS アカウント管理とセキュリティ監査自動化
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
クラウド環境でのセキュリティ監査自動化【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
仕様起因の手戻りを減らして開発効率アップを目指すチャレンジ 【DeNA TechCon 2020 ライブ配信】
DeNA データプラットフォームにおける 自由と統制のバランス【DeNA TechCon 2020 ライブ配信】
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】
MOV の機械学習システムを支える MLOps 実践【DeNA TechCon 2020 ライブ配信】
コンピュータビジョン技術の実応用〜DRIVE CHARTにおける脇見・車間距離不足検知〜【DeNA TechCon 2020 ライブ配信】
DeNA の Slack 導入と活用の事例紹介
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]
オートモーティブ領域における 位置情報関連アルゴリズムあれこれ
後部座席タブレットにおけるMaaS時代を見据えた半歩先のUX設計」 [MOBILITY:dev]
ドライブレコーダ映像からの3次元空間認識 [MOBILITY:dev]
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
MOV お客さま探索ナビの GCP ML開発フローについて
課題ドリブン、フルスタックAI開発術 [MOBILITY:dev]
DeNA の AWS アカウント管理とセキュリティ監査自動化

AndApp開発における全て #denatechcon

  • 1. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. AndApp開発の全て Atsushi Kobayashi General Manager Systems Development Dept. Open Platform Business Unit DeNA
  • 2. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 自己紹介 • 小林 篤 ⁃ 2011/03にDeNAに入社 ⁃ MobageOpenPlatformのAPI/ProxyServer開発に従事 ⁃ オープンプラットフォーム事業本部 システム開発部 部長 • Mobage全般・MobageOpenPlatform、協業Platform事業などの開発責任者 ⁃ 一般社団法人JapanPerlAssociation 代表理事 • YAPC(Yet Anoter Perl Conference)などを主催しPerlの普及振興に尽力 ⁃ Perl Hacker • 自作のライブラリが日本の有名企業各所でも利用 ⁃ 最近では社内GCP(GoogleCloudPlatform)エバンジェリスト的な活動 も • 特別エバンジェリスト程詳しくもないですが… 2
  • 3. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. AndAppとは 3
  • 4. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. AndAppとは • DeNAが新しく提供するPC向けのアプリケーションプラットフォーム ⁃ スマホでもPCでも遊べる場の提供 • 2016年11月にサービスローンチ • 現在では11タイトルがリリース済 ⁃ 今後続々リリース予定 4
  • 5. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. AndAppとは • 完全ド新規サービスなのでシステムをフルスクラッチで開発 • 本日は本システムの開発の裏側を余すところなくお伝え致します 5
  • 6. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 開発現場の過去と現在 6
  • 7. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 過去 • 今までの開発手法と技術スタック ⁃ Infra • 基本オンプレ • パブリッククラウドを使ってもサーバインスタンスの上にオンプレライクな 環境を構築 ⁃ 開発言語はサーバはPerlがメイン • DeNA内部要素に特化したライブラリが整備されている • Perlでの開発に慣れ親しんだエンジニアが多い ⁃ JSON Schemaやmicroservice、JWTを積極的に導入 ⁃ 認証/認可ではOpenID Connect等の標準仕様に則った設計/開発や JWT(JSON Web Token)等を積極的に活用 7
  • 8. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 現在 • 今の開発手法と技術スタック ⁃ Infra • GCP(Google Cloud Platform)の中のGoogleAppEngineを積極的に活用しほ ぼ全てのシステムをGAEで提供 ⁃ 開発言語はサーバをgolangに変更 • GAE SE(Standard Environment)でPerlをサポートしていない為 ⁃ JSON Schema/microservice/OIDC/JWTなどの技術は引き続き利用 8
  • 9. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 過去 to 現在 • 何故変えたのか? • 変える必要あったのか? • 変えてどうだったのか 9
  • 10. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 何故変えたのか • 変えたかったから! 10
  • 11. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 第一部完 11
  • 12. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 何故変えたのか1 • Infra ⁃ 運用という名の苦行 • 運用はとても大切です ⁃ 大規模システムになればなるほど使うサーバ台数が多くなる • 故障率というのがあってだな ⁃ 台数が多くなるとメンテナンスコストが高くなる • 故障率(ry • セキュリティパッチ等 • オペミスの確率も上がる ⁃ 多数のサーバ管理を効率化する為の自動化するにも工数がかかる • 歴史的背景等もあるわけです • 歴史・経験があるからこその独自ツール • 其の環境でしか使えないナレッジ 12
  • 13. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 変える必要があったのか • 究極変えなくてもやっていける • ただ既存のテクノロジーの上でヌクヌクしていると、数年後には其の環境 でしかやっていけない人材になってしまう • 現状維持は退化でしかなく、挑戦し続けることで第一線で戦い続けられる • フルスクラッチでシステム開発出来る機会なんて早々ない。 • つまり今しかない! 13
  • 14. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 何故変えたのか2 • 人の工数は有限 • システムを開発・運用する上でどうしても必要となる工数以外はサービス を創る工数に回したい・回すべき • 人間の頭脳を余すところなく最大限モノづくりに投入したい • 周辺テクノロジーでそれを実現出来るものがある! • 使わないわけには! 14
  • 15. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 技術選定 15
  • 16. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. GoogleAppEngine • 運用コスト等を最大限抑えることが第一のお題 • パブリッククラウドで提供されるフルマネージドサービスをフル活用する べく様々なサービスの検討を開始 ではないんです 16
  • 17. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. GCP ManagedVM • 本検討の少し前にGCPのManagedVMというサービスがβ提供始まった • 簡単に言うとManagedVMは好きなプログラミング言語をランタイムに選 べるGAEみたいなもの • DeNAのエンジニアはPerlに慣れ親しんでいるので開発言語をPerlのまま でGCP ManagedVMを利用すれば丁度いい感じにマネージドされる環境を 構築できるんじゃないか • ということでPerl on ManagedVMという技術スタックで一部システムの 開発を先行させる • なので、他のパブリッククラウドのサービスを細かく調べてはいません ⁃ ある程度情報は持ってる、何ができそうかのイメージはあるが精緻に は調べてない 17
  • 18. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. GCP ManagedVM • 実際にManagedVM上で開発してみるも、GCPの各サービスやAPIとつな ぐのにライブラリの開発から必要だった! ⁃ そらそうだ • βサービスということもありGAEほどこなれておらずtry&errorがかなり多 くなってしまった ⁃ βですし… • パフォーマンスも思った以上に出ず、チューニングにかなり工数が取られ そうだった • ManagedVMは人類には早かった ⁃ ちなみに今はGoogleAppEngine FlexibleEnvironmentと名称等が変 わっております 18
  • 19. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. Google Container Engine(GKE) • ManagedVMで1機能作るのに並行してGKEでも1機能作り始めた • GAE系ではネットワーク周りの制限が一部あるので、その制限を受けられ ない機能を開発する場合は違う技術選定をする必要がある • Google Compute Engine(GCE)をつかう事も当然できるがお題に反する • GKEを活用して上手く構成を組めればフルマネージドサービスに近いシス テム構築が可能ではある • 色々試行錯誤し実際に開発したが… • もっと楽にできないのかっ!何気にめんどくさい! 19
  • 20. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. Firebase • GKEでは通知関連のシステムを作ろうとしていたのでGCPファミリーにな ったFirebaseの利用を検討 • 通知の基盤としてはFirebaseを活用し、周辺APIをGAEで作ることでフル マネージド! 20
  • 21. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. と、言う感じで • 幾つかの試行錯誤の上、我々が求めるものを一番満たしてくれるのはGAE のStandard Environmentだという結論に至る • サクッとGAE/go+Firebaseでシステム開発を始めたわけではなく、幾つ かの試行錯誤と失敗を積み重ねました • ただ、あるテクノロジーが有用なのかどうか、その場のニーズに合うかど うかを見極めるには実際に使ってみるのが一番 21
  • 22. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. GAE SEに決めてから • GAE SEにすると意思決定した後に開発言語を再選定する必要があった ⁃ Java7 ⁃ PHP ⁃ Python 2.7 ⁃ Go • 今までPerlというLL言語を利用していたので折角ならLL以外で。 • ということでPHPとPythonは除外 • Perlエンジニア的にはGoが一番良いというウワサとJavaが嫌いという同 しようもない理由でGoとしました(え ⁃ 実際Perl Hacker達は最近ではGoを使うことが多いですね ⁃ GAEとの相性も良い • Footprintが軽くspin-upしてくる時間がJavaと比べると圧倒的 22
  • 23. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. システムアーキテクチャ 23
  • 24. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. AndApp System Overview 24
  • 25. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 基本構成 • 機能単位でコンポーネントを分割 ⁃ User / Notification / 分析 / 決済などの単位 • コンポーネント毎にGAEのサービスとして配置 • データストアにはDatastoreを利用 ⁃ RDBMSを使わない選択! • Go ⁃ WebApplicationフレームワークにはGinを採用(一部echo) ⁃ DatastoreライブラリとしてはGoonを採用 • 分析用途としてはBigQueryを採用 • Log管理はStackdriver Logging • 監視はStackdriver • システムメトリックスはGCPのコンソール • Theフルマネージド 25
  • 26. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. なぜDatastore • GCP上でRDBSを利用するとするとCloudSQLが選択肢に入る ⁃ GCE上にMySQLを立てるとかもできるけど趣旨に反する • ただCloudSQLが思った以上にパフォーマンスが出ない ⁃ 途中でパフォーマンス改善はあったものの • PokemonGoでの実績 • 郷に入っては郷に従え 26
  • 27. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. 開発体制 27
  • 28. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. チーム構成 • 大まかな機能単位でチーム構成 ⁃ 一人チームもあれば2〜3人チームもあり、最大でも1チーム5名程 度 ⁃ 総開発人員数は25名程 • Microserviceでの開発を行っており、1機能1コンポーネント1リポジト リ1サービスという形の開発を行っているので開発そのものは複数のチー ムに分かれて実施可能 28
  • 29. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. チームを細切れにしてもワークした理由 • チームメンバーが多く、かつチームが細切れだと空中分解しかねない • そうさせないために ⁃ 各チームのリードエンジニア陣をあつめたDSを実施 ⁃ 共通基盤チームを用意しライブラリや開発作法ほ基本統一 ⁃ JSON Schemaを活用しI/Fの可視化とValidationで利用 ⁃ Documentのフォーマットを決めDocument Firstでの開発 29
  • 30. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. GAE+microservice • なにげに相性が良い • 1コンポーネントがGAEの1サービスとなり、他コンポーネントに基本影 響されずに管理が可能 ⁃ オンプレなどではどのサーバにどのコンポーネントをdeployするか ⁃ LBやProxyの設定をどのようにするかの管理が複雑… • ただし1プロジェクトあたりの利用可能Service数が20なので要注意 ⁃ 相談すれば上限突破してくれるかも ⁃ 現時点で我々は26サービスを利用している 30
  • 31. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. コスト 31
  • 32. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. コスト is 何? • 一番イメージしやすいのは ⁃ サーバ購入費 ⁃ データセンター関連の諸費用 • 忘れがちなのが人件費 • なかなか思いつかないのはコミュニケーションコスト 32
  • 33. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. コスト(サーバ・DC) • 当然必要な台数を用意する必要があるので初期費用がかかります • パブリッククラウドって一般的にはこういう初期費用をかけずに利用でき るのがウリだったりしますよね • オンプレでサーバを用意する場合、例えば他サービスで余ったサーバを回 してもらう、減価償却切れのサーバを回してもらうとすれば初期費用はお さえらえれるかもしれない • DCのコスト(ラック・電源・ネットワーク・etc)はどうしてもかかって いく。規模によってはボリュームディスカウント効くけど ⁃ 前職ではサービス規模に対して結構な額になったり 33
  • 34. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. コスト(人件費) • 何かを安定的に維持するには人が必要 • サービス開発以外にInfraをお守りする必要がありそこで働く人のコスト が発生する • 規模が大きくなれば必要とする人も多く必要になってくる 34
  • 35. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. コスト(コミュニケーション) • 情報共有はとても大切 ⁃ 大規模開発になりチームが細切れだったりチーム人数が多ければ特に • とても大切だし必要なんだけど関係者が膨れ上がるとそれはコストになる • 営業・企画・デザイナー・エンジニア・QA・法務・などなど関係者が膨 らんでくるともう大変 • 密室ではなくシンプルに出来るところはする 35
  • 36. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. まとめ 36
  • 37. Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved. まとめ • 既存の技術や運用にとらわれない事 • モノづくりに集中出来る環境を如何に用意できるか • 今回の例は実はかなりチャレンジング ⁃ もっとスモールスタートしてもいい ⁃ つまり既存のシステム・サービスの一部から始めるもよい • 新しい取り組みに失敗はつきもの ⁃ 失敗を許容しよう、そこから学ぼう • 振り返ろう ⁃ やって満足しない。課題はいっぱいある • 一番大切なことは ⁃ めいいっぱい楽しむこと。ワクワクしよう! 37