定期実行とバッチ処理:裏側を支える重要な技術

こんにちは。
デザインシステムの濱口です。

この記事では、定期実行バッチ処理について解説します。
普段の業務ではあまり意識する機会がないかもしれませんが、私たちのサービスを安定稼働させる上で欠かせない重要な技術です。最近対応したタスクで、これらの処理について改めて考える機会があったため、皆さんにその概要と、弊社での活用事例をご紹介します。

処理の流れは、普段の業務経験やAIツールを活用することでコードからある程度把握できますが、使用している技術そのものを深く理解することが重要だと考え、この記事を執筆しました。


定期実行とバッチ処理とは

定期実行とは、指定された時間やタイミングで、プログラムやコマンドを自動的に実行する機能です。例えば、毎日決まった時間にバックアップ処理を実行したり、毎週決まった曜日にレポートを生成したりする際に利用されます。

業務の効率化、人為的なミスや漏れの防止、リソースの有効活用、そして24時間365日の業務対応を可能にします。これにより、業務の品質向上やコスト削減に繋がるメリットがあります。

バッチ処理とは、大量のデータをまとめて一度に処理する方式です。特定の時間帯や一定期間にデータを収集し、まとめて処理することで、効率的にシステムリソースを活用できます。例えば、毎日の売上集計や給与計算などがバッチ処理の例として挙げられます。

負荷のかかる操作を特定の時間にまとめて処理することにより、業務に影響なく対応することができ、リソースも効率的に利用することができます。また、自動化によって手作業による処理を削減できること、大量のデータをまとめて効率的に処理することによる処理時間の短縮などのメリットがあります。


各業界における定期実行の活用例

定期実行とバッチ処理は、様々な業界で効率化と自動化に貢献しています。以下に、各業界での主な活用例をまとめました。

  • 金融業界: 毎日の取引データ集計、月末の帳簿締め処理、定期的な売上・財務レポート生成。
  • 製造業: 生産実績の集計・分析、設備稼働監視やメンテナンススケジューリング、品質検査データの自動集計、医薬品・食品・化学品などのバッチ生産管理。
  • 小売・EC業界: 在庫管理・自動発注、売上データの集計・分析、定期的なキャンペーン情報更新、請求書発行・送付。
  • 公共・自治体: 住民票発行予約データ集計などの住民サービス関連処理、各種申請データのバッチ処理、税金や公共料金の請求サイクル管理。
  • IT・システム運用: データバックアップの自動化、システム監視ログの集計、ETLパイプライン(データ抽出・変換・格納)、データベースのメンテナンス。
  • 物流業界: 日次・月次の配送データ集計、倉庫在庫のバッチ更新、伝票データの自動処理。

弊社サービスでの活用事例

Mealtimeには「栄養士おまかせ定期便」というサービスがあり、お客様一人ひとりの担当栄養士が、検査結果や病院からの指示、健康状態に合わせた食事をご提案し、最適なお食事内容・メニュー数・お届け頻度でご自宅へ配送しています。

栄養士がカウンセリングした注文データは、毎日深夜にcronを活用したバッチ処理で処理しています。具体的には、注文の生成、重複メニューや注文のチェックなどを行っています。

「旬をすぐに」では、「AI旬すぐ(定期コース)」も提供しており、購入履歴やメニューの評価に基づいてお客様のメニューを最適化し、お客様が選んだサイクルで商品をお届けしています。

こちらの注文についても、毎日深夜にLambdaとSidekiqといった異なる技術を採用して処理を行っています。ここでは、提案メニューの生成、確定したメニューでの注文生成、メール送信などを行っています。


負荷分散の重要性

どちらのサービスも異なる技術を使用していますが、大量の処理を一度に行うためサーバーに負荷がかかります。これを回避するため、深夜に処理を実行することで負荷分散を図っています。これにより、日中のユーザー利用に影響を与えることなく、効率的にシステムを運用できています。


サービスの選定

現在では、多種多様なサービスが存在します。そのため、アプリケーションの目的に合った技術を選定し、どのように活用していくかが重要だと考えています。

個人的にはサーバーレスのスケジューラが気になっています。

インフラ管理をそこまで重視しなくて良いことや必要な時に必要な分だけを構築でき、処理が終わったら自動停止と効率よく運用できること。また、コスト面でも条件次第では抑えることもできるといった点が魅力的に思っています。

(例)

AWS Fargate + EventBridge Scheduler(旧CloudWatch Events)

GC Cloud Scheduler + Cloud Run functions

また最近では、MCPサーバーのような新しい技術も注目されており、AIによる技術の進化はますます加速していくと思います。将来的には、AIがバッチ処理の最適化を自動で行うようになるなど、より効率的で高度なシステム運用が実現されると期待しています。


さいごに

現在デザイン・システム室では、新しいメンバーを募集しています。少しでも興味を持たれた方は、ぜひご応募ください✨💻
皆様からのご応募、心よりお待ちしております。

参考資料

https://tech-education-nav.com/contents/educational-materials/backend-development/batch-processing-explained

https://zenn.dev/manase/scraps/0cfabf9cffc27f

https://envader.plus/course/12/scenario/1131

https://aight-hotlife.com/programming-cannot/#toc2

https://cloud.google.com/run/docs/execute/jobs-on-schedule?hl=ja

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/scheduling_tasks.html