Sansanがメッセージング (SQS) で スケーラビリティを手に入...
Transcript of Sansanがメッセージング (SQS) で スケーラビリティを手に入...
![Page 1: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/1.jpg)
Sansanがメッセージング (SQS) でスケーラビリティを手に入れた話
using C# on Windows;
神原淳史@atsukanrock
2017-05-31
AWS Dev Day Tokyo 2017
![Page 2: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/2.jpg)
自己紹介
•神原淳史 @atsukanrock
• Development Manager at
• Interested in
• Domain-Driven Design
• C# / .NET
• Enterprise Integration Patterns
![Page 3: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/3.jpg)
目次
• Sansanサービスの説明
•メッセージングとは
•メッセージングによる課題解決の実例
•メッセージングの注意点
•まとめ
![Page 4: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/4.jpg)
Sansanサービスの説明名刺を企業の資産に変える
![Page 5: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/5.jpg)
![Page 6: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/6.jpg)
サービス全体像
Scanner
データ化サービス(Digitization Service)
精度99%
社内の別組織が開発・運用
API Call
Callback API
API Call
![Page 7: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/7.jpg)
マルチテナント型クラウドサービス
tenant_id biz_card_id given_name family_name email …
xxx 11111 太郎 山田 … …
xxx 22222 二郎 鈴木 … …
xxx 33333 三郎 佐藤 … …
xxx 44444 四郎 田中 … …
yyy 55555 五郎 高橋 … …
yyy 66666 六郎 山本 … …
yyy 77777 花子 中村 … …
テナント (≒組織) 内でデータ共有
DBテーブルをテナント毎に分割
![Page 8: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/8.jpg)
サービス規模の拡大
2014 2015 2016 2017
Tenants
2014 2015 2016 2017
Users
2014 2015 2016 2017
Biz Cards
2014 2015 2016 2017
Maximum Users Per Tenant
2014 2015 2016 2017
Maximum Biz Cards Per Tenant
スケーラビリティの課題が次々に発生
![Page 9: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/9.jpg)
メッセージングとは前提知識を早巡り
![Page 10: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/10.jpg)
メッセージングとは
Message Queue
Web App
Web API
Batch
Message
Consumer
Server
Message
Message
Message MessageDatabase
メッセージキューを介し、プロセス間やアプリケーション間でデータや制御を伝達する
![Page 11: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/11.jpg)
特徴
•メッセージは単なるテキスト
•処理失敗したメッセージはリトライされる
• 厳密には、再度処理対象となる
•一定回数失敗し続けたメッセージは別キューに退避される (Dead Letter Queue)
![Page 12: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/12.jpg)
ミドルウェア
Amazon SQS
Standard Queue
Amazon SQS
FIFO QueueAzure Storage
Azure
Service BusMSMQ
PaaS Yes Yes Yes Yes No
Transaction No No No Local Distributed
At-most-once No Yes No Yes Yes
FIFO Best effort Yes Best effort Yes (w/ session) Yes
現Sansanで採用
![Page 13: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/13.jpg)
メッセージングによる課題解決の実例スケーラビリティを手に入れる
![Page 14: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/14.jpg)
抱えていた課題
•巨大なトランザクション
•終わらないバッチ処理
•急激に変化するデータベース負荷
•低いメンテナンス自由度
•リカバリ不可能な処理
![Page 15: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/15.jpg)
抱えていた課題
•巨大なトランザクション
•終わらないバッチ処理
•急激に変化するデータベース負荷
•低いメンテナンス自由度
•リカバリ不可能な処理
![Page 16: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/16.jpg)
巨大なトランザクション
所有名刺の参照・更新可否をユーザ単位で設定可能
0
5,000,000
10,000,000
15,000,000
20,000,000
25,000,000
30,000,000
35,000,000
40,000,000
0 1,000 2,000 3,000 4,000 5,000 6,000
権限設定レコード数
ユーザ数
権限設定レコードの洗い替え処理を1トランザクションで処理すると、指数関数的にトランザクションが巨大化
![Page 17: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/17.jpg)
Scalable Design
トータルで処理するレコード数は変わらないが、並列処理によりスループットが向上
Transaction A Transaction B
Transaction C Transaction D
並列処理
![Page 18: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/18.jpg)
実装例
Web Server
Consumers
Amazon SQS
Queue A
Database
User Consumer
Amazon SQS
Queue B
メッセージ分割
並列処理
![Page 19: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/19.jpg)
抱えていた課題
•巨大なトランザクション
•終わらないバッチ処理
•急激に変化するデータベース負荷
•低いメンテナンス自由度
•リカバリ不可能な処理
![Page 20: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/20.jpg)
終わらないバッチ処理
0
500,000
1,000,000
1,500,000
2,000,000
2,500,000
3,000,000
3,500,000
4,000,000
4,500,000
DIG
ITIZ
ATIO
NS /
MO
NTH
DIGITIZATION VOLUME TREND
![Page 21: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/21.jpg)
Non-scalable Design
var targetBizCards = GetBizCardsByDigitizedTimestamp(from, to);
foreach (var targetBizCard in targetBizCards){
DoSomething(targetBizCard);}
0
500,000
1,000,000
1,500,000
2,000,000
2,500,000
3,000,000
3,500,000
4,000,000
4,500,000
2016-0
5
2016-0
6
2016-0
7
2016-0
8
2016-0
9
2016-1
0
2016-1
1
2016-1
2
2017-0
1
2017-0
2
2017-0
3
2017-0
4
DIG
ITIZ
ATIO
NS /
MO
NTH
DIGITIZATION VOLUME TREND
処理時間がデータ化の量に比例
![Page 22: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/22.jpg)
Scalable Design
1件のデータ化
後続処理B後続処理A
1日中、並列処理されている
1件ずつすぐに後続処理を起動(Domain Event)
• バッチウィンドウが1日中に
• 後続処理が並列化
![Page 23: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/23.jpg)
Domain Eventとは
NOT Domain Event Domain Event
Operation A
Operation C
Operation A
A Completed Event
Operation B Operation C
B Request C Request
Aは後続処理を知らない
Operation B
Aは次にBなことを知っている
Event Aggregator
事前にEvent AggregatorにSubscribe
![Page 24: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/24.jpg)
Domain Eventの実装例
PublisherAmazon SNS
Topic
Amazon SQS
Subscriber
Queue ASubscriber A
Subscriber B
push
pull
Amazon SQS
Subscriber
Queue B
![Page 25: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/25.jpg)
抱えていた課題
•巨大なトランザクション
•終わらないバッチ処理
•急激に変化するデータベース負荷
•低いメンテナンス自由度
•リカバリ不可能な処理
![Page 26: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/26.jpg)
急激に変化するデータベース負荷
0
10,000
20,000
30,000
40,000
50,000
60,000
70,000
80,000
90,000
100,000
110,000
120,000
WR
ITES /
HO
UR
DIGITIZATION THROUGHPUT
![Page 27: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/27.jpg)
データベース負荷を安定させる
0
10,000
20,000
30,000
40,000
50,000
60,000
70,000
80,000
90,000
100,000
110,000
120,000
WR
ITES /
HO
UR
DIGITIZATION THROUGHPUT
平均値
「後回し」にできれば負荷が安定
![Page 28: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/28.jpg)
データ化処理のアーキテクチャ
Web API Server ConsumerAmazon SQS
QueueDatabase
Digitization
Service
Consumerの並列度の制御により負荷を均す
メッセージキューにより「後回し」を実現
![Page 29: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/29.jpg)
並列度の制御
Consumer Database
• インスタンス並列度
• Auto Scaling等を利用すれば手軽
• スレッド並列度
• .NETであればSemaphoreSlimクラス等を利用して自前実装
Consumerの並列度の制御により負荷を均す
![Page 30: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/30.jpg)
while (true){
IDisposable throttlingToken = null;
try{
throttlingToken = await ThrottlingPolicy.EnterAsync();
var message = await MessageChannel.ReceiveAsync();
if (message == null){
throttlingToken.Dispose();
var interval = IdleRetryPolicy.GetRetryInterval(++idleCount);await Task.Delay(interval, cancellationToken);
continue;}
idleCount = 0;
Task.Run(async () =>
SemaphoreSlimクラス等を利用してスレッド並列度を制御
Channelからメッセージを取得
ワーカースレッドを起動
※イメージです
![Page 31: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/31.jpg)
抱えていた課題
•巨大なトランザクション
•終わらないバッチ処理
•急激に変化するデータベース負荷
•低いメンテナンス自由度
•リカバリ不可能な処理
![Page 32: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/32.jpg)
メンテナンス前 (従来)データ化サービス
(Digitization Service)
Developers Developers
停止依頼
停止
![Page 33: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/33.jpg)
メンテナンス前 (現在)データ化サービス
(Digitization Service)
Developers
![Page 34: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/34.jpg)
メンテナンス中
Web API ServerAmazon SQS
Queue
Digitization
Service
データ化サービスから見ると平常運転
メッセージが処理されず溜まっていく
![Page 35: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/35.jpg)
メンテナンス完了時
Web API Server ConsumerAmazon SQS
QueueDatabase
Digitization
Service
メンテナンス中に溜まったメッセージを処理
![Page 36: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/36.jpg)
抱えていた課題
•巨大なトランザクション
•終わらないバッチ処理
•急激に変化するデータベース負荷
•低いメンテナンス自由度
•リカバリ不可能な処理
![Page 37: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/37.jpg)
リカバリ不可能な処理
メッセージングなし
• リトライは自前実装
• 落ちた箇所によってはリカバリ不可能
メッセージングあり
• リトライは標準装備
• リトライしても失敗し続けた処理はDead Letter Queueへ
• 処理内容がテキストで表現されているので、必ずリカバリ可能
タイムアウト、外部サービス障害等による処理失敗時
![Page 38: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/38.jpg)
メッセージングの注意点銀の弾丸はない
![Page 39: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/39.jpg)
注意点
•冪等性を保証する必要がある
•順序は保証されない (Amazon SQS Standard Queue)
•結果整合性モデルになることが多い
![Page 40: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/40.jpg)
注意点
•冪等性を保証する必要がある
•順序は保証されない (Amazon SQS Standard Queue)
•結果整合性モデルになることが多い
![Page 41: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/41.jpg)
冪等性 (べきとうせい) とは
ある操作を何回行っても結果が同じこと
REST API設計の議論で
HTTP POST (冪等でない) とHTTP PUT (冪等) の意味の違い
インフラ界隈で
ChefやAnsibleで実現されている
![Page 42: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/42.jpg)
メッセージングと冪等性
• Amazon SQSは基本、At-Least-Once Delivery(Standard Queue)
Exactly-Once ProcessingモデルのFIFO Queueもあるが、遅い & Tokyoに来ていない
•例外発生等によりメッセージの処理に失敗した場合、該当処理はリトライされる
冪等性を保証する必要がある
強い一貫性モデル (ACID) を持つRDB等で保証するのが基本
![Page 43: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/43.jpg)
注意点
•冪等性を保証する必要がある
•順序は保証されない (Amazon SQS Standard Queue)
•結果整合性モデルになることが多い
![Page 44: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/44.jpg)
順序は保証されない
• Amazon SQSは基本、順序保証なし (Standard Queue)
FIFOを保証するFIFO Queueもあるが、遅い & Tokyoに来ていない
順序保証は自前で行う必要がある
メッセージの処理の最後に次のメッセージを送信する等
![Page 45: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/45.jpg)
注意点
•冪等性を保証する必要がある
•順序は保証されない (Amazon SQS Standard Queue)
•結果整合性モデルになることが多い
![Page 46: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/46.jpg)
結果整合性モデルになる例
Transaction A Transaction B
Transaction C Transaction D
並列処理
Transaction AとBしか終わっていない時点では、ビジネストランザクションとして整合性が取れていない
許容できない場合、分割後の全てのメッセージ処理が完了するまで処理結果を見せない等の制御が必要
![Page 47: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/47.jpg)
まとめ伝えたいことを改めて
![Page 48: Sansanがメッセージング (SQS) で スケーラビリティを手に入 …...Sansanがメッセージング(SQS) で スケーラビリティを手に入れた話 using C# on](https://reader034.fdocument.pub/reader034/viewer/2022051912/60037c575531a4104d7ec8bd/html5/thumbnails/48.jpg)
まとめ
•メッセージングを使うことで以下を向上できる
• スケーラビリティ
• 堅牢性
• 運用性
•反面、設計難易度・複雑度は上がる傾向にある
特性を知り、適切な場面・方法で使用すべし