メタップスでの尐人数
グローバルプラットフォーム開発について

2013 Metaps Inc.
About Metaps

Metapsについて
About Metaps
MetapsはAndroidアプリディベロッパー向けのプラット
フォームを世界230カ国に提供しています。

http://www.metaps.com/
About Metaps
新宿をHEAD OFFICEとして現在7箇所にオフィスを開設。
開発はすべて新宿で行っています。
About me

Name : 小森谷 一生
Position : Manager
History : SIer, Livedoor, GREE
Experience : Perl,PHP,Ruby
Infrastructure

インフラ設計
Infrastructure
要件
世界の全てのAndroidアプリがMetaps
のサービスを導入できること
Infrastructure
グローバルなAdシステムとして、
クリアしなければいけない課題
言語

通貨

通信速度

端末スペック

時差

広告単価

国

セキュリティ
Infrastructure

選択した手段
Infrastructure
Infrastructure

ビジネス的要件などを考慮した上で、
JP, US, EU, SGの4Regionへサービスを展開。
JPにのみMasterデータを保持し、
他Regionは全てキャッシュを参照するRead Only専
用とする。
Infrastructure

Androidアプリに搭載されたSDKからの通信は可能
な限りBackground Processで行います。
どんな通信環境でもユーザーへストレスを与えない
ことを心がける。
Infrastructure

(広告表示などの)Read用APIと(クリックなど
の)Write用APIでドメインで分割
Read API => Latency Resource Record
Write API => JP
画像は全てClo...
Infrastructure

各RegionごとにVPCでネットワーク管理を行い、
Availabity Zoneは2つ以上に分割。それに伴いキャッ
シュサーバーもNWコスト軽減のため分割。
Infrastructure

CacheはJPからBatchぶん回しでキャッシュを生成。
ElasticacheのRedis Replicationを利用してZone別に
冗長構成に。
Application
AWSの利用状況
-

AutoScaleは使わない。設定や運用コストの高さに加えて、Deploy作
業などとの衝突可能性がある。
最近Consoleから設定ができるようになったらしい

-

増設時はDailyでIMA...
Application

アプリケーション
Application
API Instances

Storage

Nginx

RDS MySQL

Unicorn + Rails

Dynamo

fluentd client

Elasticache

S3
fluentd hos...
Application
AdシステムとしてRuby/Railsは遅くない?
“50ms or Die”というフレーズがありますがmetapsのサービ
スはサーバーと、様々な通信環境のAndroid Deviceの通信
のため、物理的に通信距離が...
Application
Rubyの利用状況
- Unicorn, Puma, Rainbows!でBenchmrkを計測しUnicorn
を採用
- Ruby2/Rails4への移行は現在検証中

- DB接続処理などが、JPとそれ以外のReg...
Application
Requsts
- RegionごとのRequest数はJP,US,SG,EU
- 全Region合わせて現在1日数億Request
- 予想外に南米からのRequestもありSanpaulo Region立ち
上げもあ...
Application
実機検証
ロシアからのアクセスがRoute53のLatency AlgorithmによりUSを向いて
しまう時がある。それを実機レベルで検証するすべがない。。
SDK

SDK
SDK
アプリディベロッパーが簡単に導入できることを心がけている
Exchanger.start(this, "YOUR_APPLICATION_CODE", Exchanger.ORIENTATION_PORTRAIT, false);
Ex...
SDK
-

Androidのバージョンアップなどは常にキャッチアップ

-

WebviewのRenderingがそれほど速くないため試行錯誤中

-

rooted device, reverse compileなどのSecurity対策
...
Problem

課題
Problem
課題
-

ピーク時間が各Regionごとに違うためDeployや負荷状況の差異を気に
する必要が有るため、それを補える自動Deployの環境構築が必要。

-

大型のアプリがバージョンアップをした際に、SDKのInitial...
Change the world

世界を変えよう
現在のチーム人数で10倍以上のTrafficを捌けるように構築し
てある自信はあります。
が、さらに世の中を一歩前へ進める価値を提供する仲間を探
しています。
http://www.metaps.com/ja/careers/
Upcoming SlideShare
Loading in...5
×

メタップスでの少人数 グローバルプラットフォーム開発について

6,911

Published on

メタップスでのAWS,Ruby on Railsを使った少人数でのグローバルプラットフォームの開発について紹介します。

Published in: Technology

