talk
もう並列実行は怖くない コネクション枯渇とデッドロック解決の実践的アプローチ
Ruby on Railsを使ったアプリケーションのサービス拡大により、大量データのバッチ処理をRakeタスクで書くという経験はみなさんにもあると思います。より高速化する上で並列処理というのはアプローチの一つとしてあると思いますが、 Rakeタスクの並列化で突如牙を剥くDBコネクションプール枯渇、そして気づかぬうちに忍び寄るデッドロックは多くの開発者を悩ませる根深い問題です。本セッションでは、取り扱う商品数が1000万点を超える弊社マイベストが実際に直面し、実際の案件、失敗例を元にActive Recordのコネクションプールとトランザクションの詳しい仕組みと、RAILS_MAX_THREADSやpoolサイズ、ロック取得順序がサービスにどのように影響するのかを説明します。ECS環境での具体的な設定例から、デッドロックを回避するコード戦略まで、試行錯誤とそこから得た実践的な知見やパラメータの設定方法など共有します。
Speaker
katakyo
株式会社マイベストでバックエンドエンジニアをしています。普段はRuby on Rails, GraphQL, Next.jsを触ります。趣味はサウナとラーメン巡りです。