inflearn logo
知識共有
inflearn logo

カカオ面接官の実務密着型Spring Batch:大容量データ処理のすべて

数百万件以上のデータを処理するバッチシステムを運用しながら感じる最大の問題は、性能の低下と障害発生時の復旧の難しさです。単純な繰り返し文や誤った設計では、これらの問題を解決することはできません。この講義では、実際のサービス環境で大容量データを安定的に処理してきた経験をもとに、Spring Batchの構造と動作原理を理解し、これを活用して性能と安定性の両立を実現する設計手法を伝えます。単なる機能説明にとどまらず、実務ですぐに適用可能なバッチアーキテクチャを通じて、データ処理に対する根本的な解決能力を養えるようサポートします。

難易度 入門

受講期間 無制限

Java
Java
Spring
Spring
Spring Boot
Spring Boot
Spring Batch
Spring Batch
spring-framework
spring-framework
Java
Java
Spring
Spring
Spring Boot
Spring Boot
Spring Batch
Spring Batch
spring-framework
spring-framework

受講後に得られること

  • 大容量データ(数百万〜数千万件)を安定的に処理できるSpring Batch設計能力

  • チャンクベースの処理、トランザクション管理、Retry/Skip戦略を実際のコードで実装する実践的な能力

  • Job / Step構造を活用し、拡張可能でメンテナンス性の高いバッチアーキテクチャを設計する能力

  • 障害発生時の再処理および復旧戦略を自ら設計し、適用できる問題解決能力

  • マルチスレッド、パーティショニングなどを活用したバッチ性能の最適化および並列処理の実装経験

⚡ 皆さんのBatch処理アプリケーション.. お元気ですか??

😁 Toss 開発者 : 最近バッチを回すたびにパンクしそうで怖い… データが多すぎるんだ。

😄Kakao 面接官 : 何件くらい処理してるの?? 金融系だから、かなり多そうだけど。

😁 Toss開発者 : 一度回せば数千万件は基本だよ… でも処理速度も問題だし、障害が起きた時の復旧もすごく大変なんだ。Springが少し重いから、そのせいもある気がするし…

😄 Naver 面接官 : うーん…そうかな?? Spring自体は重いけど、Multi Threadedとかを適用すれば、DBの問題でない限り、そこまでヘビーに回ることはなかったけどな。

😄Kakao面接官 : 私も同意。復旧が難しいというのも、Listenerとかを導入して見てみれば、正直そんなにすごく難しいとも思わないな。SkipやRetryとかを入れれば、個別にTransactionもサポートしてくれるからね。

😁 Toss 開発者 : 確かにそうだけど… なんでこんなに遅いんだろう?? Spring Batch、適当に勉強しちゃったのかな(笑)

😄Kakao 面接官 : 君ならそうだろうね(笑)これ、僕が一度講義にまとめてみるよ。思ったよりSpring Batchについてよく知らない方が多いみたいだから。

😄Hong : もう… 僕の予定も聞かずに、とりあえず投げつけてくるね;;

Java, Spring, Spring Boot, Spring Batch, spring-framework

⎈ 大容量データのバッチ処理、ただの繰り返し文で解決していませんか?

実務でデータを処理する際、単純なCRUDを超える瞬間が必ず訪れます。

  • 数百万〜数千万件のデータ処理

  • 障害発生時の再処理の問題

  • トランザクション管理とパフォーマンスの問題

  • バッチスケジューリングと運用

これらすべての問題を数行のコードで解決できるでしょうか?それとも数万行のコードを書かなければならないのでしょうか?いいえ、そのような方法では皆さんのSpring Applicationは安全ではありません。

ですので、この講義ではSpring Batchを活用した大容量データ処理設計のための多様な観点と機能を扱っています。単に「バッチを動かす方法」ではないという点を、ぜひ念頭に置いてください。

👉 実際のサービスで使用可能な構造をどのように設計するのか

👉 データを安定的に処理する方法は何なのか

👉 Spring Batchのパフォーマンスを極限まで高める方法は何か

👉 単なるデータ処理を超えて、モニタリングはどのように行えるのか