メタップスでの少人数 グローバルプラットフォーム開発について

  1. 1. メタップスでの尐人数 グローバルプラットフォーム開発について 2013 Metaps Inc.
  2. 2. About Metaps Metapsについて
  3. 3. About Metaps MetapsはAndroidアプリディベロッパー向けのプラット フォームを世界230カ国に提供しています。 http://www.metaps.com/
  4. 4. About Metaps 新宿をHEAD OFFICEとして現在7箇所にオフィスを開設。 開発はすべて新宿で行っています。
  5. 5. About me Name : 小森谷 一生 Position : Manager History : SIer, Livedoor, GREE Experience : Perl,PHP,Ruby
  6. 6. Infrastructure インフラ設計
  7. 7. Infrastructure 要件 世界の全てのAndroidアプリがMetaps のサービスを導入できること
  8. 8. Infrastructure グローバルなAdシステムとして、 クリアしなければいけない課題 言語 通貨 通信速度 端末スペック 時差 広告単価 国 セキュリティ
  9. 9. Infrastructure 選択した手段
  10. 10. Infrastructure
  11. 11. Infrastructure ビジネス的要件などを考慮した上で、 JP, US, EU, SGの4Regionへサービスを展開。 JPにのみMasterデータを保持し、 他Regionは全てキャッシュを参照するRead Only専 用とする。
  12. 12. Infrastructure Androidアプリに搭載されたSDKからの通信は可能 な限りBackground Processで行います。 どんな通信環境でもユーザーへストレスを与えない ことを心がける。
  13. 13. Infrastructure (広告表示などの)Read用APIと(クリックなど の)Write用APIでドメインで分割 Read API => Latency Resource Record Write API => JP 画像は全てCloudFrontへ。
  14. 14. Infrastructure 各RegionごとにVPCでネットワーク管理を行い、 Availabity Zoneは2つ以上に分割。それに伴いキャッ シュサーバーもNWコスト軽減のため分割。
  15. 15. Infrastructure CacheはJPからBatchぶん回しでキャッシュを生成。 ElasticacheのRedis Replicationを利用してZone別に 冗長構成に。
  16. 16. Application AWSの利用状況 - AutoScaleは使わない。設定や運用コストの高さに加えて、Deploy作 業などとの衝突可能性がある。 最近Consoleから設定ができるようになったらしい - 増設時はDailyでIMAGEのバックアップを自動で行っているので、そ こからscriptでService In。Chefについては導入検討中。 - EC2のInstanceはc3.xlargeのパフォーマンスが非常によく、全台 Replace中。 在庫が尐なくなっているようなので必要な方はお早めに! - USの方がコストが安いため次のサービスでは、USにMaster Storage を置くことも検討。
  17. 17. Application アプリケーション
  18. 18. Application API Instances Storage Nginx RDS MySQL Unicorn + Rails Dynamo fluentd client Elasticache S3 fluentd host Redshift Fluentd host Data Warehouse 数十GB / 1day
  19. 19. Application AdシステムとしてRuby/Railsは遅くない? “50ms or Die”というフレーズがありますがmetapsのサービ スはサーバーと、様々な通信環境のAndroid Deviceの通信 のため、物理的に通信距離が遠くなることがResponse低下 に繋がります。 そのため数msのResponse Timeをチューニングするより も、アイデアを使って世界中からユーザー体感で速い表示 を行うことが重要。それを行うために素早く行うにはRails が最適と判断。 upstream response timeでは50msを切ることはやってま す!
  20. 20. Application Rubyの利用状況 - Unicorn, Puma, Rainbows!でBenchmrkを計測しUnicorn を採用 - Ruby2/Rails4への移行は現在検証中 - DB接続処理などが、JPとそれ以外のRegionで処理を切 り分けている部分があり、煩雑になりがちなところがあ る。 - RDS Cross Region Replicaがリリースされたので、それ を使って解消できるかも。現在Replica Lagの検証中で Production利用も問題無い雰囲気。
  21. 21. Application Requsts - RegionごとのRequest数はJP,US,SG,EU - 全Region合わせて現在1日数億Request - 予想外に南米からのRequestもありSanpaulo Region立ち 上げもあるかも?
  22. 22. Application 実機検証 ロシアからのアクセスがRoute53のLatency AlgorithmによりUSを向いて しまう時がある。それを実機レベルで検証するすべがない。。
  23. 23. SDK SDK
  24. 24. SDK アプリディベロッパーが簡単に導入できることを心がけている Exchanger.start(this, "YOUR_APPLICATION_CODE", Exchanger.ORIENTATION_PORTRAIT, false); Exchanger.showFullScreen(this, null, false); SDKを読み込み、この2行を書くだけでmetapsサービスの基本的な導入ができる - ドキュメントも製品の一つとして、品質の高いものを提供する - PluginとしてUnity, Airを提供
  25. 25. SDK - Androidのバージョンアップなどは常にキャッチアップ - WebviewのRenderingがそれほど速くないため試行錯誤中 - rooted device, reverse compileなどのSecurity対策 - UnitTest & BuildはJenkins - 世界には予測不能なAndroid端末が出まわってたり・・・
  26. 26. Problem 課題
  27. 27. Problem 課題 - ピーク時間が各Regionごとに違うためDeployや負荷状況の差異を気に する必要が有るため、それを補える自動Deployの環境構築が必要。 - 大型のアプリがバージョンアップをした際に、SDKのInitializeが行わ れそれに伴うRequestが発生し、瞬間的にサーバーの負荷が高まる場 合がある。 - 為替の激しい変動。 - Androidのバージョンアップに伴う仕様変更。
  28. 28. Change the world 世界を変えよう
  29. 29. 現在のチーム人数で10倍以上のTrafficを捌けるように構築し てある自信はあります。 が、さらに世の中を一歩前へ進める価値を提供する仲間を探 しています。 http://www.metaps.com/ja/careers/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×