Nintendo Switch(TM)向け プッシュ通知システム 「NPNS」

Similar documents
AWS Deck Template

スライド 1

更新履歴 Document No. Date Comments 次 D JP 2017/05/01 初版 1. 概要 はじめに 情報源 A10 Lightning Application Delivery Service(ADS) 導 構成 動作概要 構築概要 2. 事

PowerPoint プレゼンテーション

2014 年電子情報通信学会総合大会ネットワークシステム B DNS ラウンドロビンと OpenFlow スイッチを用いた省電力法 Electric Power Reduc8on by DNS round- robin with OpenFlow switches 池田賢斗, 後藤滋樹

10年オンプレで運用したmixiをAWSに移行した10の理由

PowerPoint プレゼンテーション

アジェンダ はクラウド上でも十分使えます 1. の概要 とは の導入事例 で利用される構成 2. をクラウドで使う クラウドサービスの分類 Amazon Web Services による構成例 2

ナビタイムサービスにおける、Amazon ECS を活用したシステム移行 ~『乗換NAVITIME』での移行事例 ~

Startup_on_AWS_usecases_StartupDay

SIOS Protection Suite for Linux v9.3.2 AWS Direct Connect 接続クイックスタートガイド 2019 年 4 月

Microsoft PowerPoint VIOPS.ppt

CLUSTERPRO MC ProcessSaver 1.2 for Windows 導入ガイド 第 4 版 2014 年 3 月 日本電気株式会社

スライド 1

FUJITSU Cloud Service for OSS 「コンテナサービス」 ご紹介資料

PowerPoint プレゼンテーション


よくある問題を解決する~ 5 分でそのままつかえるソリューション by AWS ソリューションズビルダチーム

Slide 1

タイトルを1~2行で入力 (長文の場合はフォントサイズを縮小)

Congress Deep Dive

スライド 1

目的 概要 全体像 概念図 用語の定義 用語 説明 用語 説明 用語 説明 用語 説明 参考資料

サービス仕様 1. 提供機能一覧楽天クラウド IaaS では以下の機能をユーザに対し提供します 機能名 1 管理コンソール 2 仮想マシン 概要 ユーザが楽天クラウド IaaS の各機能を操作するための Web インターフェースです 以下の全ての機能を操作できます ユーザが占有でき

JP-AN-186_Feb_2015 -JP

CLUSTERPRO MC ProcessSaver 2.3 for Windows 導入ガイド 第 5 版 2018 年 6 月 日本電気株式会社

プロダクト仕様書 SLB

2ACL DC NTMobile ID ACL(Access Control List) DC Direction Request DC ID Access Check Request DC ACL Access Check Access Check Access Check Response DC

データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

Wagby Cloud

CLUSTERPROXSingleServerSafe SingleServerSafe ご紹介 2007 年 10 月

クラホスメニュー一覧

FUJITSU Cloud Service for OSS 「システム監視サービス」ご紹介資料

FUJITSU Cloud Service for OSS 認証サービス サービス仕様書

OpenStack運用実践によるエンタープライズ適用に向けた課題と今後について~ベアメタルサービスの現状とDesign Summitでの討議状況~

PowerPoint_template_v1.3.pptx / パワーポイントテンプレート

PassSureExam Best Exam Questions & Valid Exam Torrent & Pass for Sure

FUJITSU Cloud Service for OSS CF サービス仕様書

Leveraging Cloud Computing to launch Python apps

PowerPoint Presentation

目次 はじめに Page. 3 1 ログイン方法 4 2 監視設定 5 3 監視設定の変更 削除 18 4 性能情報確認 24 5 問い合わせ先 27 ご参考 動作環境について 28 改版履歴 29 Page 2 NEC Corporation 2014

目次 概要 S/4HANAの導入方式 NECがご提供するサービス S/4HANA 導入ロードマップ策定支援サービス

PostgreSQL による クラスタ構成の可能性 SRA OSS, Inc. 日本支社 取締役支社長 石井達夫

【Cosminexus V9】クラウドサービスプラットフォーム Cosminexus

Microsoft PowerPoint - AWS紹介-VIOPS2 [互換モード]

PowerPoint プレゼンテーション

クラウド開発者のためのCloud Design Pattern 入門

