https://storesinc.tech/conf/2025
STORES ネットショップ には、オーダー一覧をCSVエクスポートする機能があります。オーダー件数が多いとタイムアウトする課題があったため、オーダーが5,000件以上の場合、SidekiqでCSVを非同期作成してメール送信する機能を開発しました。
ところがリリース後、SidekiqのコンテナがOutOfMemoryエラーで強制終了する障害が発生しました。
この障害に対し、データ分割処理やTempfileでメモリ効率を改善するとともに、Sidekiqのリトライ処理や失敗通知を実装しました。さらに本番同等のデータで徹底検証を行い、別のあるあるエラーも乗り越えて、機能の安定稼働を実現しました。この経験を活かして、次の類似機能は迅速に障害無くリリースできました。
非同期処理のOutOfMemoryを乗り越えた経験から、データ規模を意識した開発の重要性と実践方法をお話します。