SlideShare a Scribd company logo
1 of 36
Download to read offline
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
DeNA TechCon 2016
DeNAインフラの今と
これから
- 今編 -
Jan 29, 2016
Tomoya KABE
Gr. 2, IT Platform Dept, System Head Office

DeNA Co., Ltd.
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
$me->describe
⁃ 加辺 友也 a.k.a. @limitusus
⁃ 2012/04新卒入社
⁃ 所属: IT基盤部
⁃ 一貫してサーバインフラ周りを担当
⁃ よく見ているミドルウェア
• Apache, nginx, MySQL, Redis, memcached
⁃ よく使っている言語
• Perl, C, Python, (x86)
2
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
前半で話すこと
⁃ DeNAインフラ概況
⁃ サーバ構築の話
⁃ キャパシティ管理
⁃ 障害対応/プロファイリングツール
⁃ オンプレミスとクラウド
3
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
DeNAインフラ概況
4
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
DeNAインフラ体制
5
IT基盤部
1G 2G Network
Mobile	
  Service	
  
Cura8on	
  
YDB	
  
HealthCare	
  
EC	
  
IPPF
Mobage	
  PF	
  
OpenPF	
  
Game	
  
AutoMo8ve
Network
インフラを担当する部署は1箇所
全事業部横断で担当し知見を共有している
infosys
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
サーバ概要
⁃ サーバ数: 4000+
⁃ DRしているので実際の必要台数は1/2
⁃ AWSも一部サービスで利用
⁃ コモディティサーバを利用
⁃ ネットワークトラフィック
⁃ 13Gbps
⁃ コストを意識した運用
⁃ サーバ1台あたりの性能を可能な限り使い切る
6
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
サーバ構築の話
7
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
mbgaclone
⁃ オンプレミス用サーバコピーツール
⁃ AWSでのAMIからinstanceを作るものに近いイメージ
⁃ 実装は各vendor用Management Interface + PXE + anaconda + データコ
ピー + 補助スクリプト
⁃ P2V, P2P, V2V, V2P いずれにも対応
⁃ (Hardware) RAID構成も自動で実施
8
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
mbgaclone
⁃ 利用イメージ
⁃ server01のディスク内容をserver02にコピー & RAIDを1+0に設定
⁃ コピーした後でコピー前∼コピー後にdeployされたコードを改めてdeploy
して本番に投入するだけ
9
#	
  mbgaclone	
  -­‐from	
  server01	
  -­‐to	
  server02	
  -­‐raid	
  10
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
chef
⁃ chefの導入自体は最早目新しくないが
⁃ 数多くのサービスに
⁃ 既存の運用ツール・体制を踏襲しつつ
利用するための工夫をしている
⁃ Base Cookbook + Application Cookbook + Environment Cookbook構成
⁃ nodeごとの設定はサーバ情報DB(既存)から自動で生成
10
The	
  Chef™	
  Mark	
  and	
  Chef	
  Logo	
  are	
  either	
  registered	
  trademarks/service	
  marks	
  or	
  
trademarks/	
  service	
  marks	
  of	
  Chef,	
  in	
  the	
  United	
  States	
  and	
  other	
  countries	
  and	
  are	
  
used	
  with	
  Chef	
  Inc's	
  permission.	
  We	
  are	
  not	
  affiliated	
  with,	
  endorsed	
  or	
  sponsored	
  by	
  
Chef	
  Inc.
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
キャパシティ管理
11
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
キャパシティ管理
サーバからの各種情報をfluentdで集める
• サーバの各種メトリクス(CPU etc.)
• リクエスト数
• レスポンスサイズ
Elasticsearchに送る→kibanaで見る
12
Elas8csearch	
  is	
  a	
  trademark	
  of	
  Elas8csearch	
  BV,	
  registered	
  in	
  the	
  U.S.	
  and	
  in	
  other	
  countries.	
  
Kibana	
  is	
  a	
  trademark	
  of	
  Elas8csearch	
  BV,	
  registered	
  in	
  the	
  U.S.	
  and	
  in	
  other	
  countries.
外側:ゲームID	
  
内側:API名
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
キャパシティ管理とは別に…
⁃ これと別にESにクエリ投げて日時のレポートを送信
⁃ エラー数・種類も集計しているのでトラブルシューティングも楽になる
13
ある1週間の時系列エラー数	
  
(PVに応じたエラー数)
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
障害対応/プロファイリング
ツール
14
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
障害対応/プロファイリングツール
がんばっても障害は起きる
起きたときの原因調査のためのツールを えている
⁃ Perl用
⁃ perlstack
⁃ gdbperl
⁃ phs
⁃ NYTProf
⁃ Ruby用
⁃ gdbruby
⁃ stackprof
15
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Sample app
#!perl
sub main_proc {
my ($int) = @_;
print `date`;
sleep $int;
}
sub mainloop {
while (1) {
main_proc(1, "dummy_argument");
}
}
mainloop();
16
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Perl用 1/4 - perlstack
⁃ 実行中PerlプロセスのPerl stackを取得して出力してくれるツール
⁃ 実行イメージ
⁃ 実装: ptraceでプロセスにアタッチして情報を取得してくる
⁃ 本番動作中の全プロセスにアタッチしても性能低下は見えない程度
⁃ 一部サーバで常時取得しロギングしている
17
$ sudo perlstack 29146
29146
/home/kabe/daemon.pl:17
/home/kabe/daemon.pl:10
/home/kabe/daemon.pl:9
/home/kabe/daemon.pl:20
それぞれ	
  
sleep()	
  
main_proc()	
  
while	
  loop	
  
mainloop()	
  
が対応
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
典型的なWeb Appでのperlstack例
⁃ アクセスが少ない時間帯
⁃ 多数のworkerがaccept()を呼べている=余裕のある状態
18
351,402,434,494,537,1079,1112,1176,1271,1314,1349,1498,1585,1625,1656,1710,1751,
1798,1834,1845,2378,2408,2458,2507,2541,2585,2614,2649,2737,2766,2857,2889,2954,
2997,3509,3546,3680,32486,32514,32547,32593,32622,32652,32716,32745	
  
	
  	
  	
  	
  	
  	
  	
  	
  /home/game/fcgi/index_smart.fcgi:37	
  
	
  	
  	
  	
  	
  	
  	
  	
  /home/game/fcgi/index_smart.fcgi:35	
  
	
  	
  	
  	
  	
  	
  	
  	
  /home/game/fcgi/index_smart.fcgi:24	
  
	
  	
  	
  	
  	
  	
  	
  	
  ...