PowerPoint プレゼンテーション

ライフサイクル管理 Systemwalker Centric Manager カタログ

初めてのBFD

Presentation Template Koji Komatsu

Corp ENT 3C PPT Template Title

スライド 1

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

FUJITSU Cloud Service K5 認証サービス サービス仕様書

PowerPoint プレゼンテーション

版 HinemosVM クラウド管理機能のご紹介 NTT データ先端技術株式会社 2019 NTT DATA INTELLILINK Corporation

AWS Deck Template

PowerPoint プレゼンテーション

R80.10_FireWall_Config_Guide_Rev1

中村隼大 鈴木秀和 内藤克浩 渡邊晃 名城大学理工学部愛知工業大学情報科学部

Hundreds of Thousands of Customers in 190 Countries

スライド 1

aws_summit_abematv_fresh

Leveraging Cloud Computing to launch Python apps


データベースの近代化:シンプルなクロスプラットフォーム、最小のダウンタイムで実現するクラウド移行

2

SRA OSS, Inc. のご紹介 1999 年より PostgreSQL サポートを中心に OSS ビジネスを開始 2005 年に現在の形に至る 主なビジネス PostgreSQL, Zabbix などの OSS のサポート コンサルティング 導入構築 PowerGres ファミリーの開発 販売

スライド 1

そこが知りたい!AWSクラウドのセキュリティ

概要 ここでは先程デモを行った OpenStack の中で仮想マシンのデータがどのように管理されているかをご紹介致します OpenStack の中でデータがどのように配置され 管理されているかを知ることは 可用性を検討する上で非常に重要になります 2

製品概要

利用約款別紙 SkyCDP for AWS 基本サービス仕様書 この仕様書は SkyCDP for AWS の基本サービスに関する内容 方法について記述したものです 尚 SkyCDP for AWS オプションサービスをご利用のお客様は各 SkyCDP for AWS オプションサービスのご契約内容

MaxGauge_診断分析プロセス

Server and Cloud Platform template

Microsoft Word - 楽天㇯ㅩ㇦ㅛIaaSㇵㅼã…fiã‡¹ä»Łæ§Ÿ.doc

INDEX Demo の目的 ゴール Scenario 1: 自動化 Scenario 2: 効率化 2

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

PowerPoint Presentation

Zabbix で PostgreSQL を監視! pg_monz のご紹介 Zabbix Conference Japan 年 11 月 20 日 SRA OSS, Inc. 日本支社マーケティング部

FUJITSU Cloud Service for OSS CF ご紹介資料

AWS 認定 DevOps エンジニア - プロフェッショナルサンプル試験問題 1) あなたは Amazon EBS ボリュームを使用する Amazon EC2 上で実行されているアプリケーションサーバ ー向けに 自動データバックアップソリューションを導入する業務を担当しています 単一障害点を回避し

FUJITSU Software Systemwalker Centric Manager Lite Edition V13.5 機能紹介資料

F5-NECセミナ資料(可用性向上)

Agenda! Amazon Web Services (AWS)の 概 要! 大 規 模 分 散 システム AWS の 使 い 方 Asynchronous IO Retries with Exponential Backoff Idempotency Eventual Consistency!

Python Perl JavaScript および PHP などの ランザクション ID を利用することで 重複する処理 な Tuple が流れるかはグルーピングより決定されま 多くの言語をサポートしています を判別することができます す 6 簡単なデプロイと運用 は簡単にデプロイし 動作させるこ

クックパッドのテスト自動化

Microsoft Word - (修正)101.BLU-103のVoIP設定方法.docx

Microsoft Active Directory用およびMicrosoft Exchange用Oracle Identity Connector

はじめてみよう AWS ~これだけでわかる、できる、AWS のコアサービスを活用した基本のシステム構成~


PRIMERGY RX300S6 におけるクラスタ製品「DB/Control」と「DBC/APKeeper」の動作検証報告

PowerPoint Presentation

平成 30 年度需要家側エネルギーリソースを活用したバーチャルパワープラント構築実証事業 (A 事業 ) 東京電力パワーグリッド株式会社関西電力株式会社 2019 年 3 月

Microsoft PowerPoint _ncessympotakada [互換モード]

PowerPoint プレゼンテーション

Fujitsu Standard Tool

