SQS の使い方を わかっていなかった / I didn't know how to use SQS correctly
by
Kizashi Nagata
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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 インゲージではエンジニアを募集しています!