Developers.IO MeetUp 01 Massive Messaging Platform Deployment in a Week.

  • 4,995 views
Uploaded on

 

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
4,995
On Slideshare
0
From Embeds
0
Number of Embeds
6

Actions

Shares
Downloads
9
Comments
0
Likes
26

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. 6リージョン
 同時75万接続の
 メッセージ配信基盤を
 3日で考えた話 CM re:Growth
 Developers.IO Meetup 01 横田聡 (@sato_shi) 2013/12/10 1 classmethod.jp
  • 2. 自己紹介 • 氏名 : 横田聡(よこたさとし)# • ポジション : 
  代表取締役 兼 
  自称ソリューションアーキテクト# • 得意分野 : 営業トーク# • 好きなAWSサービス 
 # AWS SDK classmethod.jp
  • 3. 月曜日 3 classmethod.jp
  • 4. 案件概要 • ある月の月曜日# – 顧客「同時に60万人ぐらい参加する、
  メッセージ配信基盤を作れる?」# – 私「いつ使うんですか?」# – 顧客「来週、使いたい」# – ざわざわ# – 私「やらせていただきます」# – 社員「・・・・しゃ、しゃちょぅ」 4 classmethod.jp
  • 5. 1台で60万プッシュ" できればいいよね? Client Mobile Client 5 classmethod.jp
  • 6. 100台で60万プッシュ" できればいいよね? Mobile Client 6 classmethod.jp ・・ ・ Client
  • 7. 1000台使えば" 余裕じゃん? Client Mobile Client 7 classmethod.jp
  • 8. MutiAZで可用性確保? Az-1 Client Az-2 Mobile Client 8 classmethod.jp
  • 9. 俺いけてるかもw 9
  • 10. これで行こう!(かな) • 上限緩和申請# • 暖機申請# • ゴールデンAMI作成# • HTML5 + Socket.IO(ナウい)# • Node + Redis (ヤング)# • 札束を積んで1000台横に並べる 10 classmethod.jp
  • 11. 火曜日 11 classmethod.jp
  • 12. AWSチーム向けML # • 私「60万人にプッシュするインフラを
 設計したんだけど、だれかやらない?」# • 社員「いつまで?」# • 私「今週でしょ!・・・」# • 社員「何いっているかよくわからないw」 12 classmethod.jp
  • 13. 水曜日 13 classmethod.jp
  • 14. 社内から救世主参上!! • 大瀧「この仕組みじゃダメっすよ」# • 私「え・・・・」# • 大瀧「これがダメ1」# • 大瀧「これがダメ2」# • 大瀧「これがダメ3」# • 大瀧「これがダメ4」# • 私「お、おれも頑張るっ!!」 14 classmethod.jp
  • 15. 木曜日 15 classmethod.jp
  • 16. 課題発生(しそう) • 季節によってインスタンス数の確保問題# • 突発的なアクセスへのリミット制限# • ネットワークキャパシティ# • 障害発生時のフェイルオーバー待ち# • AZ障害時に片方に処理が集中して全部落ち?# • プッシュ配信安定する?# • 数百台サーバのログはどうする? 16 classmethod.jp
  • 17. CFnのスタックロールバック • たくさんインスタンスを立てようとすると、 たまに失敗する。 17 classmethod.jp
  • 18. CloudFront いじめすぎ • とりあえず、秒間60万アクセスすればいい んじゃないかな?www 18 classmethod.jp
  • 19. 上限緩和申請の上限 • ELBのIPが1000個ぐらいあれば
 いけるんじゃ。。。 19 classmethod.jp
  • 20. MultiAZで75万 • ギリギリのスペックでいけたとして、
 もし仮に片方のAZに障害が発生したら、# • ドミノ倒しが発生。。。 20
  • 21. ElastiCacheのフェイルオーバー • 1つのメッセージも落としたくないから、 フェイルオーバー時に1秒しか待てな い。。。 21 classmethod.jp
  • 22. 即座にプッシュ • でもユーザー体験を損ねたくないんだよね 22 classmethod.jp
  • 23. DNSリゾルバキャッシュ • キャリアがIPをキャッシュしたら
 困るよね 23 classmethod.jp
  • 24. プッシュ安定する? • 実際にやってみようーぜ!# • でも、Socket.IOのシミュレーションに JMeterだと同じ条件でできないよ?# • (Socket.IOとのハンドシェイクを行うプログラムを5000スレッド/台で
 150台のEC2を起動して安定性を検証) 24 classmethod.jp
  • 25. 金曜日 25 classmethod.jp
  • 26. ソリューション案 • CFnスタックは小分けにして# • ソースはUser-Dataを使ってS3から同期# • Route53で複数リージョンのELB分け# • Cross-Zoneロードバランシング# • Redisマルチマスターのdual配信# • 同じ環境を作って負荷試験 26 classmethod.jp
  • 27. ジョナサン 27 classmethod.jp
  • 28. 28 classmethod.jp
  • 29. ファミレスをオフィス化する • • • • Macbook Air# Hyper Juice 2# Bose QuietComfort 20i# ScanSnap 29
  • 30. 土曜日 30 classmethod.jp
  • 31. 統合テスト • 動かない・・・俺たちはここまでか 31 classmethod.jp
  • 32. 呼んだ? 32 classmethod.jp
  • 33. 熊本から超絶アーキテクト参戦 • 私「熊本へコードを送る。」# • 有川「目視して修正コードを返す」# • 私「サーバで実行して出たエラーはこれ」# • 有川「エラー対応をする」x30回# • (彼はコードを1回も実行しませんでした…) 33
  • 34. ログ • ログがほしい# • ログがほしい# • ログがほしい# • ログの統計がほしい# • ログの統計がほしい# • ログの統計がほしい 34
  • 35. fluentd 35
  • 36. Treasure Data 36
  • 37. 負荷試験 " 8億レコードのログ • 少々複雑なHiveクエリーを投げる# • 35分で秒単位のアクセス集計# • (ここだけの話、その場でCTO太田さんに連絡してHiveの書き方を教えてもらったw。ご対 応頂きましてありがとうございました。この場を借りて厚く御礼を申し上げます。) 37
  • 38. リアルタイムのログ • 番組中に把握# • (秒間数万の投票受付システムは別の機会にw。
 DynamoDBは神々のツールだよっ) 38
  • 39. 日曜日 39 classmethod.jp
  • 40. システム規模が決まる • お客様「6リージョン使おうか」# • 大瀧「かしこまりました」# • 横田「AWSのサイジングは最後でOK」 40 classmethod.jp
  • 41. システム概要 バージニア us-east-1 オレゴン Client us-west-2 東京 ap-northeast-1 Mobile Client カリフォルニア ×# 750K アイルランド us-west-1 eu-west-1 シンガポール classmethod.jp ap-southeast-1 Publish app # on EC2
  • 42. 月曜日 42 classmethod.jp
  • 43. 本番当日 • 23:30帰宅# # • 娘の寝顔を見ながら
 笑顔で眠ることができました。 43 classmethod.jp
  • 44. 学び 1リージョンを1スタックとして、# 設計して構築すれば、# AWSのリージョンが増えるたびに、# 同時接続数を増やし続けることができる 44 classmethod.jp
  • 45. まとめ • 来年はマルチリージョン推し! 45 classmethod.jp
  • 46. 無茶ぶりに対応ありがとう! お仕事は突然に# でも# 計画的に 46 classmethod.jp
  • 47. 最後に • TwitterやFacebookで感想を述べて頂けま すと、励みになります。# • Developers.IOブログを見た方はイイねを 押して頂けると嬉しいです。# • 会場をお貸しいただいたSAP様大変お世話 になりました。ありがとうございました。 47