クラウド セキュリティ インターネット セキュア ゲートウェイ Umbrella

Transcription:

Nintendo Switch TM 向け プッシュ通知システム NPNS 任天堂 ネットワークシステム部 わたなべ たいよう 渡邉大洋 こざわのりひろ 小澤謹裕 1

今日の内容 サービス紹介 構成要素 インフラ設計 技術詳細 振り返り まとめと展望 2

渡邉大洋 所属ネットワークシステム部 Web エンジニアキャリア入社 5 年目 ( 組み込み Web) これまでニンテンドーネットワークID, NPNS 3

小澤謹裕 所属ネットワークシステム部インフラエンジニア入社 9 年目これまでゲームサーバ, Miiverse, NPNS 4

サービス紹介 5

Nintendo Switch 世界 1779万台 2018年3月末時点 6

NPNS ひとことで プッシュ通知システム Nintendo Push Notification Service 常時接続を使用 他社プラットフォーム Apple Google APNS FCM 7

Nintendo Switch 上の通知 8

利用例 フレンドのオンライン通知 9

利用例 Nintendo みまもり Switch TM での設定変更 10

利用例 スマートフォンや PC での購入後の DL 開始指示 11

利用例 DL 後に完了メッセージ 12

NPNS 利用サービス 13

性能要件など スケーラビリティ 可用率 1 億台に備える AWS リージョン規模の障害未満は稼動 遅延 ~ 数秒 ( 正常時 ) ~ 数分 ( 異常時 ) インフラ費用 適切な範囲に抑える 14

構成要素 15

機能分割 Nintendo Switch 向け 常時接続 & 通知 Consumer API Nintendo Switch 向け ID 管理 Provider API サーバ間連携向け 通知送信要求 16

関係図 通知送信者 Consumer API Provider API 17

Consumer API 通知送信者 RESTful API Consumer API Provider API 18

XMPP 通知送信者 Consumer API Provider API 19

Provider API 通知送信者 RESTful API Consumer API Provider API 20

通知送信者 Consumer API Provider API 21

採用技術 ejabberd Erlang で書かれた OSS クラスタ対応の XMPP サーバ大規模な利用実績が多い RDS for MySQL 5.7 高負荷時のレプリ遅延が少ない ElastiCache for Redis 22

Consumer/Provider 通知送信者 Consumer API Provider API 23

Consumer/Provider 採用技術 Ruby on Rails 社内での開発 / 運用の実績から Amazon Aurora 5.6 RDS for MySQL から乗り換え柔軟なスケール ( レプリカ数やサイズ変更 ) ElastiCache for Redis 24

その他 Amazon SQS ELB Route53 Consul クラスタ動作 ネットワーク分断に強い ejabberd の Failure Detection 25

インフラ設計 26

クラウド選定 AWS を IaaS として利用 配置 社内実績メンバーの経験 / スキルマネージドサービス (RDS, Aurora, SQS) シングルリージョンネットワーク安定性 リソースの利用効率向上 Multi-AZ 27

全体像 Consul Server Consul Server Consumer API Provider API 28

Consumer/Provider Consul Server Consul Server Consumer API Provider API 29

XMPP クラスタ Ejabberd Cluster Ejabberd Cluster Ejabberd Cluster Ejabberd Cluster Consul Server Consul Server Consumer API Provider API 30

XMPP クラスタ分割 スケーラビリティ 安定性 運用効率 クラスタ数変更でスケールアプリ層の分割よりもインフラ層で分割 クラスタ肥大化の防止障害の局所化 小さくデプロイ ( カナリアリリース ) 31

XMPP+Consul Consul Server Consul Server Consumer API Provider API 32

XMPP のロードバランス ELB は不採用 Classic Load Balancer 常時接続に使えない Application Load Balancer プロトコルがあわない Network Load Balancer 検証時期とリリース時期があわない 33

XMPP のロードバランス 直結 +DNS ラウンドロビン Route53 に全ノードの A レコードを登録 Consul が Route53 のレコードを更新 ディスカバリは用意しない 外部向け I/F は増やさない 34

技術詳細 35

1. クラスタ維持方法 2. デプロイ方法 3. 省メモリ化 4. TCP 切断対策 36