🚀 単に理論だけを扱う講義ではありません。実際の多様なソースコードを通じて Spring Batchという機能を直接使用し、実装する方法を学習する時間を持っていただければと思います。

🌳 なぜ Spring Batch なのか!!

Spring Batchは、大容量データ処理のためのフレームワークであり、単なる反復作業を超えて安定性と拡張性を考慮した処理を可能にします。

Spring Batchは次のような特徴を持っています。

  • Chunkベースの処理モデル
    → 大量データを一定の単位に分割して処理することで、メモリ使用量とパフォーマンスを最適化

  • トランザクション管理
    → Chunk単位でトランザクションを管理し、失敗時に安定したロールバックおよび再処理が可能

  • Retry / Skip / Fault Tolerance
    → 特定のデータ処理失敗時に、全体を中断するのではなく柔軟な復旧戦略を提供

  • Job / Step ベースの構造
    → 複雑なバッチロジックを段階的に分割し、明確に設計可能

  • ExecutionContextベースの状態管理
    → 中断された作業を継続して実行できるrestart機能を提供

  • 大容量データ処理の最適化
    → マルチスレッド、パーティショニング、並列処理などを通じて性能を最大化可能

公式ドキュメントでは、Spring Batchを次のように説明しています。

エンタープライズシステムの日常業務に不可欠な、堅牢なバッチアプリケーションの開発を可能にするために設計された、軽量で包括的なバッチフレームワーク。

Spring Batchは、ロギング/トレーシング、トランザクション管理、ジョブ処理統計、ジョブリスタート、スキップ、リソース管理など、大量のレコードを処理する際に不可欠な再利用可能な機能を提供します。また、最適化およびパーティショニング技術を通じて、極めて大量かつ高性能なバッチジョブを可能にする、より高度な技術サービスと機能も提供します。単純なバッチジョブから複雑で大量のデータを扱うバッチジョブまで、このフレームワークを高度なスケーラビリティを持って活用し、膨大な情報を処理することができます。

(Spring Batchは、企業システムの日常的な運用に不可欠な安定したバッチアプリケーション開発を可能にする軽量かつ包括的なバッチフレームワークです。大容量データ処理に必要なロギングおよびトレース、トランザクション管理、ジョブ処理統計、ジョブ再起動、Skip処理、リソース管理といったコア機能を再利用可能な形で提供し、これにより複雑なバッチロジックをより安定的に実装できます。また、最適化およびパーティショニングなどの技法を活用して超大容量データ処理と高性能バッチ作業をサポートし、シンプルなバッチから複雑で大規模なバッチ作業まで拡張可能な構造で設計されており、大量のデータを安定的に処理できるよう支援するフレームワークです。)

皆さん、現代的なバックエンドシステムでは、単にAPIサーバーをうまく作るだけでは終わりません。

👉 データは溜まり続け
👉 そのデータを加工し
👉 安定的に処理する能力

まさにこれらが実務における開発者の競争力になります。この講義を通じて、Spring Batchを単なる「技術」ではなく、大容量データを扱う核心的なツールとして理解し、実務ですぐに活用できるバッチ設計能力を身につけていただけることを願っています。 🚀

🍡 実際の講義内容をチラ見せ

静かに背後で動作するインフラオブジェクト JobRepositoryとJobLauncher、そしてExecutionContext

Spring Batchが管理するWorkFlowのためのDDL

一つのReaderを共有し、並列処理を提供するMulti Threaded Step

この講義の特徴

📌 カカオの面接官の視点から見た、Spring Batchを使用するために必ず知っておくべき概念

  • 単に機能を説明するのではなく、実際の面接や実務で重要視されるポイントを中心に、
    Spring Batchをどのように設計すべきかをお教えします。


📌 90%以上が実習で構成されたカリキュラム

  • バッチは理論だけでは理解しにくいものです。直接実装して実行しながら、データがどのように処理されるのか、どこでボトルネックが発生するのかを体感できるように構成しました。


