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