• Like
メタップスでの少人数 グローバルプラットフォーム開発について
Upcoming SlideShare
Loading in...5
×

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

  • 6,086 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,086
On Slideshare
0
From Embeds
0
Number of Embeds
13

Actions

Shares
Downloads
31
Comments
0
Likes
17

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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