Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
© 2017 NTT DATA Corporation
2017年5月25日
株式会社 NTTデータ 林 優一郎
© 2017 NTT DATA Corporation 2
所属:
 株式会社NTTデータ ソフトウェア工学推進センタ
名前:
 林優一郎
経歴:
 入社4年目
 1~3年目の間、公共/金融の開発案件に従事
 現在はTERASOLUN...
© 2017 NTT DATA Corporation 3
一般的(?)なBatchのイメージ
地味
華やかさがない
Webのおまけ
デザインとか無いし、
動くものがで
きればそれでいい
システムに必要な
のはわかるけど・・・
© 2017 NTT DATA Corporation 4
バッチ処理 【 batch processing 】 一括処理 / バッチ実行 / 一括実行
- IT用語辞典 e-Words
(http://e-words.jp/w/バッチ処理.h...
© 2017 NTT DATA Corporation 5
(オンライン)リアルタイム処理 【 real-time processing 】
- IT用語辞典 e-Words
(http://e-words.jp/w/リアルタイム処理.html...
© 2017 NTT DATA Corporation 6
オンライン vs バッチ?
地味なバッチ処理だが、システムにはなくてはならない存在!!
そんなバッチ処理を実現するSpring Batchが今日の主題です!
オンライン
システム
ブラ...
© 2017 NTT DATA Corporation 7
本日の話のゴール
1. Spring Batchの基本機能や概念いついて知ってもらうこと
2. Spring Batchが「できること」/「できないこと」(強み/弱み)
について知って...
© 2017 NTT DATA Corporation 8
Spring Batchについて
Spring Batchは軽量で簡単なバッチフレームワークであり、
エンタープライズシステムにおける日常業務に必要なロバストなバッチ
アプリケーション...
© 2017 NTT DATA Corporation 9
なぜ今Spring Batchについて話すのか?
JSUGのアンケートでは長年、興味があるテーマの上位にある
⇒ 興味を持っている人は多い
身の回りで話を聞かない、Webでもまとまった...
© 2017 NTT DATA Corporation 10
なぜ今Spring Batchについて話すのか?
JSUGのアンケートでは長年、興味があるテーマの上位にある
⇒ 興味を持っている人は多い
身の回りで話を聞かない、Webでもまとまっ...
11© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA ...
© 2017 NTT DATA Corporation 12
Spring Batch
13© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA ...
© 2017 NTT DATA Corporation 14
とりあえず、Spring Batch QUICK STARTを動かしてみる
http://projects.spring.io/spring-batch/
© 2017 NTT DATA Corporation 15
Spring Batchの基本構成(チャンクモデル)
■JobLaucher
Jobを起動するためのインターフェース
■Job:
バッチアプリケーションの一連の処理をまとめた1実行単...
© 2017 NTT DATA Corporation 16
処理全体の流れ
© 2017 NTT DATA Corporation 17
ItemReader/ItemProcessor/ItemWriterの関係
© 2017 NTT DATA Corporation 18
【参考】xmlファイルでジョブ定義の例
ジョブ定義
Writer定義
Processor定義
Reader定義
基本設定
他の設定ファイル読込み
Component-scan
myb...
19© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA ...
© 2017 NTT DATA Corporation 20
実際の開発でSpring Batchに求められること
性能
異常時対応
起動方式
入出力IF
開発者
PM
有識者
周辺資材
Spring Batchでの開発経験がある有識者は豊富な...
© 2017 NTT DATA Corporation 21
Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレットモデル、...
© 2017 NTT DATA Corporation 22
Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレットモデル、...
© 2017 NTT DATA Corporation 23
Spring Batchの処理モデル
タスクレットモデル
Taskletのみで構成
トランザクションの数は基本1つ
リスタート機能なし
チャンクモデル
Reader/Processo...
© 2017 NTT DATA Corporation 24
タスクレットジョブの定義例 開発時のポイント
© 2017 NTT DATA Corporation 25
SimpleJobTaskletの実装例
JobのBean定義
タスクレットの実装
入出力/業務処理
をコーディング
© 2017 NTT DATA Corporation 26
チャンクジョブの定義例 開発時のポイント
© 2017 NTT DATA Corporation 27
タスクレットジョブとチャンクジョブ 開発時のポイント
タスクレットモデル
チャンクモデル
taskletのbean定義参照の代わりにチャンクとし
てreader/processor/...
© 2017 NTT DATA Corporation 28
タスクレットモデルとチャンクモデルの使い分け例
リカバリを限りなくシンプルにしたい
処理の内容をまとめたい
大量のデータを安定して処理したい
エラー復旧後は未処理データから
リスター...
© 2017 NTT DATA Corporation 29
【再掲】Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレット...
© 2017 NTT DATA Corporation 30
ジョブの起動方式
同期実行方式
非同期実行方式(Webコンテナ)
© 2017 NTT DATA Corporation 31
ジョブの起動方式の使い分け例 開発時のポイント
業務要件によって実行方式を選択する!
同期実行
非同期実行(Web)
ジョブ実行のタイミングが決まっている
複数のジョブを組合せる
(...
© 2017 NTT DATA Corporation 32
【再掲】Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレット...
© 2017 NTT DATA Corporation 33
データの入出力
Job
DB
ファイル
(xml, csv, tsv等)
入力/出力
対応ファイル形式
• フラットファイル
• XML(固定長、可変長)
• Oracle
• Po...
© 2017 NTT DATA Corporation 34
データ入出力定義の例(ファイル読込み)
LineMapperの定義
Tokenizerの定義
FieldSetMapperの定義
開発時のポイント
Bean定義
© 2017 NTT DATA Corporation 35
データ入出力定義の例(ファイル読込み) 開発時のポイント
Bean定義
定義したreaderをItemReaderに設定(チャンク)
© 2017 NTT DATA Corporation 36
データ入出力定義の例(DB書込み) 開発時のポイント
Bean定義
Mapper XML
Mapper IF
MyBatis-Springが提供するMyBatisBatchItemW...
© 2017 NTT DATA Corporation 37
【再掲】Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレット...
© 2017 NTT DATA Corporation 38
フロー制御
複数のジョブ(ジョブネット)間の処理の流れを制御すること。
スケジューラとフレームワーク機能の両方で実現可能。
Job1
Scheduler
スケジューラ制御
Job2 ...
© 2017 NTT DATA Corporation 39
Spring Batchによるシーケンシャルフローの定義方法 開発時のポイント
Job
Step1
Step2
Step3
<batch:step>で、このステップの正常終了後に起動...
© 2017 NTT DATA Corporation 40
Spring Batchによる条件分岐フローの定義方法
Job
StepA
StepB StepC
FAILEDCOMPLETED
開発時のポイント
<batch:step>要素内に...
© 2017 NTT DATA Corporation 41
フロー制御応用例の紹介
複数の異なるジョブ(ステップ)を、
同時実行する並列処理
1ジョブ(ステップ)の処理対象を分
割して、同時に実行する多重処理
開発時のポイント
© 2017 NTT DATA Corporation 42
【再掲】Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレット...
© 2017 NTT DATA Corporation 43
ジョブの管理機能
ジョブの起動状態や実行結果を記録および、記録した情報を元に次に行うべき行動を判断する
(スケジューラが担っていた、ジョブの状態管理をフレームワークの機能で実現)
障...
44© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA ...
© 2017 NTT DATA Corporation 45
【再掲】実際の開発でSpring Batchに求められること
性能
異常時対応
起動方式
入出力IF
開発者
PM
有識者
周辺資材
Spring Batchでの開発経験がある有識者...
© 2017 NTT DATA Corporation 46
【再掲】実際の開発でSpring Batchに求められること
性能
異常時対応
起動方式
入出力IF
開発者
PM
有識者
周辺資材
Spring Batchでの開発経験がある有識者...
© 2017 NTT DATA Corporation 47
【再掲】実際の開発でSpring Batchに求められること
性能
異常時対応
起動方式
入出力IF
開発者
PM
有識者
周辺資材
Spring Batchでの開発経験がある有識者...
© 2017 NTT DATA Corporation 48
【起動方式】Webコンテナによる非同期実行の課題 開発時のポイント
障害発生時のリカバリが難しい
• バッチ処理でトラブルが発生した場合、システム構成によってWebサーバ
を停止しな...
© 2017 NTT DATA Corporation 49
【入出力IF】ファイルアクセス時の諸問題
現在稼働しているエンタープライズシステムでは、様々な形式のCSVファイルが利用されている。
対応出来ないファイルが存在すること、業務AP開発...
© 2017 NTT DATA Corporation 50
【有識者/周辺資材】Spring Batch有識者や資材
圧倒的に有識者が不足しているとまでは行かない。
が、
他の技術要素に比べると扱える人は少ない
と思われる。
インターネット上...
© 2017 NTT DATA Corporation 51
これまでの振り返り
• 日本語で記述された資料が少ない
• 有識者や事例が少ないため、開発のノウハウがない
• 一部不足機能が存在する
Spring Batchの弱み
Spring ...
© 2017 NTT DATA Corporation 52
TERASOLUNA Batch FW
53© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA ...
© 2017 NTT DATA Corporation 54
TERASOLUNAとは
Process
Environment
Support
蓄積されたノウハウ
を展開するための
研修や教育サービス
サポート
数多くのシステム開発で
培ったノ...
© 2017 NTT DATA Corporation 55
OSSのJava Batch FW
2008/1.0.0 2009/2.0.0 2014/3.0.0 未定/4.0.0
2008/2.x 2011/3.x NEW!
2017/5.x...
© 2017 NTT DATA Corporation 56
TERASOLUNA 5.xのコンセプト
これまで 現在
FW自体に
付加価値
FWが
コモディティ化
Java FWが
多数乱立
Java FWは
SpringかJava EEの2...
© 2017 NTT DATA Corporation 57
TERASOLUNAのコンセプト
2000年頃 現在
FW自体に
付加価値
FWが
コモディティ化
Java FWが
多数乱立
Java FWは
SpringかJava EEの2強
...
© 2017 NTT DATA Corporation 58
TERASOLUNA Batch FW for Java 5.x
業界の動向を考慮し、Spring Batchをベースと
既存のOSSを組み合わせた
新しいフレームワークの提供を開始...
59© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA ...
© 2017 NTT DATA Corporation 60
TERASOLUNA Batch FWの構成要素
•Spring, MyBatisなどのOSSフレームワークソフトウェアフレームワーク
•エンタープライズ向けに必要な汎用的な部品共通...
© 2017 NTT DATA Corporation 61
ソフトウェアフレームワーク
Spring Framework
Enterprise Application
Java VM
OSS
Libraries
Spring Batch My...
© 2017 NTT DATA Corporation 62
共通ライブラリ
Spring Batchの弱点を
TERASOLUNA共通ライブラリの機能として提供
簡易に可用性を担保
した非同期実行方式
を実現
ファイルアクセスの
諸問題を解決...
© 2017 NTT DATA Corporation 63
共通ライブラリ
非同期実行方式として、
DBポーリングによるジョブ実行を実現
障害発生時の影響範囲極小化
Webコンテナと比較して
製造が容易
TERASOLUNA共通ライブラリとし...
© 2017 NTT DATA Corporation 64
共通ライブラリ
非同期実行方式として、
DBポーリングによるジョブ実行を実現
 同期実行方式
スケジュールどおりにジョブを起動したり、複数のジョブを組み合わせてる場合に利用
 非...
© 2017 NTT DATA Corporation 65
TERASOLUNA共通ライブラリとして
ファイルアクセス時の諸問題に
対応した機能を提供!
共通ライブラリ
1. 固定長改行なしファイル、を処理できない
 spring-batc...
© 2017 NTT DATA Corporation 66
開発ガイドライン
https://github.com/terasoluna-batch/v5-guideline
開発者向けのガイドラインを公開!
Spring Batchに限らず...
© 2017 NTT DATA Corporation 67
【参考】開発ガイドラインのノウハウ一例
方式の活用シーンを明確化!
陥りやすい設計ミス、実装ミスを掲載!
開発ガイドラインにより、各方針のメリット/デメリットを明記し、
実装例も掲載...
© 2017 NTT DATA Corporation 68
サンプルAP
様々な機能の実装例をサンプルとして提供!
ファイル/DBアクセスの実装例
同期/非同期実行の実装例
タスクレット/チャンクの実装例
例外処理/並列処理の実装例
等
ht...
© 2017 NTT DATA Corporation 69
ブランクプロジェクト
エンタープライズ開発に必要なノウハウを詰め込んだ
プロジェクト構成の雛形を提供
Maven Archetype Pluginのarchetype:generat...
© 2017 NTT DATA Corporation 70
今後の取組み
TERASOLUNA Frameworkに興味がある方は下記までご連絡ください
TERASOLUNA窓口
E-mail: terasoluna@am.nttdata.c...
© 2017 NTT DATA Corporation 71
皆様へのお願い
改善要望は
New issueを!
改善などの要望があれば、お気軽にどうぞ!
© 2017 NTT DATA Corporation
「TERASOLUNA」及びそのロゴは、日本及びその他の国おける株式会社NTTデータの商標または登録商標です。
その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商...
Upcoming SlideShare
Loading in …5
×

20170525 jsug バッチは地味だが役に立つ

2,634 views

Published on

2017 5月 JSUG 勉強会資料

Published in: Education
  • Be the first to comment

  • Be the first to like this

20170525 jsug バッチは地味だが役に立つ

  1. 1. © 2017 NTT DATA Corporation 2017年5月25日 株式会社 NTTデータ 林 優一郎
  2. 2. © 2017 NTT DATA Corporation 2 所属:  株式会社NTTデータ ソフトウェア工学推進センタ 名前:  林優一郎 経歴:  入社4年目  1~3年目の間、公共/金融の開発案件に従事  現在はTERASOLUNA Batch FWの整備を担当  Spring Batch歴:約半年 自己紹介
  3. 3. © 2017 NTT DATA Corporation 3 一般的(?)なBatchのイメージ 地味 華やかさがない Webのおまけ デザインとか無いし、 動くものがで きればそれでいい システムに必要な のはわかるけど・・・
  4. 4. © 2017 NTT DATA Corporation 4 バッチ処理 【 batch processing 】 一括処理 / バッチ実行 / 一括実行 - IT用語辞典 e-Words (http://e-words.jp/w/バッチ処理.html) バッチ処理とは、一定期間(もしくは一定量)データを集め、まとめて一括処理を行う 処理方式。または、複数の手順からなる処理において、あらかじめ一連の手順を登 録しておき、自動的に連続処理を行う処理方式。 企業における売上データや受注データの集計処理など、一定期間ごとに大量の データを集めて処理する場合に有効な処理方式である。 キーワード まとめて一括処理 大量のデータを集めて処理する場合に有効 バッチ処理とは?
  5. 5. © 2017 NTT DATA Corporation 5 (オンライン)リアルタイム処理 【 real-time processing 】 - IT用語辞典 e-Words (http://e-words.jp/w/リアルタイム処理.html) リアルタイム処理とは、データの処理要求が発生したときに、即座に処理を実行して 結果を返す方式。「リアルタイム」(real-time)は即時の、同時の、実時間の、といった 意味の英語表現で、コンピュータが利用者の指示や状況の変化にほとんど同時に反 応することを意味する。 キーワード 即座に処理 バッチ処理の反対?
  6. 6. © 2017 NTT DATA Corporation 6 オンライン vs バッチ? 地味なバッチ処理だが、システムにはなくてはならない存在!! そんなバッチ処理を実現するSpring Batchが今日の主題です! オンライン システム ブラウザ バッチ システム リクエスト レスポンス 入力 出力 対比 実行 即時レスポンス まとめて一括処理 どんなシステムでも絶対あるが・・・結局は裏方。
  7. 7. © 2017 NTT DATA Corporation 7 本日の話のゴール 1. Spring Batchの基本機能や概念いついて知ってもらうこと 2. Spring Batchが「できること」/「できないこと」(強み/弱み) について知ってもらうこと 3. Spring Batchを使った新しいTERASOLUNA Batch FW について知ってもらうこと
  8. 8. © 2017 NTT DATA Corporation 8 Spring Batchについて Spring Batchは軽量で簡単なバッチフレームワークであり、 エンタープライズシステムにおける日常業務に必要なロバストなバッチ アプリケーションの開発のために開発されました。Spring Batchでは 大量のデータを処理するために必要となる便利な機能を提供している。 また、Spring Frameworkが提供するAOPやDIなどの機能を利用すること が可能である。 http://projects.spring.io/spring-batch/ 2008/3 1.0.0 RELEASE 2009/4 2.0.0 RELEASE 2014/3 3.0.0 RELEASE 4.0.0 未定
  9. 9. © 2017 NTT DATA Corporation 9 なぜ今Spring Batchについて話すのか? JSUGのアンケートでは長年、興味があるテーマの上位にある ⇒ 興味を持っている人は多い 身の回りで話を聞かない、Webでもまとまった情報がない ⇒ 興味をもっている人が少ないのか? NTTデータの社内事情 TERASOLUNAがSpring Batchを使うことにした ⇒ 多くの人にSpring Batchのことを知ってほしい! (TERASOLUNA Batch)
  10. 10. © 2017 NTT DATA Corporation 10 なぜ今Spring Batchについて話すのか? JSUGのアンケートでは長年、興味があるテーマの上位にある ⇒ 興味を持っている人は多い 身の回りで話を聞かない、Webでもまとまった情報がない ⇒ 興味をもっている人が少ないのか? NTTデータの社内事情 TERASOLUNAがSpring Batchを使うことにした ⇒ 多くの人にSpring Batchのことを知ってほしい! (TERASOLUNA Batch) 今日はTERASOLUNAの取組みで 得られた知見をベースに、 Spring Batchの特徴や を伝えます!開発時のポイント
  11. 11. 11© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 本日のコンテンツ
  12. 12. © 2017 NTT DATA Corporation 12 Spring Batch
  13. 13. 13© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  14. 14. © 2017 NTT DATA Corporation 14 とりあえず、Spring Batch QUICK STARTを動かしてみる http://projects.spring.io/spring-batch/
  15. 15. © 2017 NTT DATA Corporation 15 Spring Batchの基本構成(チャンクモデル) ■JobLaucher Jobを起動するためのインターフェース ■Job: バッチアプリケーションの一連の処理をまとめた1実行単位 ■Step: Jobを構成する処理の単位 ■JobRepository: JobやStepの状況を管理する機構 ■ItemReader/Processor/Writer: 実際の処理(入出力、業務処理等)を分割したインタフェース
  16. 16. © 2017 NTT DATA Corporation 16 処理全体の流れ
  17. 17. © 2017 NTT DATA Corporation 17 ItemReader/ItemProcessor/ItemWriterの関係
  18. 18. © 2017 NTT DATA Corporation 18 【参考】xmlファイルでジョブ定義の例 ジョブ定義 Writer定義 Processor定義 Reader定義 基本設定 他の設定ファイル読込み Component-scan mybatis IOや業務処理のbeanを定義 Reader/Processor/Writerを ジョブとして定義
  19. 19. 19© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  20. 20. © 2017 NTT DATA Corporation 20 実際の開発でSpring Batchに求められること 性能 異常時対応 起動方式 入出力IF 開発者 PM 有識者 周辺資材 Spring Batchでの開発経験がある有識者は豊富なのか? 教育用のコンテンツとしてまとまった資材があるのか? 同期実行、非同期実行が選択できるのか? DB、ファイルなど入出力IOが選択できるのか? 様々なファイルフォーマットに対応しているのか? ジョブの再実行(手動/スケジュール)ができるのか? 再実行した時に、処理を未処理部分に絞ることができるのか? 一定量のデータを効率よく処理できるのか? ジョブを並列/多重に実行できるのか?
  21. 21. © 2017 NTT DATA Corporation 21 Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  22. 22. © 2017 NTT DATA Corporation 22 Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  23. 23. © 2017 NTT DATA Corporation 23 Spring Batchの処理モデル タスクレットモデル Taskletのみで構成 トランザクションの数は基本1つ リスタート機能なし チャンクモデル Reader/Processor/Writerで構成 チャンク単位にトランザクションが発生 リスタート機能あり
  24. 24. © 2017 NTT DATA Corporation 24 タスクレットジョブの定義例 開発時のポイント
  25. 25. © 2017 NTT DATA Corporation 25 SimpleJobTaskletの実装例 JobのBean定義 タスクレットの実装 入出力/業務処理 をコーディング
  26. 26. © 2017 NTT DATA Corporation 26 チャンクジョブの定義例 開発時のポイント
  27. 27. © 2017 NTT DATA Corporation 27 タスクレットジョブとチャンクジョブ 開発時のポイント タスクレットモデル チャンクモデル taskletのbean定義参照の代わりにチャンクとし てreader/processor/writerを定義している
  28. 28. © 2017 NTT DATA Corporation 28 タスクレットモデルとチャンクモデルの使い分け例 リカバリを限りなくシンプルにしたい 処理の内容をまとめたい 大量のデータを安定して処理したい エラー復旧後は未処理データから リスタートしたい 開発チームの習熟度や、現行システムに合わせて “ジョブごと”に適宜選択する。 タスクレットモデル チャンクモデル 開発時のポイント
  29. 29. © 2017 NTT DATA Corporation 29 【再掲】Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  30. 30. © 2017 NTT DATA Corporation 30 ジョブの起動方式 同期実行方式 非同期実行方式(Webコンテナ)
  31. 31. © 2017 NTT DATA Corporation 31 ジョブの起動方式の使い分け例 開発時のポイント 業務要件によって実行方式を選択する! 同期実行 非同期実行(Web) ジョブ実行のタイミングが決まっている 複数のジョブを組合せる (ジョブ実行の条件分岐がある) バッチ実行に即時性が求められる 処理時間 短い 長い
  32. 32. © 2017 NTT DATA Corporation 32 【再掲】Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  33. 33. © 2017 NTT DATA Corporation 33 データの入出力 Job DB ファイル (xml, csv, tsv等) 入力/出力 対応ファイル形式 • フラットファイル • XML(固定長、可変長) • Oracle • PostgreSQL • MySQL • etc・・・ ジョブの中でIOを定義する! 定義例として「ファイル読込み」「DB書込み」を解説します
  34. 34. © 2017 NTT DATA Corporation 34 データ入出力定義の例(ファイル読込み) LineMapperの定義 Tokenizerの定義 FieldSetMapperの定義 開発時のポイント Bean定義
  35. 35. © 2017 NTT DATA Corporation 35 データ入出力定義の例(ファイル読込み) 開発時のポイント Bean定義 定義したreaderをItemReaderに設定(チャンク)
  36. 36. © 2017 NTT DATA Corporation 36 データ入出力定義の例(DB書込み) 開発時のポイント Bean定義 Mapper XML Mapper IF MyBatis-Springが提供するMyBatisBatchItemWriterを定義
  37. 37. © 2017 NTT DATA Corporation 37 【再掲】Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  38. 38. © 2017 NTT DATA Corporation 38 フロー制御 複数のジョブ(ジョブネット)間の処理の流れを制御すること。 スケジューラとフレームワーク機能の両方で実現可能。 Job1 Scheduler スケジューラ制御 Job2 Job3 Job Step1 Scheduler Spring Batch制御 Step2 Step3 Spring Batchで制御する 場合は、Step単位で実行。
  39. 39. © 2017 NTT DATA Corporation 39 Spring Batchによるシーケンシャルフローの定義方法 開発時のポイント Job Step1 Step2 Step3 <batch:step>で、このステップの正常終了後に起動する 後続ステップを指定し、next属性に後続ステップのidを 設定する。
  40. 40. © 2017 NTT DATA Corporation 40 Spring Batchによる条件分岐フローの定義方法 Job StepA StepB StepC FAILEDCOMPLETED 開発時のポイント <batch:step>要素内にnext属性を指定せず、 <batch:next>を複数設定し、on属性には遷移条 件となるステップの終了コードを指定する。
  41. 41. © 2017 NTT DATA Corporation 41 フロー制御応用例の紹介 複数の異なるジョブ(ステップ)を、 同時実行する並列処理 1ジョブ(ステップ)の処理対象を分 割して、同時に実行する多重処理 開発時のポイント
  42. 42. © 2017 NTT DATA Corporation 42 【再掲】Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  43. 43. © 2017 NTT DATA Corporation 43 ジョブの管理機能 ジョブの起動状態や実行結果を記録および、記録した情報を元に次に行うべき行動を判断する (スケジューラが担っていた、ジョブの状態管理をフレームワークの機能で実現) 障害発生時リスタート制御 二重起動防止 等を実現 DataBaseDataBase 1000件 1000件 1000件 1000件 1000件 ・ ・ ・ コミットインターバルを 1000件に設定 障害発生時リスタートの例 障害発生! 実行したジョブの実行結果、 実行パラメータ、コンテキスト等が保存される。 リスタート 1000件1000件 エラーデータのみ再実行 or エラーデータから再実行
  44. 44. 44© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  45. 45. © 2017 NTT DATA Corporation 45 【再掲】実際の開発でSpring Batchに求められること 性能 異常時対応 起動方式 入出力IF 開発者 PM 有識者 周辺資材 Spring Batchでの開発経験がある有識者は豊富なのか? 教育用のコンテンツとしてまとまった資材があるのか? 同期実行、非同期実行が選択できるのか? DB、ファイルなど入出力IOが選択できるのか? 様々なファイルフォーマットに対応しているのか? ジョブの再実行(手動/スケジュール)ができるのか? 再実行した時に、処理を未処理部分に絞ることができるのか? 一定量のデータを効率よく処理できるのか? ジョブを並列/多重に実行できるのか? 開発時のポイント
  46. 46. © 2017 NTT DATA Corporation 46 【再掲】実際の開発でSpring Batchに求められること 性能 異常時対応 起動方式 入出力IF 開発者 PM 有識者 周辺資材 Spring Batchでの開発経験がある有識者は豊富なのか? 教育用のコンテンツとしてまとまった資材があるのか? 同期実行、非同期実行が選択できるのか? DB、ファイルなど入出力IOが選択できるのか? 様々なファイルフォーマットに対応しているのか? ジョブの再実行(手動/スケジュール)ができるのか? 再実行した時に、処理を未処理部分に絞ることができるのか? 一定量のデータを効率よく処理できるのか? ジョブを並列/多重に実行できるのか? 開発時のポイント
  47. 47. © 2017 NTT DATA Corporation 47 【再掲】実際の開発でSpring Batchに求められること 性能 異常時対応 起動方式 入出力IF 開発者 PM 有識者 周辺資材 Spring Batchでの開発経験がある有識者は豊富なのか? 教育用のコンテンツとしてまとまった資材があるのか? 同期実行、非同期実行が選択できるのか? DB、ファイルなど入出力IOが選択できるのか? 様々なフォーマットに対応しているのか? ジョブの再実行(手動/スケジュール)ができるのか? 再実行した時に、処理を未処理部分に絞ることができるのか? 一定量のデータを効率よく処理できるのか? ジョブを並列/多重に実行できるのか? 開発時のポイント 簡単に非同期実行が実現できない! 対応していないものがある! 有識者が不足! 日本語の情報もあまりない!
  48. 48. © 2017 NTT DATA Corporation 48 【起動方式】Webコンテナによる非同期実行の課題 開発時のポイント 障害発生時のリカバリが難しい • バッチ処理でトラブルが発生した場合、システム構成によってWebサーバ を停止しなければならない(Webサーバにバッチを配置した場合)  Webとバッチでサーバを分離した場合、サーバ間通信機構を組み込 む必要が出てくる。 • トラブル解消後どのジョブをやり直せばよいかがわからない そもそも・・・ もっと簡単に非同期バッチを実現できないのか?
  49. 49. © 2017 NTT DATA Corporation 49 【入出力IF】ファイルアクセス時の諸問題 現在稼働しているエンタープライズシステムでは、様々な形式のCSVファイルが利用されている。 対応出来ないファイルが存在すること、業務AP開発者はSpring Batchを避けるかも… 対応できない文字やフォーマットが存在する 1. 固定長改行なしファイルを処理できない  spring-batch では、改行までを1レコードとして扱うため 2. マルチバイト文字が正しく処理できない。  spring-batch では、Stringのlengthを元に処理しているため 【例】: 期待 "𠮷田 太郎".substring(0, 2); // => "𠮷“ 実際 "𠮷田 太郎".substring(0, 3); // => "𠮷" 3. CSVファイルで区切り文字を含んだ文字列を囲み文字でエスケープ出力できない。  spring-batch では、エスケープ処理を実装していないため [例]:“aa,a”,bbb,ccc ⇒ 対応していない! 開発時のポイント
  50. 50. © 2017 NTT DATA Corporation 50 【有識者/周辺資材】Spring Batch有識者や資材 圧倒的に有識者が不足しているとまでは行かない。 が、 他の技術要素に比べると扱える人は少ない と思われる。 インターネット上にも日本語で体系的にまとめた 情報がすくない。 開発時のポイント
  51. 51. © 2017 NTT DATA Corporation 51 これまでの振り返り • 日本語で記述された資料が少ない • 有識者や事例が少ないため、開発のノウハウがない • 一部不足機能が存在する Spring Batchの弱み Spring Batchの強み • 大量のデータを処理するために必要となる便利な機能が 提供されている。(処理モデル、起動方法等) • Spring Frameworkの機能を利用することが可能。 • WebコンテナによるWebAPとの連動を実現。
  52. 52. © 2017 NTT DATA Corporation 52 TERASOLUNA Batch FW
  53. 53. 53© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  54. 54. © 2017 NTT DATA Corporation 54 TERASOLUNAとは Process Environment Support 蓄積されたノウハウ を展開するための 研修や教育サービス サポート 数多くのシステム開発で 培ったノウハウを盛り込んだ 標準開発手順・管理手順 標準手順 ソフトウェアを開発する際の 雛形になるフレームワーク と開発を支援するツール 開発環境 数多くのシステム開発実績をもとにした「標準手順」「開発環境」「サポート」を トータルで提供しており、TERASOLUNAを活用することで、 高品質なシステム開発が実現できます。 TERASOLUNAとは、NTTデータのシステム開発を支える オープン系システム開発のための総合ソリューション
  55. 55. © 2017 NTT DATA Corporation 55 OSSのJava Batch FW 2008/1.0.0 2009/2.0.0 2014/3.0.0 未定/4.0.0 2008/2.x 2011/3.x NEW! 2017/5.x 2000年代前半/ 1.x (非OSS) Java EE 2013/EE7 未定/EE8 Spring Batch TERASOLUNAは10年以上の歴史を持つFWで、 OSS化もSpring Batchと同時期!
  56. 56. © 2017 NTT DATA Corporation 56 TERASOLUNA 5.xのコンセプト これまで 現在 FW自体に 付加価値 FWが コモディティ化 Java FWが 多数乱立 Java FWは SpringかJava EEの2強 業 界 動 向 当 社 の 取 組 独自FWとして整備 OSS(Spring)を 最大限活用 これまでのTERASOLUNA 新たなTERASOLUNA エンタープライズ適用に 必要なサポートを提供 サポート提供と合わせて エンタープライズ適用に 必要なガイドラインの充実
  57. 57. © 2017 NTT DATA Corporation 57 TERASOLUNAのコンセプト 2000年頃 現在 FW自体に 付加価値 FWが コモディティ化 Java FWが 多数乱立 Java FWは SpringかJava EEの2強 業 界 動 向 当 社 の 取 組 独自FWとして整備 OSS(Spring)を 最大限活用 これまでのTERASOLUNA 新たなTERASOLUNA エンタープライズ適用に 必要なサポートを提供 サポート提供と合わせて エンタープライズ適用に 必要なガイドラインの充実 世の中のOSSを活用して エンタープライズ向け フレームワークを整備
  58. 58. © 2017 NTT DATA Corporation 58 TERASOLUNA Batch FW for Java 5.x 業界の動向を考慮し、Spring Batchをベースと 既存のOSSを組み合わせた 新しいフレームワークの提供を開始 Java VM Enterprise Application Spring Framework OSS Libraries Spring Batch MyBatis NEW
  59. 59. 59© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  60. 60. © 2017 NTT DATA Corporation 60 TERASOLUNA Batch FWの構成要素 •Spring, MyBatisなどのOSSフレームワークソフトウェアフレームワーク •エンタープライズ向けに必要な汎用的な部品共通ライブラリ •OSSを利用したエンタープライズ向けアプリ開発に おけるベストプラクティスドキュメント開発ガイドライン •基本的な開発方法を学ぶ学習教材チュートリアル •基本的な機能を実装したサンプルアプリサンプルAP •プロジェクト構成のひな形ブランクプロジェクト 2017年 リリース 予定
  61. 61. © 2017 NTT DATA Corporation 61 ソフトウェアフレームワーク Spring Framework Enterprise Application Java VM OSS Libraries Spring Batch MyBatis 3.4.2 4.3.5 3.0.7 TERASOLUNA共通ライブラリ 1.0.0 slf4j 1.7.22 hibernate 5.2.4 ・・・等 Spring IO Platformに準拠した OSSの組合わせを規定
  62. 62. © 2017 NTT DATA Corporation 62 共通ライブラリ Spring Batchの弱点を TERASOLUNA共通ライブラリの機能として提供 簡易に可用性を担保 した非同期実行方式 を実現 ファイルアクセスの 諸問題を解決 https://github.com/terasoluna-batch/v5-fw
  63. 63. © 2017 NTT DATA Corporation 63 共通ライブラリ 非同期実行方式として、 DBポーリングによるジョブ実行を実現 障害発生時の影響範囲極小化 Webコンテナと比較して 製造が容易 TERASOLUNA共通ライブラリとして DBポーリングを実行する機構 AsycBatchDeamonを提供
  64. 64. © 2017 NTT DATA Corporation 64 共通ライブラリ 非同期実行方式として、 DBポーリングによるジョブ実行を実現  同期実行方式 スケジュールどおりにジョブを起動したり、複数のジョブを組み合わせてる場合に利用  非同期実行方式(Webコンテナ) DBポーリングと同様だが、起動までの即時性が求められる場合にはこちらを利用  非同期実行方式(DBポーリング) ディレード処理、処理時間が短いジョブの連続実行、大量ジョブの集約などに利用 3通りの起動方式を選択可能
  65. 65. © 2017 NTT DATA Corporation 65 TERASOLUNA共通ライブラリとして ファイルアクセス時の諸問題に 対応した機能を提供! 共通ライブラリ 1. 固定長改行なしファイル、を処理できない  spring-batch では、改行までを1レコードとして扱うため 2. マルチバイト文字が正しく処理できない。  spring-batch では、Stringのlengthを元に処理しているため 3. CSVファイルで区切り文字を含んだ文字列を囲み文字でエスケープ出力できない。  spring-batch では、エスケープ処理を実装していないため
  66. 66. © 2017 NTT DATA Corporation 66 開発ガイドライン https://github.com/terasoluna-batch/v5-guideline 開発者向けのガイドラインを公開! Spring Batchに限らず、バッチアプリケーション開発のノウハウが集結! 検索
  67. 67. © 2017 NTT DATA Corporation 67 【参考】開発ガイドラインのノウハウ一例 方式の活用シーンを明確化! 陥りやすい設計ミス、実装ミスを掲載! 開発ガイドラインにより、各方針のメリット/デメリットを明記し、 実装例も掲載しているため、設計/実装の助けとなりえる 設定ファイル例、実装例が豊富!
  68. 68. © 2017 NTT DATA Corporation 68 サンプルAP 様々な機能の実装例をサンプルとして提供! ファイル/DBアクセスの実装例 同期/非同期実行の実装例 タスクレット/チャンクの実装例 例外処理/並列処理の実装例 等 https://github.com/terasoluna-batch/v5-functionaltest
  69. 69. © 2017 NTT DATA Corporation 69 ブランクプロジェクト エンタープライズ開発に必要なノウハウを詰め込んだ プロジェクト構成の雛形を提供 Maven Archetype Pluginのarchetype:generate を使用して、プロジェクトを作成 https://github.com/terasoluna-batch/v5-sample
  70. 70. © 2017 NTT DATA Corporation 70 今後の取組み TERASOLUNA Frameworkに興味がある方は下記までご連絡ください TERASOLUNA窓口 E-mail: terasoluna@am.nttdata.co.jp NTTデータは今後もJavaアプリケーション開発の ベストプラクティスをOSSで提供し続けます エンタープライズJavaシステム開発で積極的に活用し、 情報交換やコミュニティ活動を活発化して さらなるJavaの発展、繁栄に向けて共に歩んでいきましょう。
  71. 71. © 2017 NTT DATA Corporation 71 皆様へのお願い 改善要望は New issueを! 改善などの要望があれば、お気軽にどうぞ!
  72. 72. © 2017 NTT DATA Corporation 「TERASOLUNA」及びそのロゴは、日本及びその他の国おける株式会社NTTデータの商標または登録商標です。 その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商標です。

×