cloudnativedaysjp / dreamkast

dreamkast is Online Conference Platform !!!!!!
MIT License
30 stars 7 forks source link

メールの送信等のジョブを非同期で送信できるようにする #709

Closed jacopen closed 3 years ago

jacopen commented 3 years ago

今の実装ではメールを同期で実装している。 もしSESで送信エラーが起きた場合はエラーを握りつぶすワイルドな実装になっている。

理想としては非同期でメールを送信しつつ、エラーが起きた場合は適切に再送信を行えるようにするべき。

非同期で送れるようにするには何を使ってどう実装するか検討する

jacopen commented 3 years ago

何を使って非同期にする?

どこまで可用性を担保するか

oshiro3 commented 3 years ago

Active Job のアダプターとしては現状公式にはここで紹介されています

https://api.rubyonrails.org/classes/ActiveJob/QueueAdapters.html

SQS とか Saas を使えれば Que の可用性については心配しなくて良くなるけど、SQS のアダプターは https://github.com/phstc/shoryuken という gem のみで、これはメンテナーがほぼ一人しかいないのでちょっと保守性が心配という懸念点があります。

oshiro3 commented 3 years ago

どこまで可用性を担保するか

この話が重要なことには変わりないと思いますが、おそらくこの数値が Elasticache Redis cluster のマルチAZ構成の可用性を上回ることってないんじゃないかとも思います。dreamkast-infra の cfn を見た感じでは現状のアーキテクチャって Elasticache Redis cluster のマルチAZ を採用していますよね(cfn 初見なので雰囲気しかわからないですが)?

これが真ならバックエンドは sidekiq で問題なさそうな気がします。コネクションの試行回数を制限するとかの運用上の課題が他の機能とバッティングしないか、もしくは棲み分けられるのかとか具体的な話はいっぱいあるかもですけど。

oshiro3 commented 3 years ago

2020/12 に AWS-SDK-Rails の new feature release で SQS が使えるようになっているっぽいのでこれが最適解なような気がしました。 https://aws.amazon.com/jp/blogs/developer/introducing-new-features-for-the-aws-sdk-rails-gem/

Railsだと使いづらいらしい?(oshiroさんいわく)

完全に嘘をついてしまいました。