SlideShare ist ein Scribd-Unternehmen logo
1 von 95
リアルタイムサーバー
Erlang/OTP で作る PubSub サーバー
自己紹介
@yamionp
gumi ってところで R&D をしています
サーバーさわりはじめて 15 年
Python 5年
Erlang 6ヶ月
関わったもの
今日話す事
リアルタイムサーバーを自作した話
アジェンダ
なぜリアルタイムサーバーか
なぜ自作なのか
PubSubモデル
プロトコル
アジェンダ
サーバー
なぜ Erlang/OTP なのか
負荷試験
実際のゲームでの使われ方
なぜリアルタイムサーバーか
これまでのソーシャルゲーム
非同期コミュニケーション
同時に遊んでいないのに一緒に遊んでいる感覚
ニコニコ動画
技術的制約(モバイルWeb・処理能力・バッテリー)
より濃密なゲーム体験へ
より強い連携・一体感
本当の同時プレイ
ニコニコ生放送
アプリ化 / 端末性能・ネットワーク環境の向上
リクエスト/レスポンス モデル
Request
ResponseClient Server
リクエスト/レスポンス モデル
Request
ServerClient
HTTPの問題
通信はユーザー側からしか開始できない(Serverから送れない)
無いわけではない (それで十分な場合も多い)
高頻度の通信が難しい(毎秒10回通信
オーバーヘッド
レインテンシ
ServerClient
SYN
SYN+ACK
ACK
最初に Connection を確立する
TCP Connection を直接使う
TCP Connection を直接使う
Connectionがある限り自由なタイミングで通信できる
ServerClient
HTTPでもTCPは使っているが
Response を返したら Connection を破棄する
(ステートレス)
ServerClient
リアルタイム通信のメリット
(準備さえできれば) どちらからでも送り始められる
一回あたりの通信コストが小さい
秒間15回とか送っても全然OK
遅延が少ない
デメリット
負荷が高い・負荷分散しにくい
状態を持つので障害に弱い
エラーパターンが多くコードが複雑になりがち
端末のバッテリー消費が激しい (通信頻度が高い)
なぜ自作なのか
いろいろあるが・・・
Windows Server は (我々にとって) 運用コストが高い
機能過多
既存システムとの相性
ゲームでの通信に特有な仕様への対応
落としたくない。土日に寝ていられるシステムを
ちなみに
フルメッシュ
スター
ここの話をします
Pub/Subモデル
Pub/Sub(出版/購読)モデルとは
非同期メッセージングモデルの一種
Subscribe (購読) しているユーザーにメッセージを Publish (出版) する
Sub側は Topic という単位で購読する
Pub側は Topic にメッセージを送る
Pub側は Sub側を意識する必要がなく、疎結合になる
Subscribe
Broker
Topic A
Topic B
A
B
C
D
Broker
Topic A
Topic B
A
B
C
D
Broker
Topic A
Publish
Topic B
A
B
C
D
Broker
Topic A
Topic B
A
B
C
Publish
D
Room モデルとの違い
Room の作成/削除が必要ない
Roomの管理が必要ない
Sub側 が 0 の Topic にも Publish できる
Pub側が Topic を Subscribe している必要はない
導入イメージ
ELB
App
Job
MQ
Batch
log
PubSub
既存の仕組みと喧嘩しないシンプルなシステムが欲しい
プロトコル
目指したもの
数bitを切り詰めるよりシンプルであること
必要十分な拡張性
シリアライズ・パースがしやすい
概要
TCP を採用
TLV ベースのプロトコル構造
最小限の固定ヘッダと拡張部分のTLV化
4 bytes 単位
固定ヘッダ
1 bit
1
6
3
2
Type (メッセージの種類) Length (全体の長さ)
SenderTimestamp (送信者時間) ※後述
ReceiverTimesamp (受信者時間) ※後述
Payload (送信内容)
Payload も連続した TLV の形をとる
1
1
6
3
2
SectionType SectionLength
Value
つまり
1
1
6
3
2
Type Length
SenderTimestamp
ReceiverTimesamp
SectionType SectionLength
Value
SectionType SectionLength
Value
この構造によるメリット
拡張しやすい
実装が比較的容易
バリデーションが容易
RTT計測
ユーザー サーバー の回線状態を把握していたい
強制切断など
通信時に自分のタイマーと処理時間を加算した相手のタイマーを送る
固定ヘッダ
1 bit
1
6
3
2
Type (メッセージの種類) Length (全体の長さ)
SenderTimestamp (送信者時間) ※後述
ReceiverTimesamp (受信者時間) ※後述
Payload (送信内容)
Client Server
Timer Timer
1
1000
Sender Receiver
1 0 ※
※初回は相手のTimerが
わからないので0
送信までに300msかかったので
受け取った1に300を足す
Sender Receiver
1300 301
1300
321
この時点で自分のタイマーが
321なのでRTTは20ms
421
送信までに100msかかったので
受け取った1300に100を足す
Sender Receiver
421 1400
1420
この時点で自分のタイマーが
1420なのでRTTは20ms521
1520
この時点で自分のタイマーが
1520なのでRTTは20ms
Sender Receiver
521 1500
受信から送信までに200msかかったので
受け取った1300に200を足す
なぜTCPか?
NAT超え
到達保証
順序保証
輻輳制御
ゲームによってはTCPのみでも十分な場合も多い(ターン制など
UDP拡張の試験中
あくまでTCPのサブとしてのUDP
到達保証なし・順序保証なし・輻輳制御なし
品質の良くない回線などでとにかく早く送りたい場合
重要なやりとりはTCPで行う
サーバー
コンセプト
土管としての役割に徹する
ステートフル、データレス
品質重視
安定して繋がり、そこそこ速く、落ちない。
土管に徹する
コネクションを持つ=状態が多くなる
ネットワークプログラミングの大半はエラーハンドリング
持つべき状態は極力減らす
アップデートの可能性を減らす
ステートフル・データレス
状態(ステート)は持つが、データは持たない。
永続化はしない
必要なデータは外部に問い合わせ or 通知 (ex. 認証
起動したらすぐ使える状態
認証 App
PubSub
1.game start
2.IP:Port, Token, Topic
3.Token
4.Token 5.OK
6.OK
品質重視
ドキュメント
暗黙のルールを作らない
Sphinxを採用(& packetdiag)
負荷試験
性能を保証する
自動テスト
デグレさせない
End to End テスト
タイムアウト
同時処理
なぜ Erlang/OTP なのか
Erlang/OTP とは
エリクソン社製の関数型言語 (1986年生まれ)
1998年からオープンソース
動的型付け
優れた耐障害性
並行処理・分散処理に強い
軽量プロセス
起動速度・使用メモリが超軽量なプロセス
OSのプロセス・スレッドとは違う
一瞬で立ち上がり、ごくわずかなメモリしか使用しない
インスタンスを作る感覚でプロセスを作る
数万、数十万のプロセス走る
プロセス間ではメッセージ通信ができる
Let it crash
エラーが起こったプロセスは死ぬ
プロセスが死んだ事は監視している別のプロセスに対処させる
再起動や後始末をしたり、連携するほかのプロセスの処置をしたり
監視プロセスは別のマシンで動いていても問題ない
正常系と異常系の処理が分離される
Erlang採用事例紹介
League of Legends
https://engineering.riotgames.com/news/chat-service-architecture-servers
Call of Duty
https://en.wikipedia.org/wiki/Demonware
http://www.erlang-factory.com/upload/presentations/395/ErlangandFirst-
PersonShooters.pdf
WhatsApp
http://www.erlang-factory.com/upload/presentations/558/efsf2012-whatsapp-scaling.pdf
Game of War
https://erlangcentral.org/senior-erlang-engineer-machine-zone/
社内に導入実績あり
認証・課金・テキスト検証、それぞれのマイクロサービス
数年間の連続稼働実績
全アプリからのリクエストを数台で処理している
プロセスデザイン
tcp session session_udp
ErlangVM
※ system process
link link
tcp session
session_udp
※ system process
session_sup
sessions_sup
arkps_sup
session_udp_sup
ErlangVM
udp_sup
gen_udp
simple_one_for_one
one_for_all
one_for_one
one_for_one
one_for_one
停止フロー
tcp session
session_udp
※ system process
session_sup
sessions_sup
arkps_sup
session_udp_sup
ErlangVM
udp_sup
gen_udp
simple_one_for_one
one_for_all
one_for_one
one_for_one
one_for_one
session がなんらかの理由で Down
tcp session
session_udp
※ system process
session_sup
sessions_sup
arkps_sup
session_udp_sup
ErlangVM
udp_sup
gen_udp
simple_one_for_one
one_for_all
one_for_one
one_for_one
one_for_one
検知した session_sup が session_udp_sup に停止を送り
session_udp_sup がそれを受けて session_udpを停止
tcp session
session_udp
※ system process
session_sup
sessions_sup
arkps_sup
session_udp_sup
ErlangVM
udp_sup
gen_udp
simple_one_for_one
one_for_all
one_for_one
one_for_one
one_for_one
session_udp の停止を確認して session_udp_sup が停止
tcp session
session_udp
※ system process
session_sup
sessions_sup
arkps_sup
session_udp_sup
ErlangVM
udp_sup
gen_udp
simple_one_for_one
one_for_all
one_for_one
one_for_one
one_for_one
監視下のすべてのプロセスの終了を確認して session_sup が停止
tcp session
session_udp
※ system process
session_sup
sessions_sup
arkps_sup
session_udp_sup
ErlangVM
udp_sup
gen_udp
simple_one_for_one
one_for_all
one_for_one
one_for_one
one_for_one
link している tcp も停止
負荷試験
なぜ負荷試験を行うか
限界性能を知る
ボトルネックの発見
スケールすることの確認
必要容量の計算
コスト試算
Locustを使いました
Python製分散負荷試験ツール
このためにフル機能の Python クライアントを開発
接続側はどんなに頑張っても限界がくるので数で解決
スポットインスタンス安い
m4.large のスポットインスタンスが t2.medium オンデマンドより安
い
Locust Slaves
PubSub
Locust Master
m4.2xlargem4.xlarge
CPU: 8
RAM: 32GB
CPU: 4
RAM: 16GB
x8
メッセージ数計測
PubSub
x71 msg
合計 8msg
PubSub
PubSub
PubSub
user/room 8
message/user/sec 0.2
waittime[
ms] 5000
rooms 100 1000 2000 3000 3500 3750
(想定) users 800 8000 16000 24000 28000 30000
(想定)
message/sec 1280 12800 25600 38400 44800 48000
(実測)
message/sec 1270 12783 25560 38328 44787 21054
(Server)CPU [%] 66.5 360.4 404.7 560.9 635.8 444.4
(Server)RAM [%] 0.6 2.4 3.7 6.2 7.2 16.5
RTT Med [ms] 1 2 5 12 19 34
RTT Avg [ms] 14 11 12 14 27 1260
RTT Max [ms] 44 49 75 356 536 62798
End to End Med
[ms] 1 3 8 18 39 460
End to End Avg
[ms] 2 12 13 21 50 3017
End to End Max
[ms] 747 738 754 1003 1315 100979
user/room 8
message/user/sec 1
waittime[
ms] 1000
rooms 100 400 800 900 1000
(想定) users 800 3200 6400 7200 8000
(想定)
message/sec 6400 25600 51200 57600 64000
(実測)
message/sec 6360 25527 48195 53240 25154
(Server)CPU [%] 275.8 618.3 709.3 774.7 766.7
(Server)RAM [%] 0.5 1.1 2.7 3 11.2
RTT Med [ms] 1 1 5 12 5
RTT Avg [ms] 10 7 24 40 494
RTT Max [ms] 45 48 491 1100 34295
End to End Med
[ms] 2 11 36 80 310
End to End Avg
[ms] 10 13 54 120 970
End to End Max
[ms] 554 550 981 2923 44120
user/room 8
message/user/sec 15
waittime[
ms]
66.66666
6666666
7
rooms 10 50 70 80 90 100
(想定) users 80 400 560 640 720 800
(想定)
message/sec 9600 48000 67200 76800 86400 96000
(実測)
message/sec 9096 46047 58600 60764 63539 26390
(Server)CPU [%] 229.8 694.7 776.6 775.6 787.9 786.2
(Server)RAM [%] 0.4 0.5 0.6 0.7 0.7 8
RTT Med [ms] 38 2 7 10 15 24
RTT Avg [ms] 30 14 15 17 23 194
RTT Max [ms] 45 67 93 122 522 20686
End to End Med
[ms] 19 19 24 33 46 73
End to End Avg
[ms] 18 21 27 37 50 293
End to End Max
[ms] 618 631 657 718 1231 39470
UDPのスループットがTCPの1/5問題
V「5万/s はいける」
1万/s でない
fprof でプロファイリング
sendが遅い
port_command で非同期にしたら解決
gen_udp/tcp:send がボトルネックなときにやること
http://qiita.com/mururu/items/9b77e49b5b8a2815ceb6
10万/s 出ました
user/room 8
message/user/sec 0.2
waittime[
ms] 5000
rooms 100 2000 3750 6250 7500 8750
(想定) users 800 16000 30000 50000 60000 70000
(想定)
message/sec 1280 25600 48000 80000 96000 112000
(実測)
message/sec 1281 25639 48124 78742 94555 97731
(Server)CPU [%] 46.9 312.2 426.8 625 723.2 718
(Server)RAM [%] 2 6.8 9.8 14 17.3 18.7
user/room 8
message/user/sec 1
waittime[
ms] 1000
rooms 100 400 800 1000 1200 1400 1600
(想定) users 800 3200 6400 8000 9600 11200 12800
(想定)
message/sec 6400 25600 51200 64000 76800 89600 102400
(実測)
message/sec 6356 25472 51202 63890 75912 88143 99033
(Server)CPU [%] 139.4 269.1 425 500.3 625.8 699.2 765.3
(Server)RAM [%] 2 3.6 5 5 5.2 5.2 6.6
user/room 8
message/user/sec 15
waittime[
ms]
66.66666
6666666
7
rooms 10 50 70 80 90 100 110 120 130 140
(想定) users 80 400 560 640 720 800 880 960 1040 1120
(想定)
message/sec 9600 48000 67200 76800 86400 96000 105600 115200 124800 134400
(実測)
message/sec 8912 45967 64648 74035 83211 91581 99596 106775 112889 116739
(Server)CPU [%] 161.5 374.2 489.7 535.8 582.1 632.1 666.4 703.7 726.9 784.7
(Server)RAM [%] 2.1 2.3 2.3 2.3 2.3 2.2 1.8 2.6 3 3.4
実際のゲームでの使われ方
App
PubSub
Private Topic
Private Topic
matching start
list
matching
Private Topic battle starter
HW障害への対応
App
PubSub
PubSub
PubSub
1. battle info
2. 割り振り先をMySQLから取得
3. IP:Port, Token, Topic
4. 接続開始
監視サーバー
サーバー一覧
App
PubSub
PubSub
PubSub
1. Down
2. 検知
3. リスト更新
4. 切断されたので問い合わせ
5. Downを確認して割り振り先を決定・保存
6. 新割り振り先を案内
監視サーバー
バージョンアップ
今繋いでいる人
クライアントのバージョンxサーバーのバージョン
新しいサーバーをたてて、Appでの新規接続の案内先を変更
既存の接続がいなくなったら落として終了
Room Worker
Room情報をゲームロジックまで含めて面倒をみる
最初に Subscribe する
ブローカーからはクライアント扱い
App
PubSub
Battle Topic
6.battle info 2.battle start
room worker
3.room create
4.subscribe
5. ok
7. IP:Port, Token, Topic
8. subscribe
作ってみて
思ったより速度が出た
デグレさせない事の重要さ
運用を最優先の姿勢
ご清聴ありがとうございました
One More Thing
ArkPS Server
OSSとして公開予定
https://github.com/arkps/
(予定地)

Weitere ähnliche Inhalte

Was ist angesagt?

Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo!デベロッパーネットワーク
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いたAkihiro Kuwano
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選Takuya Ueda
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~モノビット エンジン
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!Ryosuke Otsuya
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析Yuki Mizuno
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】DeNA
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Yoshifumi Kawai
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作るtorisoup
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケットTakaaki Hoyo
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 

Was ist angesagt? (20)

Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 

Andere mochten auch

負荷試験入門公開資料 201611
負荷試験入門公開資料 201611負荷試験入門公開資料 201611
負荷試験入門公開資料 201611樽八 仲川
 
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)Yohei Hamada
 
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例Satoshi Yamafuji
 
サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごとYugo Shimizu
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgameSatoshi Yamafuji
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦うYugo Shimizu
 
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4N Masahiro
 
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】Youichiro Miyake
 
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~johgus johgus
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方光晶 上原
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方Daisaku Mochizuki
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事Manabu Koga
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験樽八 仲川
 

Andere mochten auch (14)

負荷試験入門公開資料 201611
負荷試験入門公開資料 201611負荷試験入門公開資料 201611
負荷試験入門公開資料 201611
 
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
 
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
 
サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごと
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgame
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦う
 
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4
 
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
 
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験
 

Ähnlich wie リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜

機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編Daiyu Hatakeyama
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
ASTERIA WARPをもっと便利に使いこなすためのtips紹介
ASTERIA WARPをもっと便利に使いこなすためのtips紹介ASTERIA WARPをもっと便利に使いこなすためのtips紹介
ASTERIA WARPをもっと便利に使いこなすためのtips紹介ASTERIA User Group
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証BrainPad Inc.
 
【FGDC勉強会vol.4】ぶっちゃけます!Azureのいいとこわるいとこ【ライトニングトーク】
【FGDC勉強会vol.4】ぶっちゃけます!Azureのいいとこわるいとこ【ライトニングトーク】【FGDC勉強会vol.4】ぶっちゃけます!Azureのいいとこわるいとこ【ライトニングトーク】
【FGDC勉強会vol.4】ぶっちゃけます!Azureのいいとこわるいとこ【ライトニングトーク】takeda takeda
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...Insight Technology, Inc.
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境智啓 出川
 
プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610HIDEOMI SUZUKI
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
キャパシティ プランニング
キャパシティ プランニングキャパシティ プランニング
キャパシティ プランニング外道 父
 
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場幸智 Yukinori 黒田 Kuroda
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介Masahiko Sawada
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介Dai Utsui
 
Versatil Javaチューニング
Versatil JavaチューニングVersatil Javaチューニング
Versatil JavaチューニングKenji Kazumura
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考えるchonaso
 
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史智啓 出川
 
Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )ロフト くん
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミングNorishige Fukushima
 

Ähnlich wie リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 (20)

機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
ASTERIA WARPをもっと便利に使いこなすためのtips紹介
ASTERIA WARPをもっと便利に使いこなすためのtips紹介ASTERIA WARPをもっと便利に使いこなすためのtips紹介
ASTERIA WARPをもっと便利に使いこなすためのtips紹介
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証
 
【FGDC勉強会vol.4】ぶっちゃけます!Azureのいいとこわるいとこ【ライトニングトーク】
【FGDC勉強会vol.4】ぶっちゃけます!Azureのいいとこわるいとこ【ライトニングトーク】【FGDC勉強会vol.4】ぶっちゃけます!Azureのいいとこわるいとこ【ライトニングトーク】
【FGDC勉強会vol.4】ぶっちゃけます!Azureのいいとこわるいとこ【ライトニングトーク】
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
 
プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610
 
ゆるかわPhp
ゆるかわPhpゆるかわPhp
ゆるかわPhp
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
キャパシティ プランニング
キャパシティ プランニングキャパシティ プランニング
キャパシティ プランニング
 
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介
 
Versatil Javaチューニング
Versatil JavaチューニングVersatil Javaチューニング
Versatil Javaチューニング
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
 
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
 
Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
 
NanoStrand
NanoStrandNanoStrand
NanoStrand
 

Kürzlich hochgeladen

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Kürzlich hochgeladen (9)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