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

72
© 2017 NTT DATA Corporation 2017年5月25日 株式会社 NTTデータ 林 優一郎

Upload: yuichi-hasegawa

Post on 21-Jan-2018

1.269 views

Category:

Education


0 download

TRANSCRIPT

© 2017 NTT DATA Corporation

2017年5月25日株式会社 NTTデータ 林 優一郎

© 2017 NTT DATA Corporation 2

所属: 株式会社NTTデータ ソフトウェア工学推進センタ

名前: 林優一郎

経歴: 入社4年目 1~3年目の間、公共/金融の開発案件に従事 現在はTERASOLUNA Batch FWの整備を担当 Spring Batch歴:約半年

自己紹介

© 2017 NTT DATA Corporation 3

一般的(?)なBatchのイメージ

地味華やかさがない

Webのおまけ

デザインとか無いし、動くものがで

きればそれでいいシステムに必要なのはわかるけど・・・

© 2017 NTT DATA Corporation 4

バッチ処理 【 batch processing 】 一括処理 / バッチ実行 / 一括実行- IT用語辞典 e-Words(http://e-words.jp/w/バッチ処理.html)

バッチ処理とは、一定期間(もしくは一定量)データを集め、まとめて一括処理を行う処理方式。または、複数の手順からなる処理において、あらかじめ一連の手順を登録しておき、自動的に連続処理を行う処理方式。企業における売上データや受注データの集計処理など、一定期間ごとに大量のデータを集めて処理する場合に有効な処理方式である。

キーワードまとめて一括処理大量のデータを集めて処理する場合に有効

バッチ処理とは?

© 2017 NTT DATA Corporation 5

(オンライン)リアルタイム処理 【 real-time processing 】- IT用語辞典 e-Words

(http://e-words.jp/w/リアルタイム処理.html)

リアルタイム処理とは、データの処理要求が発生したときに、即座に処理を実行して結果を返す方式。「リアルタイム」(real-time)は即時の、同時の、実時間の、といった意味の英語表現で、コンピュータが利用者の指示や状況の変化にほとんど同時に反応することを意味する。

キーワード即座に処理

バッチ処理の反対?

© 2017 NTT DATA Corporation 6

オンライン vs バッチ?

地味なバッチ処理だが、システムにはなくてはならない存在!!そんなバッチ処理を実現するSpring Batchが今日の主題です!

オンラインシステム

ブラウザ バッチシステム

リクエスト

レスポンス

入力

出力

対比 実行

即時レスポンス まとめて一括処理

どんなシステムでも絶対あるが・・・結局は裏方。

© 2017 NTT DATA Corporation 7

本日の話のゴール

1. Spring Batchの基本機能や概念いついて知ってもらうこと

2. Spring Batchが「できること」/「できないこと」(強み/弱み)について知ってもらうこと

3. Spring Batchを使った新しいTERASOLUNA Batch FWについて知ってもらうこと

© 2017 NTT DATA Corporation 8

Spring Batchについて

Spring Batchは軽量で簡単なバッチフレームワークであり、エンタープライズシステムにおける日常業務に必要なロバストなバッチアプリケーションの開発のために開発されました。Spring Batchでは大量のデータを処理するために必要となる便利な機能を提供している。

また、Spring Frameworkが提供するAOPやDIなどの機能を利用することが可能である。

http://projects.spring.io/spring-batch/

2008/31.0.0 RELEASE

2009/42.0.0 RELEASE

2014/33.0.0 RELEASE

4.0.0 未定

© 2017 NTT DATA Corporation 9

なぜ今Spring Batchについて話すのか?

JSUGのアンケートでは長年、興味があるテーマの上位にある

⇒ 興味を持っている人は多い

身の回りで話を聞かない、Webでもまとまった情報がない

⇒ 興味をもっている人が少ないのか?

NTTデータの社内事情TERASOLUNAがSpring Batchを使うことにした

⇒ 多くの人にSpring Batchのことを知ってほしい!(TERASOLUNA Batch)

© 2017 NTT DATA Corporation 10

なぜ今Spring Batchについて話すのか?

JSUGのアンケートでは長年、興味があるテーマの上位にある

⇒ 興味を持っている人は多い

身の回りで話を聞かない、Webでもまとまった情報がない

⇒ 興味をもっている人が少ないのか?

NTTデータの社内事情TERASOLUNAがSpring Batchを使うことにした

⇒ 多くの人にSpring Batchのことを知ってほしい!(TERASOLUNA Batch)

今日はTERASOLUNAの取組みで得られた知見をベースに、

Spring Batchの特徴やを伝えます!開発時のポイント

11© 2017 NTT DATA Corporation

1.Spring BatchSpring Batchの基本構成要素/アーキテクチャSpring Batchの5つの特徴エンタープライズ利用時の懸念事項

2.TERASOLUNA Batch FWTERASOLUNAの概要TERASOLUNA Batch FW

本日のコンテンツ

© 2017 NTT DATA Corporation 12

Spring Batch

13© 2017 NTT DATA Corporation

1.Spring BatchSpring Batchの基本構成要素/アーキテクチャSpring Batchの5つの特徴エンタープライズ利用時の懸念事項

2.TERASOLUNA Batch FWTERASOLUNAの概要TERASOLUNA Batch FW

次のセクション

© 2017 NTT DATA Corporation 14

とりあえず、Spring Batch QUICK STARTを動かしてみる

http://projects.spring.io/spring-batch/

© 2017 NTT DATA Corporation 15

Spring Batchの基本構成(チャンクモデル)

■JobLaucherJobを起動するためのインターフェース

■Job:バッチアプリケーションの一連の処理をまとめた1実行単位

■Step:Jobを構成する処理の単位

■JobRepository:JobやStepの状況を管理する機構

■ItemReader/Processor/Writer:実際の処理(入出力、業務処理等)を分割したインタフェース

© 2017 NTT DATA Corporation 16

処理全体の流れ

© 2017 NTT DATA Corporation 17

ItemReader/ItemProcessor/ItemWriterの関係

© 2017 NTT DATA Corporation 18

【参考】xmlファイルでジョブ定義の例

ジョブ定義

Writer定義

Processor定義

Reader定義

基本設定

他の設定ファイル読込みComponent-scan

mybatis

IOや業務処理のbeanを定義

Reader/Processor/Writerをジョブとして定義

19© 2017 NTT DATA Corporation

1.Spring BatchSpring Batchの基本構成要素/アーキテクチャSpring Batchの5つの特徴エンタープライズ利用時の懸念事項

2.TERASOLUNA Batch FWTERASOLUNAの概要TERASOLUNA Batch FW

次のセクション

© 2017 NTT DATA Corporation 20

実際の開発でSpring Batchに求められること

性能

異常時対応

起動方式

入出力IF

開発者

PM

有識者

周辺資材

Spring Batchでの開発経験がある有識者は豊富なのか?

教育用のコンテンツとしてまとまった資材があるのか?

同期実行、非同期実行が選択できるのか?

DB、ファイルなど入出力IOが選択できるのか?様々なファイルフォーマットに対応しているのか?

ジョブの再実行(手動/スケジュール)ができるのか?再実行した時に、処理を未処理部分に絞ることができるのか?

一定量のデータを効率よく処理できるのか?ジョブを並列/多重に実行できるのか?

© 2017 NTT DATA Corporation 21

Spring Batchの主な特徴

要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!

実行状況の永続化、リスタート/スキップ機能

タスクレットモデル、チャンクモデル

コマンドライン実行、 Webコンテナで実行

処理モデル

起動方法

データの入出力

処理の効率化

ジョブの管理

フロー制御、多重実行、並列実行

ファイル、データベース

© 2017 NTT DATA Corporation 22

Spring Batchの主な特徴

要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!

実行状況の永続化、リスタート/スキップ機能

タスクレットモデル、チャンクモデル

コマンドライン実行、 Webコンテナで実行

処理モデル

起動方法

データの入出力

処理の効率化

ジョブの管理

フロー制御、多重実行、並列実行

ファイル、データベース

© 2017 NTT DATA Corporation 23

Spring Batchの処理モデル

タスクレットモデル

Taskletのみで構成トランザクションの数は基本1つリスタート機能なし

チャンクモデル

Reader/Processor/Writerで構成チャンク単位にトランザクションが発生リスタート機能あり

© 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/writerを定義している

© 2017 NTT DATA Corporation 28

タスクレットモデルとチャンクモデルの使い分け例

リカバリを限りなくシンプルにしたい

処理の内容をまとめたい

大量のデータを安定して処理したい

エラー復旧後は未処理データからリスタートしたい

開発チームの習熟度や、現行システムに合わせて“ジョブごと”に適宜選択する。

タスクレットモデル

チャンクモデル

開発時のポイント

© 2017 NTT DATA Corporation 29

【再掲】Spring Batchの主な特徴

要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!

実行状況の永続化、リスタート/スキップ機能

タスクレットモデル、チャンクモデル

コマンドライン実行、 Webコンテナで実行

処理モデル

起動方法

データの入出力

処理の効率化

ジョブの管理

フロー制御、多重実行、並列実行

ファイル、データベース

© 2017 NTT DATA Corporation 30

ジョブの起動方式

同期実行方式

非同期実行方式(Webコンテナ)

© 2017 NTT DATA Corporation 31

ジョブの起動方式の使い分け例 開発時のポイント

業務要件によって実行方式を選択する!

同期実行

非同期実行(Web)

ジョブ実行のタイミングが決まっている

複数のジョブを組合せる(ジョブ実行の条件分岐がある)

バッチ実行に即時性が求められる

処理時間

短い

長い

© 2017 NTT DATA Corporation 32

【再掲】Spring Batchの主な特徴

要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!

実行状況の永続化、リスタート/スキップ機能

タスクレットモデル、チャンクモデル

コマンドライン実行、 Webコンテナで実行

処理モデル

起動方法

データの入出力

処理の効率化

ジョブの管理

フロー制御、多重実行、並列実行

ファイル、データベース

© 2017 NTT DATA Corporation 33

データの入出力

Job

DB

ファイル(xml, csv, tsv等)

入力/出力

対応ファイル形式• フラットファイル• XML(固定長、可変長)

• Oracle• PostgreSQL• MySQL• etc・・・

ジョブの中でIOを定義する!

定義例として「ファイル読込み」「DB書込み」を解説します

© 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が提供するMyBatisBatchItemWriterを定義

© 2017 NTT DATA Corporation 37

【再掲】Spring Batchの主な特徴

要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!

実行状況の永続化、リスタート/スキップ機能

タスクレットモデル、チャンクモデル

コマンドライン実行、 Webコンテナで実行

処理モデル

起動方法

データの入出力

処理の効率化

ジョブの管理

フロー制御、多重実行、並列実行

ファイル、データベース

© 2017 NTT DATA Corporation 38

フロー制御

複数のジョブ(ジョブネット)間の処理の流れを制御すること。スケジューラとフレームワーク機能の両方で実現可能。

Job1

Scheduler

スケジューラ制御

Job2 Job3

JobStep1

Scheduler

Spring Batch制御

Step2 Step3

Spring Batchで制御する場合は、Step単位で実行。

© 2017 NTT DATA Corporation 39

Spring Batchによるシーケンシャルフローの定義方法 開発時のポイント

Job

Step1

Step2

Step3

<batch:step>で、このステップの正常終了後に起動する後続ステップを指定し、next属性に後続ステップのidを設定する。

© 2017 NTT DATA Corporation 40

Spring Batchによる条件分岐フローの定義方法

JobStepA

StepB StepC

FAILEDCOMPLETED

開発時のポイント

<batch:step>要素内にnext属性を指定せず、<batch:next>を複数設定し、on属性には遷移条件となるステップの終了コードを指定する。

© 2017 NTT DATA Corporation 41

フロー制御応用例の紹介

複数の異なるジョブ(ステップ)を、同時実行する並列処理

1ジョブ(ステップ)の処理対象を分割して、同時に実行する多重処理

開発時のポイント

© 2017 NTT DATA Corporation 42

【再掲】Spring Batchの主な特徴

要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!

実行状況の永続化、リスタート/スキップ機能

タスクレットモデル、チャンクモデル

コマンドライン実行、 Webコンテナで実行

処理モデル

起動方法

データの入出力

処理の効率化

ジョブの管理

フロー制御、多重実行、並列実行

ファイル、データベース

© 2017 NTT DATA Corporation 43

ジョブの管理機能

ジョブの起動状態や実行結果を記録および、記録した情報を元に次に行うべき行動を判断する(スケジューラが担っていた、ジョブの状態管理をフレームワークの機能で実現)

障害発生時リスタート制御 二重起動防止等を実現

DataBaseDataBase

1000件

1000件

1000件

1000件

1000件

・・・

コミットインターバルを1000件に設定

障害発生時リスタートの例

障害発生!

実行したジョブの実行結果、実行パラメータ、コンテキスト等が保存される。

リスタート

1000件1000件エラーデータのみ再実行 or

エラーデータから再実行

44© 2017 NTT DATA Corporation

1.Spring BatchSpring Batchの基本構成要素/アーキテクチャSpring Batchの5つの特徴エンタープライズ利用時の懸念事項

2.TERASOLUNA Batch FWTERASOLUNAの概要TERASOLUNA Batch FW

次のセクション

© 2017 NTT DATA Corporation 45

【再掲】実際の開発でSpring Batchに求められること

性能

異常時対応

起動方式

入出力IF

開発者

PM

有識者

周辺資材

Spring Batchでの開発経験がある有識者は豊富なのか?

教育用のコンテンツとしてまとまった資材があるのか?

同期実行、非同期実行が選択できるのか?

DB、ファイルなど入出力IOが選択できるのか?様々なファイルフォーマットに対応しているのか?

ジョブの再実行(手動/スケジュール)ができるのか?再実行した時に、処理を未処理部分に絞ることができるのか?

一定量のデータを効率よく処理できるのか?ジョブを並列/多重に実行できるのか?

開発時のポイント

© 2017 NTT DATA Corporation 46

【再掲】実際の開発でSpring Batchに求められること

性能

異常時対応

起動方式

入出力IF

開発者

PM

有識者

周辺資材

Spring Batchでの開発経験がある有識者は豊富なのか?

教育用のコンテンツとしてまとまった資材があるのか?

同期実行、非同期実行が選択できるのか?

DB、ファイルなど入出力IOが選択できるのか?様々なファイルフォーマットに対応しているのか?

ジョブの再実行(手動/スケジュール)ができるのか?再実行した時に、処理を未処理部分に絞ることができるのか?

一定量のデータを効率よく処理できるのか?ジョブを並列/多重に実行できるのか?

開発時のポイント

© 2017 NTT DATA Corporation 47

【再掲】実際の開発でSpring Batchに求められること

性能

異常時対応

起動方式

入出力IF

開発者

PM

有識者

周辺資材

Spring Batchでの開発経験がある有識者は豊富なのか?

教育用のコンテンツとしてまとまった資材があるのか?

同期実行、非同期実行が選択できるのか?

DB、ファイルなど入出力IOが選択できるのか?様々なフォーマットに対応しているのか?

ジョブの再実行(手動/スケジュール)ができるのか?再実行した時に、処理を未処理部分に絞ることができるのか?

一定量のデータを効率よく処理できるのか?ジョブを並列/多重に実行できるのか?

開発時のポイント

簡単に非同期実行が実現できない!

対応していないものがある!

有識者が不足!

日本語の情報もあまりない!

© 2017 NTT DATA Corporation 48

【起動方式】Webコンテナによる非同期実行の課題 開発時のポイント

障害発生時のリカバリが難しい

• バッチ処理でトラブルが発生した場合、システム構成によってWebサーバを停止しなければならない(Webサーバにバッチを配置した場合) Webとバッチでサーバを分離した場合、サーバ間通信機構を組み込

む必要が出てくる。• トラブル解消後どのジョブをやり直せばよいかがわからない

そもそも・・・もっと簡単に非同期バッチを実現できないのか?

© 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 ⇒ 対応していない!

開発時のポイント

© 2017 NTT DATA Corporation 50

【有識者/周辺資材】Spring Batch有識者や資材

圧倒的に有識者が不足しているとまでは行かない。が、

他の技術要素に比べると扱える人は少ないと思われる。

インターネット上にも日本語で体系的にまとめた情報がすくない。

開発時のポイント

© 2017 NTT DATA Corporation 51

これまでの振り返り

• 日本語で記述された資料が少ない• 有識者や事例が少ないため、開発のノウハウがない• 一部不足機能が存在する

Spring Batchの弱み

Spring Batchの強み

• 大量のデータを処理するために必要となる便利な機能が提供されている。(処理モデル、起動方法等)

• Spring Frameworkの機能を利用することが可能。• WebコンテナによるWebAPとの連動を実現。

© 2017 NTT DATA Corporation 52

TERASOLUNA Batch FW

53© 2017 NTT DATA Corporation

1.Spring BatchSpring Batchの基本構成要素/アーキテクチャSpring Batchの5つの特徴エンタープライズ利用時の懸念事項

2.TERASOLUNA Batch FWTERASOLUNAの概要TERASOLUNA Batch FW

次のセクション

© 2017 NTT DATA Corporation 54

TERASOLUNAとは

Process

Environment

Support蓄積されたノウハウを展開するための研修や教育サービス

サポート数多くのシステム開発で培ったノウハウを盛り込んだ標準開発手順・管理手順

標準手順

ソフトウェアを開発する際の雛形になるフレームワークと開発を支援するツール

開発環境

数多くのシステム開発実績をもとにした「標準手順」「開発環境」「サポート」をトータルで提供しており、TERASOLUNAを活用することで、高品質なシステム開発が実現できます。

TERASOLUNAとは、NTTデータのシステム開発を支えるオープン系システム開発のための総合ソリューション

© 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と同時期!

© 2017 NTT DATA Corporation 56

TERASOLUNA 5.xのコンセプト

これまで 現在

FW自体に付加価値

FWがコモディティ化

Java FWが多数乱立

Java FWはSpringかJava EEの2強

業界動向

当社の取組

独自FWとして整備OSS(Spring)を

最大限活用

これまでのTERASOLUNA 新たなTERASOLUNA

エンタープライズ適用に必要なサポートを提供

サポート提供と合わせてエンタープライズ適用に

必要なガイドラインの充実

© 2017 NTT DATA Corporation 57

TERASOLUNAのコンセプト

2000年頃 現在

FW自体に付加価値

FWがコモディティ化

Java FWが多数乱立

Java FWはSpringかJava EEの2強

業界動向

当社の取組

独自FWとして整備OSS(Spring)を

最大限活用

これまでのTERASOLUNA 新たなTERASOLUNA

エンタープライズ適用に必要なサポートを提供

サポート提供と合わせてエンタープライズ適用に

必要なガイドラインの充実

世の中のOSSを活用してエンタープライズ向けフレームワークを整備

© 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© 2017 NTT DATA Corporation

1.Spring BatchSpring Batchの基本構成要素/アーキテクチャSpring Batchの5つの特徴エンタープライズ利用時の懸念事項

2.TERASOLUNA Batch FWTERASOLUNAの概要TERASOLUNA Batch FW

次のセクション

© 2017 NTT DATA Corporation 60

TERASOLUNA Batch FWの構成要素

•Spring, MyBatisなどのOSSフレームワークソフトウェアフレームワーク

•エンタープライズ向けに必要な汎用的な部品共通ライブラリ

•OSSを利用したエンタープライズ向けアプリ開発に

おけるベストプラクティスドキュメント開発ガイドライン

•基本的な開発方法を学ぶ学習教材チュートリアル

•基本的な機能を実装したサンプルアプリサンプルAP

•プロジェクト構成のひな形ブランクプロジェクト

2017年

リリース

予定

© 2017 NTT DATA Corporation 61

ソフトウェアフレームワーク

Spring Framework

Enterprise Application

Java VM

OSS Libraries

Spring Batch MyBatis3.4.2

4.3.5

3.0.7

TERASOLUNA共通ライブラリ 1.0.0slf4j 1.7.22hibernate 5.2.4

・・・等

Spring IO Platformに準拠したOSSの組合わせを規定

© 2017 NTT DATA Corporation 62

共通ライブラリ

Spring Batchの弱点をTERASOLUNA共通ライブラリの機能として提供

簡易に可用性を担保した非同期実行方式

を実現

ファイルアクセスの諸問題を解決

https://github.com/terasoluna-batch/v5-fw

© 2017 NTT DATA Corporation 63

共通ライブラリ

非同期実行方式として、DBポーリングによるジョブ実行を実現

障害発生時の影響範囲極小化

Webコンテナと比較して製造が容易

TERASOLUNA共通ライブラリとしてDBポーリングを実行する機構

AsycBatchDeamonを提供

© 2017 NTT DATA Corporation 64

共通ライブラリ

非同期実行方式として、DBポーリングによるジョブ実行を実現

同期実行方式スケジュールどおりにジョブを起動したり、複数のジョブを組み合わせてる場合に利用

非同期実行方式(Webコンテナ)DBポーリングと同様だが、起動までの即時性が求められる場合にはこちらを利用

非同期実行方式(DBポーリング)ディレード処理、処理時間が短いジョブの連続実行、大量ジョブの集約などに利用

3通りの起動方式を選択可能

© 2017 NTT DATA Corporation 65

TERASOLUNA共通ライブラリとしてファイルアクセス時の諸問題に

対応した機能を提供!

共通ライブラリ

1. 固定長改行なしファイル、を処理できない spring-batch では、改行までを1レコードとして扱うため

2. マルチバイト文字が正しく処理できない。 spring-batch では、Stringのlengthを元に処理しているため

3. CSVファイルで区切り文字を含んだ文字列を囲み文字でエスケープ出力できない。 spring-batch では、エスケープ処理を実装していないため

© 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アクセスの実装例

同期/非同期実行の実装例

タスクレット/チャンクの実装例

例外処理/並列処理の実装例

https://github.com/terasoluna-batch/v5-functionaltest

© 2017 NTT DATA Corporation 69

ブランクプロジェクト

エンタープライズ開発に必要なノウハウを詰め込んだプロジェクト構成の雛形を提供

Maven Archetype Pluginのarchetype:generateを使用して、プロジェクトを作成

https://github.com/terasoluna-batch/v5-sample

© 2017 NTT DATA Corporation 70

今後の取組み

TERASOLUNA Frameworkに興味がある方は下記までご連絡ください

TERASOLUNA窓口E-mail: [email protected]

NTTデータは今後もJavaアプリケーション開発のベストプラクティスをOSSで提供し続けます

エンタープライズJavaシステム開発で積極的に活用し、情報交換やコミュニティ活動を活発化してさらなるJavaの発展、繁栄に向けて共に歩んでいきましょう。

© 2017 NTT DATA Corporation 71

皆様へのお願い

改善要望はNew issueを!

改善などの要望があれば、お気軽にどうぞ!

© 2017 NTT DATA Corporation

「TERASOLUNA」及びそのロゴは、日本及びその他の国おける株式会社NTTデータの商標または登録商標です。その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商標です。