SQS の使い方を わかっていなかった / I didn't know how to use SQS correctly
by
Kizashi Nagata
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
SQS の使い方を わかっていなかった nakanoshima.dev #34 - 開発しくじり先生 LT会 2023/09/21 株式会社インゲージ 永田 兆
Slide 2
Slide 2 text
自己紹介 ● 永田 兆(ながた きざし) ● @kizashi1122 ● 2014年よりインゲージ社(創業メンバー) ○ 創業時よりCTO ○ Re:lation(次のページ)の開発 ○ バックエンドやインフラを担当 2
Slide 3
Slide 3 text
サービス紹介
Slide 4
Slide 4 text
Re:lation では非同期処理が多い 4
Slide 5
Slide 5 text
非同期処理 5 ECS ECS Elasticache (Redis) ● Rails を使ってるので非同期処理といえば ActiveJob (バックエンドは Sidekiq) ● Rails で閉じているのであればこれが便利で楽
Slide 6
Slide 6 text
非同期処理 6 ECS ECS SQS Lambda ● S3 の PUT タイミングでSQSにメッセージをおくることができる ● Lambda から ECS にコミュニケーションをとるのであればSQSが楽 ● エンキュー側とデキュー側で言語が分かれるのであればSQSが楽 Send (enqueue) Receive (dequeue) S3
Slide 7
Slide 7 text
最初の構成 7 ECS ECS SQS ● ほぼリアルタイムにさばけている
Slide 8
Slide 8 text
最初の構成(ユーザ数増) 8 ECS ECS SQS ● エンキュー>>デキューとなる。 ● キュー内にメッセージが滞留することが多くなる。 ● 処理が追いつかない。遅延。対策せねば。
Slide 9
Slide 9 text
9 ここでしくじった 当時、しっかりとSQSを理解できていなかった
Slide 10
Slide 10 text
実際にとった対策 10 ECS ECS SQS ● 2つめのキューを作成した ● エンキュー側はリクエストに応じて複数キューにメッセージを振り分けた ● 遅延問題は解消はした ECS SQS
Slide 11
Slide 11 text
さらに増えた 11 ECS ECS SQS ECS SQS ECS SQS ECS
Slide 12
Slide 12 text
何が問題なのか ● 負荷が増えるたびに以下の作業とデプロイが必要になる ○ キュー増設 ○ エンキュー側のプログラム修正 ○ デキュー側のプログラム追加 ● 負荷が少ないときにリソースが無駄になる ● デキューサイドが 1 タスクなので耐障害性がさがる 12
Slide 13
Slide 13 text
現在 13 ECS SQS ECS ● キューは 1 つでデキューするタスクを増やした ● これらのタスクは同一なので(同じタスク定義)なのでスケール可能 ● SQS上のメッセージ数をトラッキングしてデキュー側のタスクをオートスケールし ている CloudWatch
Slide 14
Slide 14 text
14 インゲージではエンジニアを募集しています!