accept()を呼んでいる箇所
⁃ DBへのアクセスが集中するような時間帯
⁃ DBへのアクセス箇所にプロセスが集中してくる
⁃ ひどくなると障害となる
3072,3106,3148,3193,3224,3733,3768,3819,3867,3896,3940,3969,4002,4093,4125,4163,
4263,4294	
  
	
  	
  	
  	
  	
  	
  	
  	
  /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-­‐linux-­‐thread-­‐mul8/DBD/mysql.pm:149	
  
	
  	
  	
  	
  	
  	
  	
  	
  /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-­‐linux-­‐thread-­‐mul8/DBI.pm:654	
  
	
  	
  	
  	
  	
  	
  	
  	
  /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-­‐linux-­‐thread-­‐mul8/DBI.pm:722	
  
	
  	
  	
  	
  	
  	
  	
  	
  ...
DBアクセス
多くのプロセス
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Perl用 2/4 - gdbperl
⁃ 実行中Perlプロセス or core のPerl stack, C stackを出力するツール
⁃ Perlの引数も取得できる(そのときの @_ なので変更されていなければ)
⁃ https://github.com/ahiguti/gdbperl
⁃ 実装: gdbでアタッチ→Perlデータ構造をCレベルで ってPerlレベルのス
タックを出力
* gdbでアタッチしているため少し遅い
- バッチプロセスが止まってしまったなど
- 今さら遅くなっても関係ない
- 具体的な引数など詳細な調査をしたい
といったケースで有効
19
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
gdbperl実行例
20
$ sudo gdbperl.pl 29146
...
c_backtrace:
#0 0x0000003b318ab140 in __nanosleep_nocancel () from /lib64/libc.so.6
...
#6 0x000000000040181c in main ()
perl_cur_op:
/home/kabe/daemon.pl:17(main)
perl_backtrace:
[3] /home/kabe/daemon.pl:10(main) -> main::main_proc ARGS: (1,
"dummy_argument")
[2] /home/kabe/daemon.pl:9(main) -> (loop)
[1] /home/kabe/daemon.pl:20(main) -> main::mainloop ARGS: ()
PIDを引数指定
引数が見える
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Perl用 3/4 - phs
⁃ webapp workerにおけるメモリ消費の原因を探るために開発
⁃ 一般に「どこでメモリの大量消費があったか」を事後に知ることは困難
⁃ メモリをダンプしてデータ構造を調べるのも大変…
⁃ デプロイ差分がわかれば手掛かりになるがデプロイが日に何度もある
⁃ 特定のユーザでのみ肥大化するデータ構造もある
⁃ →実行時にメモリ消費のログを取得しておき後から分析できるようにする
⁃ 実装: LD_PRELOADでmallocその他メモリ管理部分の関数を上書く
21
a();	
  
q	
  =	
  malloc(100);	
  
b();
libcのmalloc()
void*	
  malloc(size_t	
  sz)	
  {	
  
	
  	
  orig_malloc	
  =	
  dlopen(...,	
  "malloc");	
  
	
  	
  p	
  =	
  orig_malloc(sz);	
  
	
  	
  バックトレースを保存	
  
	
  	
  return	
  p;	
  
}
LD_PRELOAD=phs.so
Perlなどの	
  
アプリケーション
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
phsで出力するログ
2種類のログが出力されている
⁃ 短時間で大量のヒープ拡張/縮小を検知した時(EXTEND/SHRINK)
• →Perl/C stacktraceおよびREQUEST_URI
⁃ プロセス終了時(STAT)
⁃ 各コード箇所が消費しているPerlオブジェクトのヒープ消費量
⁃ 「X:32→Y:33→Z:50 で 300バイト消費している」といった情報が得
られる
ログが巨大なので工夫が必要
22
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
phsの出力例(その1)
EXTENDのログ
PHS: EXTEND now=1453362911.604974 cur=11290858
prev=7000000 u=1938144768,864768 blib/lib/Storable.pm
(autosplit into blib/lib/auto/Storable/thaw.al):359;/home/game/pm/Cache/
Memcached/Redundant.pm:51;...とても長いので省略...:37;/home/game/
script/infra/fcgi/mobage_fcgi_starter.pl:143 REQUEST_URI=/
XXX?YYY=ZZZ
•ヒープサイズ 7,000,000→11,290,858 に増加したことを検知した様子
23
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
phsの出力例(その2)
...
PHS: /.../Battle.pm:853;/.../Controller.pm:36;/.../Main.pm:947 32 1 168
PHS: /.../Battle.pm:854;/.../Controller.pm:36;/...Main.pm:947 464 10 536
PHS: /.../Battle.pm:855;/.../Controller.pm:36;/.../Main.pm:947 504 11 776
PHS: /.../Battle.pm:856;/.../Controller.pm:36;/.../Main.pm:947 959 22 1167
...
⁃ 同じコード箇所でも複数のログに分かれて出力される場合がある
⁃ 人間が読むには巨大すぎる(数分で1万行を越える)
24
Main.pm:947→Controller.pm:36→Battle.pm:853
確保された領域が32バイト
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
phs その2 のログをまとめる
⁃ コード箇所ごとに消費メモリサイズをまとめればそれは役に立つ
⁃ sortすればだいたい怪しい箇所を示してくれる
⁃ phs_summary /path/to/phs_1453362846_17871.log.20160121
⁃ おおよそキャッシュ生成やDBアクセス、レンダリングにヒープを確保
しているが、本当に見るべきポイントはリクエスト処理部分
25
34772344 TOTAL _exit
12977604 .../Storable.pm:363;/.../Redundant.pm:51;/.../Cache/GameMd.pm:219
3518056 .../Storable.pm:359;/.../Redundant.pm:51;/.../Cache/GameMd.pm:219
1841736 .../Storable.pm:363;/.../Redundant.pm:51;/.../Cache/Game.pm:165
1441784 /.../DBI.pm:2056;/.../DBD/mysql.pm:793;/.../DBI.pm:1641
538560 /.../Text/Xslate.pm:504;/.../Xslate.pm:91;/.../Response.pm:565
382155 /.../Xslate.pm:101;/.../Response.pm:565;/.../Response.pm:577
379164 .../Storable.pm:363;/.../Memcached.pm:13;/.../Cache2.pm:15
347445 /.../Cache/Memcached/Fast.pm:584;/.../Redundant.pm:30;/.../MA.pm:242
311346 /.../Cache/Memcached/Fast.pm:584;/.../MA.pm:247;/.../MA.pm:186
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Perl用 4/4 - NYTProf
⁃ Perlでは定番の高性能プロファイラ
⁃ 性能問題は多くの場合これを見て解決する
⁃ プロファイラのポリシー
⁃ 各サーバ群(ゲーム/API/etc.)に1台ずつ仕掛ける
⁃ 性能劣化があるので全部には仕掛けない
⁃ 複数workerあっても一部プロセスにのみ仕掛ける(PIDを見て調整)
⁃ ログが出過ぎても困る
⁃ 1時間ごとに集計バッチを走らせてアーカイブ化しておく
26
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
HTML化したNYTProf
開発者も簡単にこれを閲覧できる仕組みを用意している
27
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Ruby用 1/2 - gdbruby
⁃ 社内初のRubyによる構築案件に伴い開発
⁃ https://github.com/gunyarakun/gdbruby
⁃ 内容・機能ともにだいたいgdbperlと同じ
⁃ 実行イメージ
28
	
  $	
  sudo	
  ./gdbruby	
  8861	
  