クラスタ維持 ejabberd を二方向から死活監視 Consul すぐ反応 Route53 エントリの管理 (TTL=30) Auto Scaling 慎重に様子見異常のあるインスタンスの置き換え 37

クラスタ維持 [1/6] Service Domain / A Records XMPP Server 1 XMPP Server 3 XMPP Server 1 IP Address XMPP Server 2 XMPP Server 2 IP Address Auto Scaling Group Consul Cluster XMPP Server 3 IP Address 38

クラスタ維持 [2/6] Service Domain / A Records XMPP Server 1 XMPP Server 3 XMPP Server 1 IP Address XMPP Server 2 XMPP Server 2 IP Address Auto Scaling Group Consul Cluster XMPP Server 3 IP Address 39

クラスタ維持 [3/6] Service Domain / A Records XMPP Server 1 XMPP Server 3 XMPP Server 1 IP Address XMPP Server 2 XMPP Server 2 IP Address Auto Scaling Group Consul Cluster XMPP Server 3 IP Address 40

クラスタ維持 [4/6] Service Domain / A Records XMPP Server 1 XMPP Server 3 XMPP Server 1 IP Address XMPP Server 2 XMPP Server 2 IP Address Auto Scaling Group Consul Cluster 41

クラスタ維持 [5/6] Service Domain / A Records XMPP Server 1 XMPP Server 3 XMPP Server 1 IP Address XMPP Server 2 XMPP Server 4 XMPP Server 2 IP Address Auto Scaling Group Consul Cluster XMPP Server 4 IP Address 42

クラスタ維持 [6/6] Service Domain / A Records XMPP Server 1 XMPP Server 1 IP Address XMPP Server 2 XMPP Server 4 XMPP Server 2 IP Address Auto Scaling Group Consul Cluster XMPP Server 4 IP Address 43

デプロイ Blue/Green Deploy ASG 単位でドメイン切り替え 新旧両方を 1 つのクラスタに 旧ノードからユーザを一定レートで追い出す = ドリップ処理 44

Connections ドリップ処理 Login 分散 / 切断時間短 スムーズな切り替え 接続を少しずつ Blue Green に移動 Time 45

Connections Connections ドリップ処理 Login 分散 / 切断時間短 スムーズな切り替え 接続を少しずつ Blue Green に移動 Time 常時接続では接続処理が最も高負荷 Login 集中 / 切断時間短 再接続タイミングを分散させたい Time 46

Connections Connections Connections ドリップ処理 Login 分散 / 切断時間短 スムーズな切り替え 接続を少しずつ Blue Green に移動 Time 常時接続では接続処理が最も高負荷 Login 集中 / 切断時間短 再接続タイミングを分散させたい 切断期間は短くしたい Time Login 分散 / 切断時間長 Time 47

Connections Connections Connections ドリップ処理 Login 分散 / 切断時間短 スムーズな切り替え 接続を少しずつ Blue Green に移動 Time 常時接続では接続処理が最も高負荷 Login 集中 / 切断時間短 再接続タイミングを分散させたい 切断期間は短くしたい やっかいな点 Time Login 分散 / 切断時間長 デプロイが長時間化 今は約 2 時間 インスタンス費用がその間 2 倍に Time 48

Blue/Green デプロイ [1/6] XMPP Service.NPNS.DOMAIN XMPP ASG 1.NPNS.DOMAIN A records ALIAS XMPP ASG 1 49

Blue/Green デプロイ [2/6] XMPP Service.NPNS.DOMAIN ALIAS XMPP ASG 1.NPNS.DOMAIN A records XMPP ASG 2.NPNS.DOMAIN A records XMPP ASG 1 XMPP ASG 2 50

Blue/Green デプロイ [3/6] XMPP Service.NPNS.DOMAIN ALIAS XMPP ASG 1.NPNS.DOMAIN A records XMPP ASG 2.NPNS.DOMAIN A records XMPP ASG 1 XMPP ASG 2 51

Blue/Green デプロイ [4/6] XMPP Service.NPNS.DOMAIN ALIAS XMPP ASG 1.NPNS.DOMAIN A records XMPP ASG 2.NPNS.DOMAIN A records XMPP ASG 1 ドリップ処理 XMPP ASG 2 52

