Submit Search
Upload
サーバーのおしごと
•
53 likes
•
14,298 views
Yugo Shimizu
Follow
2014/2/8に行ったゲームサーバ勉強会でのスライドです。 サーバー構成図で登場するApplicationサーバーとDBについての基本的な事項と気をつける事について紹介しました。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 68
Download now
Download to read offline
Recommended
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
Unity5.3をさわってみた
Unity5.3をさわってみた
Keizo Nagamine
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
Steam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装について
KLab Inc. / Tech
Recommended
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
Unity5.3をさわってみた
Unity5.3をさわってみた
Keizo Nagamine
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
Steam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装について
KLab Inc. / Tech
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
MagicOnion入門
MagicOnion入門
torisoup
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
gree_tech
REST API のコツ
REST API のコツ
pospome
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おう
kitfactory
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
Yasutomo Uemori
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers
UnityTechnologiesJapan002
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
UnityTechnologiesJapan002
ゼロから始めるサブスク生活
ゼロから始めるサブスク生活
KLab Inc. / Tech
GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法
gree_tech
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
Yohei Hamada
Imprementation of realtime_networkgame
Imprementation of realtime_networkgame
Satoshi Yamafuji
More Related Content
What's hot
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
MagicOnion入門
MagicOnion入門
torisoup
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
gree_tech
REST API のコツ
REST API のコツ
pospome
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おう
kitfactory
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
Yasutomo Uemori
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers
UnityTechnologiesJapan002
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
UnityTechnologiesJapan002
ゼロから始めるサブスク生活
ゼロから始めるサブスク生活
KLab Inc. / Tech
GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法
gree_tech
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
What's hot
(20)
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
MagicOnion入門
MagicOnion入門
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
REST API のコツ
REST API のコツ
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おう
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
ゼロから始めるサブスク生活
ゼロから始めるサブスク生活
GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Viewers also liked
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
Yohei Hamada
Imprementation of realtime_networkgame
Imprementation of realtime_networkgame
Satoshi Yamafuji
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
Satoshi Yamafuji
分割と整合性と戦う
分割と整合性と戦う
Yugo Shimizu
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4
N Masahiro
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Youichiro Miyake
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Yugo Shimizu
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
johgus johgus
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
光晶 上原
Viewers also liked
(10)
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
Imprementation of realtime_networkgame
Imprementation of realtime_networkgame
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
分割と整合性と戦う
分割と整合性と戦う
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
Similar to サーバーのおしごと
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
hideyuki ikeda
SQLWorld★大阪#8
SQLWorld★大阪#8
Atsuo Yamasaki
勉強会資料①
勉強会資料①
真亮 坂口
Aiming のクラウド採用基準
Aiming のクラウド採用基準
Takahiro Hozumi
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
Keiichi Hashimoto
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Masahiko Tachizono
Google App Engineとその影響(補足)
Google App Engineとその影響(補足)
なおき きしだ
2022_1210_WordpressMeetup.pdf
2022_1210_WordpressMeetup.pdf
Naotaka Saito
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
Shota Umeda
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
SORACOM, INC
勉強会 Vol1 『ホスティングとは?』
勉強会 Vol1 『ホスティングとは?』
chimoto
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
Linux学習ロードマップ
Linux学習ロードマップ
akihito_s
Db tech showcase2015
Db tech showcase2015
emin_press
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota
Webプログラミング入門
Webプログラミング入門
Tsuyoshi Kiryu
Webプログラミング入門
Webプログラミング入門
SI TEAM
Amazon ec2とは何か?
Amazon ec2とは何か?
Shinya_131
Cockatoo
Cockatoo
Hiroaki Kubota
Similar to サーバーのおしごと
(20)
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
SQLWorld★大阪#8
SQLWorld★大阪#8
勉強会資料①
勉強会資料①
Aiming のクラウド採用基準
Aiming のクラウド採用基準
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Google App Engineとその影響(補足)
Google App Engineとその影響(補足)
2022_1210_WordpressMeetup.pdf
2022_1210_WordpressMeetup.pdf
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
勉強会 Vol1 『ホスティングとは?』
勉強会 Vol1 『ホスティングとは?』
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Linux学習ロードマップ
Linux学習ロードマップ
Db tech showcase2015
Db tech showcase2015
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Webプログラミング入門
Webプログラミング入門
Webプログラミング入門
Webプログラミング入門
Amazon ec2とは何か?
Amazon ec2とは何か?
Cockatoo
Cockatoo
Recently uploaded
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Recently uploaded
(8)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
サーバーのおしごと
1.
サーバーのおしごと Webサービスにおけるサーバー構成とその目的
2.
自己紹介 清水 佑吾 @yamionp id:yamionp 株式会社
gumi 勤務 Python歴約2年 サーバーさわりはじめて約10年
3.
略歴 高校:CGIやホームページを作成して小遣い稼ぎ 卒業後:ISPでネットワーク&サーバー構築のバイト ちょっと前:PHPでウェブサービス開発 今:ソーシャルゲーム開発
4.
サーバーの話
5.
6.
使用言語・フレームワーク
7.
使用ミドルウェア
8.
最近のサーバー構成
9.
S3 ELB 今日話す範囲 Application EC2 MessageQueue Job EC2 ElasticCache RDS Horizontal Partitioning Database
10.
最小限構成
11.
Request Response DATA Service
12.
一番シンプルな形 問題は? サーバーが壊れるとデータが消える サービスも止まる 書き込み途中で壊れると中途半端な書き込みが残る
13.
アクセスが増えたら 今のサーバー1台では処理しきれない時
14.
負荷への対処 スケールアップ スペックの良いサーバーに変更して処理能力UP! スケールアウト 台数を増やして処理能力UP! 今日はこちらの話をします
15.
Request Response DATA Service
16.
A B C Service DATA DATA DATA
17.
単にサーバーを増やした 特定のサーバーに負荷が集中すると対処出来ない 全データを見るには個別にアクセスする必要がある 可用性、整合性の問題は解決していない
18.
データベース
19.
A B C Service DATA DATA DATA
20.
A B C Application SQL SQL DATA Service
21.
データの格納にRDBを使用した データの扱い方が統一される (リレーショナルモデル&SQL) どのApplicationサーバーでも同じデータを扱える ユーザーはどれか一台にアクセスすれば良い アクセス先はユーザーが決める
22.
ロードバランサー
23.
助けて! A 暇… B C 暇… Application DATA Service
24.
Elastic Load Balancing
25.
A B C Application SQL DATA Service
26.
Application A B C ELB LoadBalancer Service DATA
27.
ユーザーがアクセスする先を選ぶ必要が無くなった 特定のApplicationサーバーに負荷が集中しない => 台数さえ増やせば処理可能
28.
レプリケーション
29.
Application ELB DATA Service
30.
Application 書き込み 読み込み ELB Master Slave Service
31.
メリット 既存のロジックに大きな変更無しに導入可能 自動でデータが更新される 再起動しても消えない
32.
デメリット 分散可能なのは読み込みのみ 非同期の場合古いデータが最新のデータと限らない 同期の場合、Masterのパフォーマンスが悪化する
33.
KeyValueStore (KVS)
34.
KVSとは KeyとValueのペアでデータを管理するDB Memcache, DynamoDB, Riak,
Redis…etc それぞれ全て特徴・使い方・用途が違う KEY VALUE A_AGE 21 A_AGE 21
35.
Memcached
36.
Application ELB DATA Service
37.
Application GET ELB SELECT DATA Service
38.
特徴 オンメモリなので非常に高速 (RDBの十倍程度) シンプル
39.
注意点 キャッシュロジックをアプリケーションに実装が必要 更新時に削除を忘れると古いデータが返る キャッシュのデータをもとにRDBを更新してはならない TTL以前に消える可能性 キャッシュ間のサイズが大きく違うとメモリ効率悪化 永続化は出来ない(データはメモリ上にのみ存在)
40.
Redis
41.
特徴 インメモリ型KVS 永続化可能 レプリケーション可能 データ型 (LIST, SET,
SORTED SET, HASH) を持つ 複雑な操作をアトミックに実行可能
42.
LIST LPOP A B C D
43.
LIST RPUSH B C D E
44.
アトミックに実行とは
45.
原子性 コマンド結果が全て成功or全て失敗しかない事 操作の途中段階にならない。
46.
データベース分割
47.
Application 書き込み ELB 暇… 助けて! Master Slave Service
48.
書込み性能の限界
49.
垂直分割 ID 体力 やくそう ジョブ Player A 100 2 戦士 Player B 98 8 格闘家 Player
C 20 0 魔法使い Player D 0 10 僧侶 DB 1 DB 2 DB 3
50.
Application ELB アイテム カード Service
51.
メリット 分割しても集計が容易 ユニーク制約が維持される
52.
デメリット アイテムに負荷が集中したら対処できない 実際は分割をまたいだ処理が多い
53.
水平分割 体力 やくそう ジョブ Player A 100 2 戦士 Player B 98 8 格闘家 Player
C 20 0 魔法使い DB 2 Player D 0 10 僧侶 DB 3 DB 1
54.
Application Player1 ELB Player2 Service
55.
メリット ほぼ均等に負荷が分散される プレイヤーに閉じた処理はDBをまたがなくてすむ
56.
デメリット 集計が難しい 技術的難易度(フレームワークがサポートしないetc ユニーク制約をかけれない ID1のデータが分割した数だけ存在する
57.
データが壊れる時
58.
DB ユーザー1 GET A a=3 a=a+2 set(“a”, a) A 3 A 5 3 SET
A 5
59.
DB ユーザー1 ユーザー2 GET A a=3 a=a+2 set(“a”, a) A 3 SET
A 5 3 A 3 A 5 3+2+2=5 A 5 GET A 3 a=3 a=a+2 SET A 5 set(“a”, a)
60.
ロック
61.
DB ユーザー1 GET A &
LOCK A a=3 a=a+2 3 SET A 5 ユーザー2 3 A 3 A 5 A 7 GET A & LOCK 5 SET A 7 a=5 a=a+2
62.
RDBでは標準的 SELECT FOR UPDATE デッドロックの危険性 ロック順番を統一する
63.
CAS
64.
DB ユーザー1 ユーザー2 GET A A 3, ver02 a=3 a=a+2 SET
A 5, ver02 A ver02 ver02 A 3 3 5 3 ver03 ver02 A ver03 5 GET A 3, ver02 a=3 a=a+2 失敗 A 5, ver02 SET
65.
DB ユーザー2 失敗したので最初からリトライ A ver03 5 GET A 5, ver03 a=5 a=a+2 A ver03 ver04 5 7 SET
A 7, ver03
66.
Memcache, Redisなどで使用可能 ロックが無いので処理が止まらない 繰り返すロジックを自分で実装する必要が有る 永遠に失敗し続ける可能性がある リトライ回数に上限をつける
67.
まとめ 負荷対策にはスケールアップとスケールアウトがある データ読み込みに関しては手段が多い KVSはそれぞれのソフトで目的・使い方が違う 書き込みの分散は整合性との戦い
68.
ご清聴ありがとうございました
Download now