c_backtrace:	
  
#0	
  	
  0x00007ff9f5p075b	
  in	
  pthread_cond_8medwait@@GLIBC_2.3.2	
  ()	
  from	
  /lib64/libpthread.so.0	
  
...	
  
#12	
  0x00007ff9f640594b	
  in	
  main	
  (argc=2,	
  argv=0x7fff6c237138)	
  at	
  main.c:36	
  
ruby_backtrace:	
  
[4]	
  sleep()	
  <-­‐	
  /home/kabe/daemon.rb:10	
  
[3]	
  main_proc()	
  <-­‐	
  /home/kabe/daemon.rb:10	
  
[2]	
  mainloop()	
  <-­‐	
  /home/kabe/daemon.rb:5	
  
[1]	
  <main>()	
  <-­‐	
  /home/kabe/daemon.rb:13
def mainloop()
while true do
main_proc(2, "dummy_arg")
end
end
def main_proc(interval, dummy)
sleep(interval)
end
mainloop()
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Ruby用 2/2 - stackprof
⁃ Rubyで現時点でおそらく一番高性能なプロファイラ
⁃ https://github.com/tmm1/stackprof
⁃ 各サーバ群に1台ずつ、一部プロセスで常時取得
⁃ sinatra/rails workerの一部でのみstackprofが動くようにしている
⁃ ほぼNYTProfで実施していたのと同じポリシーで運用できている
29
==================================	
  
	
  	
  Mode:	
  cpu(1000)	
  
	
  	
  Samples:	
  1292141	
  (0.49%	
  miss	
  rate)	
  
	
  	
  GC:	
  184769	
  (14.30%)	
  
==================================	
  
	
  	
  	
  	
  	
  TOTAL	
  	
  	
  	
  (pct)	
  	
  	
  	
  	
  SAMPLES	
  	
  	
  	
  (pct)	
  	
  	
  	
  	
  FRAME	
  
	
  	
  	
  	
  	
  68455	
  	
  	
  (5.3%)	
  	
  	
  	
  	
  	
  	
  68455	
  	
  	
  (5.3%)	
  	
  	
  	
  	
  block	
  in	
  JSON::Schema.add_indifferent_access	
  
	
  	
  	
  	
  118399	
  	
  	
  (9.2%)	
  	
  	
  	
  	
  	
  	
  62081	
  	
  	
  (4.8%)	
  	
  	
  	
  	
  JSON::Schema.add_indifferent_access	
  
	
  	
  	
  	
  293253	
  	
  (22.7%)	
  	
  	
  	
  	
  	
  	
  60676	
  	
  	
  (4.7%)	
  	
  	
  	
  	
  Ac8veSupport::JSON::Encoding::JSONGemEncoder#jsonify	
  
	
  	
  	
  	
  	
  55684	
  	
  	
  (4.3%)	
  	
  	
  	
  	
  	
  	
  54697	
  	
  	
  (4.2%)	
  	
  	
  	
  	
  block	
  in	
  Sequel::Mysql2::Database#_execute	
  
	
  	
  	
  	
  	
  86674	
  	
  	
  (6.7%)	
  	
  	
  	
  	
  	
  	
  54318	
  	
  	
  (4.2%)	
  	
  	
  	
  	
  JSON#generate	
  
	
  	
  	
  	
  	
  71681	
  	
  	
  (5.5%)	
  	
  	
  	
  	
  	
  	
  51126	
  	
  	
  (4.0%)	
  	
  	
  	
  	
  block	
  in	
  Sequel::Mysql2::Dataset#fetch_rows	
  
	
  	
  	
  	
  219461	
  	
  (17.0%)	
  	
  	
  	
  	
  	
  	
  37656	
  	
  	
  (2.9%)	
  	
  	
  	
  	
  block	
  in	
  Hash#as_json
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
オンプレミスとクラウド
30
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
オンプレミスとクラウド
⁃ 現時点では(まだ)オンプレミスの方が安い
⁃ 案件によって一部でパブリッククラウドを利用している
⁃ マネージドサービスはあまり利用していない
⁃ 使っているところもある
⁃ 主に海外向け = 遅延が気になる
⁃ AWSの利用が多い
⁃ GCPも一部利用
⁃ AWSを使っていて大変なところも見えてきた
31
⁃ 費用分離のためAWSのアカウントを大量に作成している
⁃ それぞれのアカウントのためにawscliでAPIを叩くのも大変
⁃ STS AssumeRoleというAPIでroleを切り替えてAPIを実行できる
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
AWSのアカウントが多い
32
親アカウント 子アカウント
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
AWSの権限管理を楽にする
⁃ miamというツールがある
⁃ https://github.com/winebarrel/miam
⁃ 各AWSアカウントのIAM権限をRuby DSLにそれぞれdumpしてgitで管理
⁃ 権限設定はPull requestにより依頼/実施
⁃ STS AssumeRoleで発行されたセッショントークンにも対応しているので
複数アカウントのIAM権限管理を簡単に実施できる
33
miam
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
VPN + VPC peering活用によるハイブリッド構成
⁃ AWS上にアカウント/VPCが別々の多くのサービス
⁃ 管理DBはオンプレのものと共通にしたい
⁃ 監視サーバなどはAWS上でいいが共有したい
→一部をオンプレに持つハイブリッド構成
34
共通機能	
  