📌 ジュニア → シニアを分ける核心的な能力、「データ処理」

  • ただAPIを作るのが上手な開発者、APIだけを作ってきた開発者から、データの流れまで設計できる開発者へと成長できる機会を、この講義で提供します。


🤭 この講義を共に準備してくださったカカオ面接官の経歴

Choi (Kakao)

講師の名前をクリックして、より詳細な経歴も確認してみてください!

12年目のバックエンドサーバー開発者で、カ카오(Kakao)でサーバー開発をしながら面接官としても活動しているChoi(略称)と申します。

Hong氏とは以前Conferenceで縁があり、講義活動の中盤から継続して共に積極的に参加しながら、様々なテーマで講義を作ってきた経歴があります。このように講義を作り上げながら、多くの方々と対話し、コミュニケーションを取ることは、私の開発者人生において大きな助けとなり、多様な視点を学べる時間であると考えており、より幅広いテーマを扱うために努力しています。

いわゆる大企業という一つの経歴が、優れた開発者であることを証明するわけではないと考えていますが、少なくとも一般的なプラットフォームに比べて、より多くのトラフィックや経験を積むことができると考えています。このような部分を常に講義に盛り込みながら、お伝えしていきたいと思います。

[現] カカオ本社 サーバー開発者

[前] ソウル4年制大学 コンピュータ工学専攻

注意事項

実習環境

  • OS :

    Apple M3 Air

  • Java : java 17.0.12 2024-07-16 LTS

  • IDE : VsCode

皆さんのキャリアを準備していくためのオープンチャットルームを運営しています。たくさんの関心をお願いします!

こんな方に
おすすめです

学習対象は
誰でしょう?

  • バッチ処理が遅かったり頻繁に失敗したりしているが、原因を正確に把握できていないバックエンドエンジニア

  • 大容量データ処理時にメモリや性能の問題でサービス障害を経験したことのある開発者

  • Spring Batchを使用しているが、構造を正しく理解できていないため、非効率に実装している開発者

  • 障害発生時の再処理や復旧ロジックをどのように設計すべきか途方に暮れている開発者

  • 単なるCRUDを超えて、データ処理中心のバックエンド開発者として成長したいエンジニア

こんにちは
Hongです。

7,992

受講生

503

受講レビュー

144

回答

4.7

講座評価

27

講座

自己紹介

家でだらだら過ごしていたところ、開発に興味を持ち始めて勉強をスタートし、現在は板橋(パンギョ)でプラットフォームサーバーの開発を担当しています。私自身が勉強してきた方法や、実務で直面しうる様々な問題点とその解決策を皆さんに提供したいと考え、知識共有者としての活動を続けています。

 

講義は私一人の知識だけで作られるものではありません。すべての講義には、共に作り上げてくださる方々がいます。

 

知識共有者の経歴

[前] サンドボックスIP関連のブロックチェーン開発者

[前] メタバースバックエンド開発者

[] 板橋(パンギョ)でベテランになりつつあるサーバー開発者

 

インタビュー履歴

その他のお問い合わせ

  • unduck2022@gmail.com

もっと見る

カリキュラム

全体

24件 ∙ (5時間 24分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

2件

5.0

2件の受講レビュー

  • kyletes6021420님의 프로필 이미지
    kyletes6021420

    受講レビュー 2

    平均評価 5.0

    5

    92% 受講後に作成

    面接官の方の素晴らしい見識を伺うことができた、とても良い講義でした。実務での開発を始めてからかなり経ちますが、まだまだ学ぶべきことが多いということをこの講義を通じて改めて実感しました。 素晴らしい内容をありがとうございました。

    • youngba8935643님의 프로필 이미지
      youngba8935643

      受講レビュー 10

      平均評価 5.0

      5

      88% 受講後に作成

      講義とても楽しく拝見しました。初めて学ぶSpring Batchに関する内容でしたが、初めて聞いてもすべて理解できるほど分かりやすく説明してくださり、とても助かりました!

      Hongの他の講座

      知識共有者の他の講座を見てみましょう!

      似ている講座

      同じ分野の他の講座を見てみましょう!

      期間限定セール

      ¥39

      50%

      ¥12,668