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