VPC
各サービス	
  
のVPC
VPC	
  
peering
on-­‐premise
VPN	
  
connec8on
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
まとめ
•DeNAがオンプレミスでこれまで積み重ねてきた運用技術
⁃ 少数のサービスで起こった問題に対して深い理解を目指す
⁃ Perl, Rubyなど、言語処理系のレベルまできちんと調べられる体制を用意
⁃ サーバの性能をきちんと使い切り、効率的運用を目指す
•AWSなどパブリッククラウドの利用
⁃ コスト面ではオンプレミスの方が安い
⁃ 海外向けには有用であり積極的に利用している
35
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ご清聴ありがとうございました
36

More Related Content

What's hot

iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜Kentaro Matsumae
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)dena_study
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みToshiharu Sugiyama
 
セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成Toshiharu Sugiyama
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術dena_study
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてMakoto Haruyama
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestMasaki Nakagawa
 
これからの Microservices
これからの Microservicesこれからの Microservices
これからの MicroservicesToru Yamaguchi
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 
サービスの成長を支えるフロントエンド開発 #denatechcon
サービスの成長を支えるフロントエンド開発 #denatechconサービスの成長を支えるフロントエンド開発 #denatechcon
サービスの成長を支えるフロントエンド開発 #denatechconDeNA
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術Toru Yamaguchi
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話Makoto Haruyama
 
マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例Fukaya Akifumi
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNA
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNA
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconDeNA
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechconDeNA
 
DeNAの分析を支える分析基盤
DeNAの分析を支える分析基盤DeNAの分析を支える分析基盤
DeNAの分析を支える分析基盤Kenshin Yamada
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphonedena_study
 

What's hot (20)

iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
 
セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in Test
 
これからの Microservices
これからの Microservicesこれからの Microservices
これからの Microservices
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 
サービスの成長を支えるフロントエンド開発 #denatechcon
サービスの成長を支えるフロントエンド開発 #denatechconサービスの成長を支えるフロントエンド開発 #denatechcon
サービスの成長を支えるフロントエンド開発 #denatechcon
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
 
マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechcon
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
DeNAの分析を支える分析基盤
DeNAの分析を支える分析基盤DeNAの分析を支える分析基盤
DeNAの分析を支える分析基盤
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphone
 

Viewers also liked

ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先Kazuho Oku
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦Koichi Hamada
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Hypermedia: The Missing Element to Building Adaptable Web APIs in RailsHypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Hypermedia: The Missing Element to Building Adaptable Web APIs in RailsToru Kawamura
 
SmartNews Ads System - AWS Summit Tokyo 2015
SmartNews Ads System - AWS Summit Tokyo 2015SmartNews Ads System - AWS Summit Tokyo 2015
SmartNews Ads System - AWS Summit Tokyo 2015SmartNews, Inc.
 
Filesystem via MySQL
Filesystem via MySQLFilesystem via MySQL
Filesystem via MySQLTomoya Kabe
 
HTTP2 最速実装 〜入門編〜
HTTP2 最速実装 〜入門編〜HTTP2 最速実装 〜入門編〜
HTTP2 最速実装 〜入門編〜Kaoru Maeda
 
受託側UXデザインの分解と構築 | "RIDE" UX Sketch SUMMER 2016
受託側UXデザインの分解と構築 | "RIDE" UX Sketch SUMMER 2016受託側UXデザインの分解と構築 | "RIDE" UX Sketch SUMMER 2016
受託側UXデザインの分解と構築 | "RIDE" UX Sketch SUMMER 2016Tomohiro Suzuki
 
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月VirtualTech Japan Inc.
 
Adaptive Path's Guide To Experience Mapping (Japanese Edition)
Adaptive Path's Guide To Experience Mapping (Japanese Edition)Adaptive Path's Guide To Experience Mapping (Japanese Edition)
Adaptive Path's Guide To Experience Mapping (Japanese Edition)Kazumichi (Mario) Sakata
 
サービスデザインの骨格と視点
サービスデザインの骨格と視点サービスデザインの骨格と視点
サービスデザインの骨格と視点Kazumichi (Mario) Sakata
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてdena_study
 
Diccionario nombres biblicos
Diccionario nombres biblicosDiccionario nombres biblicos
Diccionario nombres biblicosvision2013
 
London Adapt or Die: Securing your APIs the Right Way!
London Adapt or Die: Securing your APIs the Right Way!London Adapt or Die: Securing your APIs the Right Way!
London Adapt or Die: Securing your APIs the Right Way!Apigee | Google Cloud
 
ログ分析で支えるゲームパラメータ設計 #denatechcon
ログ分析で支えるゲームパラメータ設計 #denatechconログ分析で支えるゲームパラメータ設計 #denatechcon
ログ分析で支えるゲームパラメータ設計 #denatechconDeNA
 
Adapt or Die: Keynote with Greg Brail
Adapt or Die: Keynote with Greg BrailAdapt or Die: Keynote with Greg Brail
Adapt or Die: Keynote with Greg BrailApigee | Google Cloud
 
DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用Kazuki Fujikawa
 
Adapt or Die: Opening Keynote with Chet Kapoor
Adapt or Die: Opening Keynote with Chet KapoorAdapt or Die: Opening Keynote with Chet Kapoor
Adapt or Die: Opening Keynote with Chet KapoorApigee | Google Cloud
 

Viewers also liked (20)

ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Hypermedia: The Missing Element to Building Adaptable Web APIs in RailsHypermedia: The Missing Element to Building Adaptable Web APIs in Rails
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
 
SmartNews Ads System - AWS Summit Tokyo 2015
SmartNews Ads System - AWS Summit Tokyo 2015SmartNews Ads System - AWS Summit Tokyo 2015
SmartNews Ads System - AWS Summit Tokyo 2015
 
Filesystem via MySQL
Filesystem via MySQLFilesystem via MySQL
Filesystem via MySQL
 
http2 最速実装 v2
http2 最速実装 v2 http2 最速実装 v2
http2 最速実装 v2
 
HTTP2 最速実装 〜入門編〜
HTTP2 最速実装 〜入門編〜HTTP2 最速実装 〜入門編〜
HTTP2 最速実装 〜入門編〜
 
Dena
DenaDena
Dena
 
HTTP/2 入門
HTTP/2 入門HTTP/2 入門
HTTP/2 入門
 
受託側UXデザインの分解と構築 | "RIDE" UX Sketch SUMMER 2016
受託側UXデザインの分解と構築 | "RIDE" UX Sketch SUMMER 2016受託側UXデザインの分解と構築 | "RIDE" UX Sketch SUMMER 2016
受託側UXデザインの分解と構築 | "RIDE" UX Sketch SUMMER 2016
 
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
DeNAがオンプレでこれからやろうとしてること - OpenStack最新情報セミナー 2015年12月
 
Adaptive Path's Guide To Experience Mapping (Japanese Edition)
Adaptive Path's Guide To Experience Mapping (Japanese Edition)Adaptive Path's Guide To Experience Mapping (Japanese Edition)
Adaptive Path's Guide To Experience Mapping (Japanese Edition)
 
サービスデザインの骨格と視点
サービスデザインの骨格と視点サービスデザインの骨格と視点
サービスデザインの骨格と視点
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについて
 
Diccionario nombres biblicos
Diccionario nombres biblicosDiccionario nombres biblicos
Diccionario nombres biblicos
 
London Adapt or Die: Securing your APIs the Right Way!
London Adapt or Die: Securing your APIs the Right Way!London Adapt or Die: Securing your APIs the Right Way!
London Adapt or Die: Securing your APIs the Right Way!
 
ログ分析で支えるゲームパラメータ設計 #denatechcon
ログ分析で支えるゲームパラメータ設計 #denatechconログ分析で支えるゲームパラメータ設計 #denatechcon
ログ分析で支えるゲームパラメータ設計 #denatechcon
 
Adapt or Die: Keynote with Greg Brail
Adapt or Die: Keynote with Greg BrailAdapt or Die: Keynote with Greg Brail
Adapt or Die: Keynote with Greg Brail
 
DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用
 
Adapt or Die: Opening Keynote with Chet Kapoor
Adapt or Die: Opening Keynote with Chet KapoorAdapt or Die: Opening Keynote with Chet Kapoor
Adapt or Die: Opening Keynote with Chet Kapoor
 

Similar to DeNAインフラの今とこれから - 今編 -

DeNAでのVertica運用
DeNAでのVertica運用DeNAでのVertica運用
DeNAでのVertica運用Shota Suzuki
 
ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみたソーシャルアプリを分析してみた
ソーシャルアプリを分析してみたDrecom Co., Ltd.
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~infinite_loop
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AzareaCluster
 
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)Daichi Egawa
 
Cloudera impala
Cloudera impalaCloudera impala
Cloudera impala外道 父
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...NTT DATA Technology & Innovation
 
ソースコードの共通化
ソースコードの共通化ソースコードの共通化
ソースコードの共通化Jun Hosokawa
 
Cloudera Impalaをサービスに組み込むときに苦労した話
Cloudera Impalaをサービスに組み込むときに苦労した話Cloudera Impalaをサービスに組み込むときに苦労した話
Cloudera Impalaをサービスに組み込むときに苦労した話Yukinori Suda
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 
10/2勉強会資料 ~IaaSを知る前にサーバを知ろう~
10/2勉強会資料 ~IaaSを知る前にサーバを知ろう~10/2勉強会資料 ~IaaSを知る前にサーバを知ろう~
10/2勉強会資料 ~IaaSを知る前にサーバを知ろう~Dai Iwai
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)VirtualTech Japan Inc.
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud LanguageTozo Tanaka
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
ライブドア様xKLab合同勉強会 システムモニタリングツール「Ganglia」の紹介
ライブドア様xKLab合同勉強会 システムモニタリングツール「Ganglia」の紹介ライブドア様xKLab合同勉強会 システムモニタリングツール「Ganglia」の紹介
ライブドア様xKLab合同勉強会 システムモニタリングツール「Ganglia」の紹介Kazuya Yokogawa
 

Similar to DeNAインフラの今とこれから - 今編 - (20)

DeNAでのVertica運用
DeNAでのVertica運用DeNAでのVertica運用
DeNAでのVertica運用
 
ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみたソーシャルアプリを分析してみた
ソーシャルアプリを分析してみた
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
 
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)
 
Cloudera impala
Cloudera impalaCloudera impala
Cloudera impala
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
 
ソースコードの共通化
ソースコードの共通化ソースコードの共通化
ソースコードの共通化
 
Cloudera Impalaをサービスに組み込むときに苦労した話
Cloudera Impalaをサービスに組み込むときに苦労した話Cloudera Impalaをサービスに組み込むときに苦労した話
Cloudera Impalaをサービスに組み込むときに苦労した話
 