Blue/Green デプロイ [5/6] XMPP Service.NPNS.DOMAIN ALIAS XMPP ASG 1.NPNS.DOMAIN A records XMPP ASG 2.NPNS.DOMAIN A records XMPP ASG 1 XMPP ASG 2 53

Blue/Green デプロイ [6/6] XMPP Service.NPNS.DOMAIN ALIAS XMPP ASG 2.NPNS.DOMAIN A records XMPP ASG 2 54

ドリップ処理の自動化 Lifecycle Hook (terminating) Auto Scaling CloudWatch Events Run Command EC2 Instance 55

省メモリ化 インフラ費用を抑えたい ejabberd を省メモリ化 OpenSSL のメモリ削減 & 解放 60 % Down hibernate 前にリソースを解放 40KiB r3.large で 1 台あたり 72 万接続 ところが Before 16KiB After CPU もメモリも空きがあるのに接続数が増えない 56

省メモリ化 Security Group の制限を回避 セッションの上限にあたっていた Security Group を無効に 限界まで接続可能に セキュリティ 外部アクセスは Network ACLs で制限 57

TCP 切断対策 途中経路での異常切断を防ぐ 無通信期間に KeepAlive (L4, L7) 最適間隔を本番環境で実験 XMPP Server Internet Gateway Internet ISP Nintendo Switch AWS 内 途中経路 ユーザ回線 58

TCP 切断対策 TCP KeepAlive (L4) TCP ヘッダのみの特殊パケットを定期的に送信 time: ユーザごとに可変 interval x probes: クラスタ間で対照実験 10 x 2 15 x 10 切断を 40% 削減 40 % Down 59

TCP 切断対策 アプリケーション KeepAlive (L7) データを入れたパケットを定期的に送信送信間隔 : クラスタ間で対照実験送信無し 65 秒間隔 切断を 50% 削減 50 % Down 60

振り返り 61

同時接続数 [ 台 ] 5 月 6 月 7 月 8 月 9 月 10 月 11 月 12 月 2018 年 1 月 2 月 3 月 4 月 通知送信処理見直し (1) 通知送信処理見直し (2) 通知送信数 [ 通 / 秒 ] 5 月 6 月 7 月 8 月 9 月 10 月 11 月 12 月 2018 年 1 月 2 月 3 月 4 月 62

規模 約 700 万同時接続 約 2 万通 / 秒 約 200 億通 / 月 63

AWS の異常 発生した異常 局所的なネットワーク異常 RDS I/O 遅延 EBS 遅延 EC2 インスタンス異常停止 NPNS サービスへの影響 AZ 冗長等により サービスは正常稼動を維持 64

Erlang での運用 良かった点 安定性 VM クラスタ プロセス監視ツリーメモリ効率軽量プロセス hibernate 並列性プロセス構成にだけは注意 hot code loading 緊急時に使用 65

ejabberd 改造内容 並列性の向上 プロセス構成 gen_server 見直し Supervisor 見直し自分でやる or ワーカー生成 DB アクセス最少化 安定性 耐障害性の向上 Mnesia のノード間同期を停止 DB 切断時に XMPP も早期切断大量切断に耐える 省メモリ化 Hibernate まわり OpenSSL の使い方 ログ出力の詳細化 ユーザー行動追跡 CRASH ログで汚さない 独自機能 全員に同報通知デプロイ用の機能 TCP 接続維持 66

まとめと展望 67

まとめ Nintendo Switch 向けプッシュ通知システムを構築必要要件を達成スケーラビリティ : XMPP クラスタ分割, Aurora 可用性 : Auto Scaling, B/G デプロイ, TCP 切断対策インフラ費用 : 省メモリ化 AWS 起因のサービス停止は無かったサービス規模は順調に成長 68

今後の展望 NLB Cross-AZ 指定ができるようになった今こそ XMPP クラスタロードバランサに利用 consul を取り外してシンプル化 Fargate Consumer/Provider に導入予定 69

We Are Hiring! Web エンジニア (Rails, SpringBoot, ) ネットワークインフラエンジニア (Public Cloud, k8s, ) ネットワークサービスシステムエンジニアサーバセキュリティエンジニア... 任天堂キャリア採用 で検索 https://www.nintendo.co.jp /jobs /career/ 70

ご静聴ありがとうございました 71