Reconf 201901
Reconf 201901Reconf 201901
Reconf 201901
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
10/2勉強会資料 ~IaaSを知る前にサーバを知ろう~
10/2勉強会資料 ~IaaSを知る前にサーバを知ろう~10/2勉強会資料 ~IaaSを知る前にサーバを知ろう~
10/2勉強会資料 ~IaaSを知る前にサーバを知ろう~
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
 
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud Language
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
 
ライブドア様xKLab合同勉強会 システムモニタリングツール「Ganglia」の紹介
ライブドア様xKLab合同勉強会 システムモニタリングツール「Ganglia」の紹介ライブドア様xKLab合同勉強会 システムモニタリングツール「Ganglia」の紹介
ライブドア様xKLab合同勉強会 システムモニタリングツール「Ganglia」の紹介
 

Recently uploaded

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Recently uploaded (9)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

DeNAインフラの今とこれから - 今編 -

  • 1. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. DeNA TechCon 2016 DeNAインフラの今と これから - 今編 - Jan 29, 2016 Tomoya KABE Gr. 2, IT Platform Dept, System Head Office
 DeNA Co., Ltd.
  • 2. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. $me->describe ⁃ 加辺 友也 a.k.a. @limitusus ⁃ 2012/04新卒入社 ⁃ 所属: IT基盤部 ⁃ 一貫してサーバインフラ周りを担当 ⁃ よく見ているミドルウェア • Apache, nginx, MySQL, Redis, memcached ⁃ よく使っている言語 • Perl, C, Python, (x86) 2
  • 3. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 前半で話すこと ⁃ DeNAインフラ概況 ⁃ サーバ構築の話 ⁃ キャパシティ管理 ⁃ 障害対応/プロファイリングツール ⁃ オンプレミスとクラウド 3
  • 4. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. DeNAインフラ概況 4
  • 5. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. DeNAインフラ体制 5 IT基盤部 1G 2G Network Mobile  Service   Cura8on   YDB   HealthCare   EC   IPPF Mobage  PF   OpenPF   Game   AutoMo8ve Network インフラを担当する部署は1箇所 全事業部横断で担当し知見を共有している infosys
  • 6. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. サーバ概要 ⁃ サーバ数: 4000+ ⁃ DRしているので実際の必要台数は1/2 ⁃ AWSも一部サービスで利用 ⁃ コモディティサーバを利用 ⁃ ネットワークトラフィック ⁃ 13Gbps ⁃ コストを意識した運用 ⁃ サーバ1台あたりの性能を可能な限り使い切る 6
  • 7. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. サーバ構築の話 7
  • 8. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. mbgaclone ⁃ オンプレミス用サーバコピーツール ⁃ AWSでのAMIからinstanceを作るものに近いイメージ ⁃ 実装は各vendor用Management Interface + PXE + anaconda + データコ ピー + 補助スクリプト ⁃ P2V, P2P, V2V, V2P いずれにも対応 ⁃ (Hardware) RAID構成も自動で実施 8
  • 9. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. mbgaclone ⁃ 利用イメージ ⁃ server01のディスク内容をserver02にコピー & RAIDを1+0に設定 ⁃ コピーした後でコピー前∼コピー後にdeployされたコードを改めてdeploy して本番に投入するだけ 9 #  mbgaclone  -­‐from  server01  -­‐to  server02  -­‐raid  10
  • 10. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. chef ⁃ chefの導入自体は最早目新しくないが ⁃ 数多くのサービスに ⁃ 既存の運用ツール・体制を踏襲しつつ 利用するための工夫をしている ⁃ Base Cookbook + Application Cookbook + Environment Cookbook構成 ⁃ nodeごとの設定はサーバ情報DB(既存)から自動で生成 10 The  Chef™  Mark  and  Chef  Logo  are  either  registered  trademarks/service  marks  or   trademarks/  service  marks  of  Chef,  in  the  United  States  and  other  countries  and  are   used  with  Chef  Inc's  permission.  We  are  not  affiliated  with,  endorsed  or  sponsored  by   Chef  Inc.
  • 11. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. キャパシティ管理 11
  • 12. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. キャパシティ管理 サーバからの各種情報をfluentdで集める • サーバの各種メトリクス(CPU etc.) • リクエスト数 • レスポンスサイズ Elasticsearchに送る→kibanaで見る 12 Elas8csearch  is  a  trademark  of  Elas8csearch  BV,  registered  in  the  U.S.  and  in  other  countries.   Kibana  is  a  trademark  of  Elas8csearch  BV,  registered  in  the  U.S.  and  in  other  countries. 外側:ゲームID   内側:API名
  • 13. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. キャパシティ管理とは別に… ⁃ これと別にESにクエリ投げて日時のレポートを送信 ⁃ エラー数・種類も集計しているのでトラブルシューティングも楽になる 13 ある1週間の時系列エラー数   (PVに応じたエラー数)
  • 14. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 障害対応/プロファイリング ツール 14
  • 15. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 障害対応/プロファイリングツール がんばっても障害は起きる 起きたときの原因調査のためのツールを えている ⁃ Perl用 ⁃ perlstack ⁃ gdbperl ⁃ phs ⁃ NYTProf ⁃ Ruby用 ⁃ gdbruby ⁃ stackprof 15
  • 16. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Sample app #!perl sub main_proc { my ($int) = @_; print `date`; sleep $int; } sub mainloop { while (1) { main_proc(1, "dummy_argument"); } } mainloop(); 16
  • 17. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Perl用 1/4 - perlstack ⁃ 実行中PerlプロセスのPerl stackを取得して出力してくれるツール ⁃ 実行イメージ ⁃ 実装: ptraceでプロセスにアタッチして情報を取得してくる ⁃ 本番動作中の全プロセスにアタッチしても性能低下は見えない程度 ⁃ 一部サーバで常時取得しロギングしている 17 $ sudo perlstack 29146 29146 /home/kabe/daemon.pl:17 /home/kabe/daemon.pl:10 /home/kabe/daemon.pl:9 /home/kabe/daemon.pl:20 それぞれ   sleep()   main_proc()   while  loop   mainloop()   が対応
  • 18. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 典型的なWeb Appでのperlstack例 ⁃ アクセスが少ない時間帯 ⁃ 多数のworkerがaccept()を呼べている=余裕のある状態 18 351,402,434,494,537,1079,1112,1176,1271,1314,1349,1498,1585,1625,1656,1710,1751, 1798,1834,1845,2378,2408,2458,2507,2541,2585,2614,2649,2737,2766,2857,2889,2954, 2997,3509,3546,3680,32486,32514,32547,32593,32622,32652,32716,32745                  /home/game/fcgi/index_smart.fcgi:37                  /home/game/fcgi/index_smart.fcgi:35                  /home/game/fcgi/index_smart.fcgi:24                  ... accept()を呼んでいる箇所 ⁃ DBへのアクセスが集中するような時間帯 ⁃ DBへのアクセス箇所にプロセスが集中してくる ⁃ ひどくなると障害となる 3072,3106,3148,3193,3224,3733,3768,3819,3867,3896,3940,3969,4002,4093,4125,4163, 4263,4294                  /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-­‐linux-­‐thread-­‐mul8/DBD/mysql.pm:149                  /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-­‐linux-­‐thread-­‐mul8/DBI.pm:654                  /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-­‐linux-­‐thread-­‐mul8/DBI.pm:722                  ... DBアクセス 多くのプロセス
  • 19. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Perl用 2/4 - gdbperl ⁃ 実行中Perlプロセス or core のPerl stack, C stackを出力するツール ⁃ Perlの引数も取得できる(そのときの @_ なので変更されていなければ) ⁃ https://github.com/ahiguti/gdbperl ⁃ 実装: gdbでアタッチ→Perlデータ構造をCレベルで ってPerlレベルのス タックを出力 * gdbでアタッチしているため少し遅い - バッチプロセスが止まってしまったなど - 今さら遅くなっても関係ない - 具体的な引数など詳細な調査をしたい といったケースで有効 19
  • 20. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. gdbperl実行例 20 $ sudo gdbperl.pl 29146 ... c_backtrace: #0 0x0000003b318ab140 in __nanosleep_nocancel () from /lib64/libc.so.6 ... #6 0x000000000040181c in main () perl_cur_op: /home/kabe/daemon.pl:17(main) perl_backtrace: [3] /home/kabe/daemon.pl:10(main) -> main::main_proc ARGS: (1, "dummy_argument") [2] /home/kabe/daemon.pl:9(main) -> (loop) [1] /home/kabe/daemon.pl:20(main) -> main::mainloop ARGS: () PIDを引数指定 引数が見える
  • 21. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Perl用 3/4 - phs ⁃ webapp workerにおけるメモリ消費の原因を探るために開発 ⁃ 一般に「どこでメモリの大量消費があったか」を事後に知ることは困難 ⁃ メモリをダンプしてデータ構造を調べるのも大変… ⁃ デプロイ差分がわかれば手掛かりになるがデプロイが日に何度もある ⁃ 特定のユーザでのみ肥大化するデータ構造もある ⁃ →実行時にメモリ消費のログを取得しておき後から分析できるようにする ⁃ 実装: LD_PRELOADでmallocその他メモリ管理部分の関数を上書く 21 a();   q  =  malloc(100);   b(); libcのmalloc() void*  malloc(size_t  sz)  {      orig_malloc  =  dlopen(...,  "malloc");      p  =  orig_malloc(sz);      バックトレースを保存      return  p;   } LD_PRELOAD=phs.so Perlなどの   アプリケーション
  • 22. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. phsで出力するログ 2種類のログが出力されている ⁃ 短時間で大量のヒープ拡張/縮小を検知した時(EXTEND/SHRINK) • →Perl/C stacktraceおよびREQUEST_URI ⁃ プロセス終了時(STAT) ⁃ 各コード箇所が消費しているPerlオブジェクトのヒープ消費量 ⁃ 「X:32→Y:33→Z:50 で 300バイト消費している」といった情報が得 られる ログが巨大なので工夫が必要 22
  • 23. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. phsの出力例(その1) EXTENDのログ PHS: EXTEND now=1453362911.604974 cur=11290858 prev=7000000 u=1938144768,864768 blib/lib/Storable.pm (autosplit into blib/lib/auto/Storable/thaw.al):359;/home/game/pm/Cache/ Memcached/Redundant.pm:51;...とても長いので省略...:37;/home/game/ script/infra/fcgi/mobage_fcgi_starter.pl:143 REQUEST_URI=/ XXX?YYY=ZZZ •ヒープサイズ 7,000,000→11,290,858 に増加したことを検知した様子 23
  • 24. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. phsの出力例(その2) ... PHS: /.../Battle.pm:853;/.../Controller.pm:36;/.../Main.pm:947 32 1 168 PHS: /.../Battle.pm:854;/.../Controller.pm:36;/...Main.pm:947 464 10 536 PHS: /.../Battle.pm:855;/.../Controller.pm:36;/.../Main.pm:947 504 11 776 PHS: /.../Battle.pm:856;/.../Controller.pm:36;/.../Main.pm:947 959 22 1167 ... ⁃ 同じコード箇所でも複数のログに分かれて出力される場合がある ⁃ 人間が読むには巨大すぎる(数分で1万行を越える) 24 Main.pm:947→Controller.pm:36→Battle.pm:853 確保された領域が32バイト
  • 25. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. phs その2 のログをまとめる ⁃ コード箇所ごとに消費メモリサイズをまとめればそれは役に立つ ⁃ sortすればだいたい怪しい箇所を示してくれる ⁃ phs_summary /path/to/phs_1453362846_17871.log.20160121 ⁃ おおよそキャッシュ生成やDBアクセス、レンダリングにヒープを確保 しているが、本当に見るべきポイントはリクエスト処理部分 25 34772344 TOTAL _exit 12977604 .../Storable.pm:363;/.../Redundant.pm:51;/.../Cache/GameMd.pm:219 3518056 .../Storable.pm:359;/.../Redundant.pm:51;/.../Cache/GameMd.pm:219 1841736 .../Storable.pm:363;/.../Redundant.pm:51;/.../Cache/Game.pm:165 1441784 /.../DBI.pm:2056;/.../DBD/mysql.pm:793;/.../DBI.pm:1641 538560 /.../Text/Xslate.pm:504;/.../Xslate.pm:91;/.../Response.pm:565 382155 /.../Xslate.pm:101;/.../Response.pm:565;/.../Response.pm:577 379164 .../Storable.pm:363;/.../Memcached.pm:13;/.../Cache2.pm:15 347445 /.../Cache/Memcached/Fast.pm:584;/.../Redundant.pm:30;/.../MA.pm:242 311346 /.../Cache/Memcached/Fast.pm:584;/.../MA.pm:247;/.../MA.pm:186
  • 26. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Perl用 4/4 - NYTProf ⁃ Perlでは定番の高性能プロファイラ ⁃ 性能問題は多くの場合これを見て解決する ⁃ プロファイラのポリシー ⁃ 各サーバ群(ゲーム/API/etc.)に1台ずつ仕掛ける ⁃ 性能劣化があるので全部には仕掛けない ⁃ 複数workerあっても一部プロセスにのみ仕掛ける(PIDを見て調整) ⁃ ログが出過ぎても困る ⁃ 1時間ごとに集計バッチを走らせてアーカイブ化しておく 26
  • 27. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. HTML化したNYTProf 開発者も簡単にこれを閲覧できる仕組みを用意している 27
  • 28. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Ruby用 1/2 - gdbruby ⁃ 社内初のRubyによる構築案件に伴い開発 ⁃ https://github.com/gunyarakun/gdbruby ⁃ 内容・機能ともにだいたいgdbperlと同じ ⁃ 実行イメージ 28  $  sudo  ./gdbruby  8861   c_backtrace:   #0    0x00007ff9f5p075b  in  pthread_cond_8medwait@@GLIBC_2.3.2  ()  from  /lib64/libpthread.so.0   ...   #12  0x00007ff9f640594b  in  main  (argc=2,  argv=0x7fff6c237138)  at  main.c:36   ruby_backtrace:   [4]  sleep()  <-­‐  /home/kabe/daemon.rb:10   [3]  main_proc()  <-­‐  /home/kabe/daemon.rb:10   [2]  mainloop()  <-­‐  /home/kabe/daemon.rb:5   [1]  <main>()  <-­‐  /home/kabe/daemon.rb:13 def mainloop() while true do main_proc(2, "dummy_arg") end end def main_proc(interval, dummy) sleep(interval) end mainloop()
  • 29. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Ruby用 2/2 - stackprof ⁃ Rubyで現時点でおそらく一番高性能なプロファイラ ⁃ https://github.com/tmm1/stackprof ⁃ 各サーバ群に1台ずつ、一部プロセスで常時取得 ⁃ sinatra/rails workerの一部でのみstackprofが動くようにしている ⁃ ほぼNYTProfで実施していたのと同じポリシーで運用できている 29 ==================================      Mode:  cpu(1000)      Samples:  1292141  (0.49%  miss  rate)      GC:  184769  (14.30%)   ==================================            TOTAL        (pct)          SAMPLES        (pct)          FRAME            68455      (5.3%)              68455      (5.3%)          block  in  JSON::Schema.add_indifferent_access          118399      (9.2%)              62081      (4.8%)          JSON::Schema.add_indifferent_access          293253    (22.7%)              60676      (4.7%)          Ac8veSupport::JSON::Encoding::JSONGemEncoder#jsonify            55684      (4.3%)              54697      (4.2%)          block  in  Sequel::Mysql2::Database#_execute            86674      (6.7%)              54318      (4.2%)          JSON#generate            71681      (5.5%)              51126      (4.0%)          block  in  Sequel::Mysql2::Dataset#fetch_rows          219461    (17.0%)              37656      (2.9%)          block  in  Hash#as_json
  • 30. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. オンプレミスとクラウド 30
  • 31. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. オンプレミスとクラウド ⁃ 現時点では(まだ)オンプレミスの方が安い ⁃ 案件によって一部でパブリッククラウドを利用している ⁃ マネージドサービスはあまり利用していない ⁃ 使っているところもある ⁃ 主に海外向け = 遅延が気になる ⁃ AWSの利用が多い ⁃ GCPも一部利用 ⁃ AWSを使っていて大変なところも見えてきた 31
  • 32. ⁃ 費用分離のためAWSのアカウントを大量に作成している ⁃ それぞれのアカウントのためにawscliでAPIを叩くのも大変 ⁃ STS AssumeRoleというAPIでroleを切り替えてAPIを実行できる Copyright (C) DeNA Co.,Ltd. All Rights Reserved. AWSのアカウントが多い 32 親アカウント 子アカウント
  • 33. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. AWSの権限管理を楽にする ⁃ miamというツールがある ⁃ https://github.com/winebarrel/miam ⁃ 各AWSアカウントのIAM権限をRuby DSLにそれぞれdumpしてgitで管理 ⁃ 権限設定はPull requestにより依頼/実施 ⁃ STS AssumeRoleで発行されたセッショントークンにも対応しているので 複数アカウントのIAM権限管理を簡単に実施できる 33 miam
  • 34. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. VPN + VPC peering活用によるハイブリッド構成 ⁃ AWS上にアカウント/VPCが別々の多くのサービス ⁃ 管理DBはオンプレのものと共通にしたい ⁃ 監視サーバなどはAWS上でいいが共有したい →一部をオンプレに持つハイブリッド構成 34 共通機能   VPC 各サービス   のVPC VPC   peering on-­‐premise VPN   connec8on
  • 35. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. まとめ •DeNAがオンプレミスでこれまで積み重ねてきた運用技術 ⁃ 少数のサービスで起こった問題に対して深い理解を目指す ⁃ Perl, Rubyなど、言語処理系のレベルまできちんと調べられる体制を用意 ⁃ サーバの性能をきちんと使い切り、効率的運用を目指す •AWSなどパブリッククラウドの利用 ⁃ コスト面ではオンプレミスの方が安い ⁃ 海外向けには有用であり積極的に利用している 35
  • 36. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ご清聴ありがとうございました 36