SlideShare a Scribd company logo
1 of 53
© 2020 NTT DATA Corporation
今こそ知りたいSpring Batch
2020/12/17
株式会社NTTデータ 公共・社会基盤事業推進部
橋本 直樹
© 2020 NTT DATA Corporation 2
0.はじめに -自己紹介-
橋本 直樹(Naoki Hashimoto)
株式会社NTTデータ
公共・社会基盤事業推進部 プロジェクト推進統括部 技術戦略担当
シニア・エキスパート
• 開発経験
• 主に、Spring Framework(TERASOLUNA Framework)を用いたWebアプリケーション
開発
• OAuth2.0の仕様に沿った、API認可アプリケーション開発
• Spring Security OAuth(現在は、SpringSecurity5に統合)で実装
• 最近の開発
• AWS上のコンテナ環境で動作するSpring Batchアプリケーション開発
© 2020 NTT DATA Corporation 3
0.はじめに -想定聴講者-
• これから、バッチアプリケーションを開発しなければならないが、そもそもバッチっ
てなに?
• Spring FrameworkでWebアプリを作ったことはあるけど、Spring Batch
はつかったことがない・・・
※サンプルコードはSpring Boot前提となります
• Spring Batchのことは知ってるけど、アーキテクチャとかよくわからないし、使い
方もよくわからない・・・
© 2020 NTT DATA Corporation 4
アジェンダ
1. バッチ処理とは?
2. Spring Batchとは?
3. Spring Batchのアーキテクチャ
【基本編】
– ジョブの構成(Job、Step)
– ビジネスロジックの実装(Tasklet、Chunk)
– ジョブの起動
– ジョブ実行管理
【応用編】
– ジョブの再実行方式(リラン、リスタート)
– フロー制御
– 並列処理
– 多重処理
4. クラウド環境でのSpring Batch (SpringBatchのアーキテクチャ 【番外編】)
5. さいごに
© 2020 NTT DATA Corporation
バッチ処理とは?
Spring Batchとは?
© 2020 NTT DATA Corporation 6
1.バッチ処理とは? ~バッチ処理の定義~
• データ処理におけるバッチ処理は、ひとまとまりのデータを一括して処理する
方式である
• 逐次生み出されるデータを一定期間・一定量集めたものをバッチといい、この
バッチ単位で処理をおこなう方式がバッチ処理である
※バッチ処理, Wikipedia, https://tinyurl.com/y43v4ulr, (参照2020-11-25)
© 2020 NTT DATA Corporation 7
1.バッチ処理とは? ~バッチ処理パターン~
• パターン1
あらかじめ登録した一連の処理を自動的に実行する処理方式(※処理
量は大小様々)
• スケジュール起動
• イベント起動(ファイル格納等)
• オンラインディレード(REST API起動)
企業等の業務システムではこちらのパターンであることが多い
• パターン2
 大量データに対する処理といった重い処理を、一括して実施する
 大規模シミュレーターやAIの機械学習等
© 2020 NTT DATA Corporation 8
2.Spring Batchとは?
• Spring Frameworkをベースとした、バッチアプリケーションを開発するためのアプリケーショ
ンフレームワーク
• 以下の機能を提供
 処理の流れを定型化(tasklet、chunk)
 様々なジョブ起動方式(コマンドライン、キュー等)
 様々なデータ形式への入出力(ファイル、データべース等)
 ジョブの実行管理(実行状態管理、ジョブの再実行等)
 処理の効率化(多重実行、並列実行等)
※Spring Batchのアーキテクチャ, TERASOLUNA Batch Framework for Java (5.x) Development Guideline,https://tinyurl.com/y5x477hg, (参照2020-11-25)
© 2020 NTT DATA Corporation
Spring Batchのアーキテクチャ
【基本編】
© 2020 NTT DATA Corporation 10
3.Spring Batchのアーキテクチャ -ジョブの構成-
Job1
Step1 Step2 StepN
・・・
JobRepository
・・・
JobN
JobLauncher(or JobOperator)
© 2020 NTT DATA Corporation 11
3.Spring Batchのアーキテクチャ -ジョブの構成-
Job1
Step1 Step2 StepN
・・・
JobRepository
・・・
JobN
JobLauncher(or JobOperator) Jobを起動
© 2020 NTT DATA Corporation 12
3.Spring Batchのアーキテクチャ -ジョブの構成-
Job1
Step1 Step2 StepN
・・・
JobRepository
・・・
JobN
JobLauncher(or JobOperator) SpringBatchが
バッチ処理を行う単位
© 2020 NTT DATA Corporation 13
3.Spring Batchのアーキテクチャ -ジョブの構成-
Job1
Step1 Step2 StepN
・・・
JobRepository
・・・
JobN
JobLauncher(or JobOperator) Jobは複数のStepで構成され、
Stepでデータへの処理を行う
© 2020 NTT DATA Corporation 14
3.Spring Batchのアーキテクチャ -ジョブの構成-
Job1
Step1 Step2 StepN
・・・
JobRepository
・・・
JobN
JobLauncher(or JobOperator) JobRepositoryでJob、Stepの
実行状態を管理する
© 2020 NTT DATA Corporation 15
3.Spring Batchのアーキテクチャ -ビジネスロジック実装-
Chunk
• 3つのインターフェースで構成されており、データを読み込み、業務処理、書きこみを実施
• フラットファイル(CSV等)、XMLファイル、JSONファイル、DBアクセスを扱うのを容
易にするために、サポートクラスも用意されている
• 処理対象となるデータを1件ずつ処理するのではなく、一定件数のチャンクを単位とする
• トランザクションは、チャンク単位の中間コミット方式となる
Step
ItemReader ItemProcessor ItemWriter
Data
Chunk Chunk
Item
Item
Item
Item
© 2020 NTT DATA Corporation 16
3.Spring Batchのアーキテクチャ -ビジネスロジック実装-
Tasklet
• executeという1つのメソッドをもつ単純なインターフェースで、Chunkに比べて実装も容易
• Chunkモデルに当てはまらないような処理(入力データに関係のない処理)や、順序性
の担保が必要な処理(コントロールブレイク処理等)に向いている
• トランザクションは、Tasklet処理単位の一括コミット方式となる
• TaskletからServiceクラスなどを呼び出す際は、そのトランザクション属性に注意
• Serviceを別トランザクションとする場合は、Transactionalアノテーションのpropagation属性を
REQUIRES_NEWとする等
Step
Tasklet
© 2020 NTT DATA Corporation 17
3.Spring Batchのアーキテクチャ -ジョブの構成、ビジネスロジック実装-
@Configuration
@EnableBatchProcessing
public class JobConfig extends DefaultBatchConfigurer {
//omitted
@Bean
public Step step01() {
return stepBuilderFactory.get(“step01”).tasklet(tasklet()).build();
}
@Bean
public Job job() throws Exception {
return jobBuilderFactory.get(“job”)
.incrementer(new RunIdIncrementer())
.listener(listener())
.start(step01()).build();
}
//omitted
}
Job,Stepのサンプル(Configクラス)※Taskletの場合
Step01を実行するJob
Tasklet01を実行する
Step
SpringBatchを有効にする
© 2020 NTT DATA Corporation 18
3.Spring Batchのアーキテクチャ -ジョブの構成、ビジネスロジック実装-
Job,Stepのサンプル(Configクラス)※Chunkの場合
@Bean
public Step step02() {
return stepBuilderFactory.get("step02")
.<String, String> chunk(10)
.reader(itemReader())
.processor(itemProcessor())
.writer(itemWriter())
.build();
}
@Bean
public Job job() throws Exception {
return jobBuilderFactory.get(“job”)
.incrementer(new RunIdIncrementer())
.listener(listener())
.start(step02()).build();
}
1つのchunkで扱う
アイテム数
© 2020 NTT DATA Corporation 19
3.Spring Batchのアーキテクチャ -ジョブの起動-
• 実行時にジョブを順次起動
• デフォルトでは、Bean定義されたジョブが順次起動される
• application.yml等でspring.batch.job.enabled = false とすると無効
• Javaコマンド引数により起動
• ShellScriptなどで、ComandLineJobRunnerを経由して起動する
• 引数として、ジョブ起動設定ファイルパスやJobIDを設定する
• キュー、DB等をポーリングして非同期実行
• 監視処理を作成し、キューやDBを監視(SpringBatchは監視処理をもっていない)
• 監視処理から、JobOperator経由で起動する
© 2020 NTT DATA Corporation 20
3.Spring Batchのアーキテクチャ -ジョブの起動-
Listener
• JobやStepの実行前後やエラー発生時に処理を挿入するためのインターフェース
• Listenerないで、開始終了ログの出力を行ったりする
• 様々なListenerインターフェースがあるが、以下が一般的
• JobExecutionListener
• StepExecutionListener
• ChunkListener
• ItemReadListener、ItemProcessListener、ItemWriteListener
© 2020 NTT DATA Corporation 21
3.Spring Batchのアーキテクチャ -ジョブの起動-
public class JobListener extends JobExecutionListenerSupport {
@Override
public void beforeJob(JobExecution jobExecution) {
super.beforeJob(jobExecution);
System.out.println("Start JOB");
}
@Override
public void afterJob(JobExecution jobExecution) {
super.afterJob(jobExecution);
System.out.println("End JOB");
}
}
Listenerのサンプルコード
Job実行後に
呼び出される
Job実行前に
呼び出される
© 2020 NTT DATA Corporation 22
3.Spring Batchのアーキテクチャ -ジョブ実行管理-
• JobInstance :ジョブを管理する論理的な単位
• ジョブ名(ジョブID)+ジョブパラメータのセットを一意に管理
• 同一キー情報のJobInstanceは生成されない(実行エラーとなる)
• ジョブは二重実行されない
• JobExecution :ジョブを管理する物理的な実行単位
• 失敗したジョブに対して再実行すると、新しいJobExecutionが作成される
• StepExecution:ステップを管理する物理的な実行単位
JobInstance
JobExecution
StepExecution
*
*
1
1
© 2020 NTT DATA Corporation 23
3.Spring Batchのアーキテクチャ -ジョブ実行管理-
JobRepositoryのメタデータスキーマ
• ジョブ実行管理はDB等で実施
• デフォルトではインメモリで管理
• 永続化が必要な場合は、自身でDBと
スキーマを用意する必要あり
※付録A:メタデータスキーマ, Spring Batch(Ver.4.3.0) - リファレンスドキュメント, https://tinyurl.com/y6cmdrrd, (参照2020-11-25)
© 2020 NTT DATA Corporation 24
3.Spring Batchのアーキテクチャ -ジョブ実行管理-
ジョブの実行ステータス
ステータス 説明 リスタート可否
COMPLETED 実行成功 ×
FAILED 実行失敗 ○
STARTED 実行中 ×
STARTING 開始前 ×
STOPPING 停止待ち ×
STOPPED 停止 ○
ABANDANED 失敗したが処理完了、再起動時スキップ ×
UNKNOWN 状態不明 ×
※BatchStatus, Spring Batch(Ver.4.3.0) - APIドキュメント, https://spring.pleiades.io/spring-batch/docs/4.3.x/api/, (参照2020-11-25)
© 2020 NTT DATA Corporation
Spring Batchのアーキテクチャ
【応用編】
© 2020 NTT DATA Corporation 26
3.Spring Batchのアーキテクチャ -ジョブの再実行方式-
再実行方式には大きく分けて、リラン、リスタートの2種類がある
• リラン
• ジョブを最初からやり直す方式
• Taskletモデルが適している
• リスタート
• ジョブが中断したところから処理を再開する方式
• 正常に処理できていたものをスキップし、未処理のものから処理を再開
• Chunkモデルが適している
© 2020 NTT DATA Corporation 27
3.Spring Batchのアーキテクチャ -ジョブの再実行方式-
リラン
• リラン時、まったく同一の「ジョブ名(ジョブID)+ジョブパラメータ」では起動できない
• 二重実行防止機能が働くため、ジョブパラメータを変更しリランする
• 業務データの初期化等が必要(業務処理のべきとう性を担保することが望ましい)
JobInstance1
JobExecution1-1
リラン JobInstance2
JobExecution2-1
© 2020 NTT DATA Corporation 28
3.Spring Batchのアーキテクチャ -ジョブの再実行方式-
リスタート
• 処理再開位置を保持、取得し、再開位置までのデータスキップが必要
• Chunkモデルを適用することで、比較的実現しやすい(中間コミットモデル)
• 失敗したジョブのJobExecutionIDに対して「-restart」と指定することでリスタート可能
• JobLauncherやJobOperatorから指定可能
JobInstance1
JobExecution1-1
リスタート
JobExecution1-2
ジョブパラメータは、
JobRepositoryから復元
© 2020 NTT DATA Corporation 29
Job1
3.Spring Batchのアーキテクチャ -フロー制御-
Step1
Step2
Step3
シーケンシャルフロー
• 全てのStepが順番に実行されるジョブ
© 2020 NTT DATA Corporation 30
Job1
3.Spring Batchのアーキテクチャ -フロー制御-
シーケンシャルフロー
• 全てのStepが順番に実行されるジョブ
• Step中の処理が異常終了した場合は、後続ステップを実行されない
• Step2が失敗した場合、Step3は実行されない
Step1
Step2
Step3
実行されない
© 2020 NTT DATA Corporation 31
Job1
3.Spring Batchのアーキテクチャ -フロー制御-
シーケンシャルフロー
• 全てのStepが順番に実行されるジョブ
• Step中の処理が異常終了した場合は、後続ステップを実行されない
• Step2が失敗した場合、Step3は実行されない
• 異常終了の原因を取り除き、ジョブをリスタートした場合、異常終了し
たStepから処理をやり直すことが可能
• Job1をリスタートした場合、Step2からリスタート
Step1
Step2
Step3
正常終了Stepは
実行されない
リスタート
© 2020 NTT DATA Corporation 32
3.Spring Batchのアーキテクチャ -フロー制御-
Jobのサンプル(シーケンシャルフロー)
@Bean
public Job job() throws Exception {
return jobBuilderFactory.get("job")
.incrementer(new RunIdIncrementer())
.listener(listener())
.start(step01())
.next(step02())
.next(step03())
.build();
}
startで最初のStepを指定し、nextで次のStepをつなげていく
Step1
Step2
Step3
© 2020 NTT DATA Corporation 33
3.Spring Batchのアーキテクチャ -フロー制御-
条件分岐
• Stepの実行結果(ExitStatus)によって、後続の
Stepを変更する
• 実行結果がFAILED以外の状態で、ジョブが終了して
しまった場合、リスタートできなくなることがある
Job1
Step1
Step3 Step2
成功
したか?
Yes
No
© 2020 NTT DATA Corporation 34
3.Spring Batchのアーキテクチャ -フロー制御-
Jobのサンプル(条件分岐)
@Bean
public Job job() throws Exception {
return jobBuilderFactory.get("job")
.incrementer(new RunIdIncrementer())
.listener(listener())
.start(step01())
.on("*").to(step03())
.from(step01()).on("FAILED").to(step02())
.end()
.build();
}
Step1
Step3 Step2
成功
したか?
Yes
No
onで実行結果の文字列判定句を設定し、
toで一致した場合のstepを指定
※「*」はゼロ個以上の文字に一致する
© 2020 NTT DATA Corporation 35
3.Spring Batchのアーキテクチャ -並列処理-
マルチスレッドステップ
• 単一プロセス上で、Step(チャンク)単位でスレッドを作成
• マルチスレッド化される際は、順序性が担保されないので、アイテムの処理に順序性が必
要な場合は、本ステップは採用できない
並行ステップ
• 単一プロセス上で、スプリットフロー(複数のStepの連なり)単位でスレッドを作成
© 2020 NTT DATA Corporation 36
3.Spring Batchのアーキテクチャ -並列処理-
@Bean
public TaskExecutor taskExecutor() {
return new SimpleAsyncTaskExecutor("spring_batch");
}
@Bean
public Step step02() {
return stepBuilderFactory.get("step02")
.<String, String> chunk(10)
.reader(itemReader())
.processor(itemProcessor())
.writer(itemWriter())
.taskExecutor(taskExecutor)
.throttleLimit(10)
.build();
}
Stepのサンプル(マルチスレッドステップ)
Chunkごとに、新しい
スレッドを作成する
スレッド数はデフォルトでは最大
4つまでしか生成できないので、
最大値を増やす場合に設定
© 2020 NTT DATA Corporation 37
3.Spring Batchのアーキテクチャ -並列処理-
Flowのサンプル(並行ステップ)
@Bean
public Flow flow1() {
return new FlowBuilder<SimpleFlow>("flow1")
.start(step01())
.next(step02())
.build();
}
@Bean
public Flow flow2() {
return new FlowBuilder<SimpleFlow>("flow2")
.start(step03())
.build();
}
step01→step02というStepの
連なりを1つのFlowとする
step03の実行を1つのFlowとする
Flow1
Step1
Step2
Flow2
Step3
© 2020 NTT DATA Corporation 38
3.Spring Batchのアーキテクチャ -並列処理-
Jobのサンプル(並行ステップ)
@Bean
public Job job() {
return jobBuilderFactory.get("job")
.start(splitFlow())
.next(step04())
.build()
.build();
}
@Bean
public Flow splitFlow() {
return new FlowBuilder<SimpleFlow>("splitFlow")
.split(taskExecutor())
.add(flow1(), flow2())
.build();
}
Flow1
Step1
Step2
Flow2
Step3
Step4
Flow1、Flow2を別スレッドで並走させる
Flow1+Flow2の並走完了後、Step04を実行
© 2020 NTT DATA Corporation 39
3.Spring Batchのアーキテクチャ -多重処理-
パーティショニング
• Stepの実行を分割してマルチスレッドで実行する
• Manager内の処理を特定の件数ごとに、自動的に分割しWorkerを作成する
• 全てのWorkerの処理が完了したら、ManagerのStepを完了とする
Job1
Step1
Step2(Manager)
Step3
Worker
Worker
Worker
Worker
Worker
© 2020 NTT DATA Corporation 40
3.Spring Batchのアーキテクチャ -多重処理-
@Bean
public Step stepManager() {
return stepBuilderFactory
.get("step2.manager")
.partitioner(step02())
.partitioner("step2", partitioner())
.gridSize(10)
.taskExecutor(taskExecutor())
.build();
}
@Bean
public Partitioner partitioner() {
return new Partitioner01();
}
Stepのサンプル(Manegerステップ)
Step02をパーティション化
パーティショナーを追加
パーティションの分割数を設定
© 2020 NTT DATA Corporation 41
3.Spring Batchのアーキテクチャ -多重処理-
public class Partitioner01 implements Partitioner {
@Override
public Map<String, ExecutionContext> partition(int gridSize) {
Map<String, ExecutionContext> map = new HashMap<>();
int maxSize = 1000; // 実際は対象itemの件数を設定
int dataSize = maxSize / gridSize; // 1つのWorkerで扱うデータサイズ
int offset = 0; // 初期位置からのオフセット
for (int i = 0; i < gridSize; i++ ) {
ExecutionContext context = new ExecutionContext();
context.putInt("dataSize", dataSize);
context.putInt("offset", offset);
offset += dataSize;
map.put("partition:" + i, context);
}
return map;
}
}
Partitionerのサンプル Partitonerインターフェースを実装
スレッドを識別する文字列と、スレッドに引き
渡したいパラメータ(ExecutionContext)
をセットでMapに設定して返却
実際にItemReaderなどで
実施する処理に合わせて
変更する
© 2020 NTT DATA Corporation
クラウド環境でのSpring Batch
※Spring Batchのアーキテクチャ
【番外編】
© 2020 NTT DATA Corporation 43
4.クラウド環境でのSpring Batch -クラウド環境におけるバッチアプリケーション開発-
以下のような理由から、バッチ処理はパブリッククラウドサービスと親和性が高い
① バッチ処理は決まった時間のみ起動すればよく、パブリッククラウドサービスを利用した場合、
コストメリットを得やすい
 インスタンスの種類や起動時間に対して課金されるため
② 大量データを扱う場合、容易にスケールアウト可能であるため、業務量に応じたリソース
設計が実現可能
 余分なリソースを予め用意する必要がなく、コスト削減が狙える
AWSにおける、バッチアーキテクチャに適したマネージドサービスを紹介し、
そのサービスでSpring Batchを利用する際の注意点を紹介する
© 2020 NTT DATA Corporation 44
4.クラウド環境でのSpring Batch -バッチアーキテクチャに適したサービス-
AWS Cloud
Auto Scaling group
VPC
ECS
JobQueue
AWS Batch
JobDefinition
ECR
Cloud Watch Logs
AWS Batchの利用
• AWS Batchの実態は、ECS(コンテナオーケストレーションサービス)と独自のキュー
• ECSをそのまま構築する際に考慮する必要がある、クラスタやサービス等が自動構築されるので構築が容易
• キューにメッセージが送信されると、JobDefinitionに記載された定義の通りコンテナが起動する
• コンテナはキューにメッセージが登録されてから起動するため、起動時間のバッファを考慮する必要あり
・・・ ・・・
コンテナイメージ
メッセージ登録 ログ出力
© 2020 NTT DATA Corporation 45
4.クラウド環境でのSpring Batch -バッチアーキテクチャに適したサービス-
ECS + SQSの利用
• 性能要件が厳しく、AWS Batchの起動時間が無視できない場合はECS + SQSの構成で対応
• AWS Batchの起動時間はコンテナイメージのつくりにより異なる
• ECS上でコンテナを常時起動することで、起動コストが発生しないようにする(維持コストは上がる)
• JobQueueの代わりにSQSを利用
• それぞれ個別に構築する必要があるので、構築コストは上がる
AWS Cloud
VPC
SQS
ECS
バッチAP1 バッチAP2 バッチAP3
・・・
キュー1 キュー2
・・・
メッセージ登録
© 2020 NTT DATA Corporation 46
4.クラウド環境でのSpring Batch -アプリケーションのコンテナ化-
• 紹介したマネージドサービスは、全てコンテナアプリケーションを前提としている
• Spring Batchで作成したアプリケーションのDocker Imageを作成し、ECR(AWSの
提供するDockerHubサービス)にpushする必要がある
 Dockerfileを作成しDocker Imageを用意する
FROM amazoncorretto:11
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar","-Dfile.encoding=UTF-8"]
Dockerfileのサンプル AWSの提供するOpenJDK11をベースとする
Maven等で作成したjarファイルをコピー
コンテナ起動時にJavaコ
マンドでSpring Batchアプ
リケーションを起動
© 2020 NTT DATA Corporation 47
4.クラウド環境でのSpring Batch -アプリケーションのスケールアウト-
• 紹介したマネージドサービスは、キューに滞留したメッセージの量によって、コンテナを新たに
起動することによって、スケールアウトを実現可能
• アプリケーションは、コンテナが増えた際にスケールアウト可能な単位でジョブを設計する必
要がある
• 1ジョブで大量のファイルを取り扱う場合、複数のジョブから扱うファイルを重複させな
いようにする制御は難しく、結局、1つのジョブでやり切る必要がある
• 1ジョブ1ファイルといった単位で処理することで、ファイル量が増えればジョブの数を増
やし、ジョブの数が多くなれば(キューに滞留したメッセージ数が多い)コンテナを増
やしてスケールアウトすることが可能
© 2020 NTT DATA Corporation 48
4.クラウド環境でのSpring Batch -アプリケーションのスケールアウト-
Job
1ジョブで大量ファイル
スケールアウト
Job
Job
1ジョブで1ファイル
スケールアウト
Job
1メッセージであたりの
ファイル数も大量になっ
ており、スケールアウト
しても、ファイルを同時
に処理できない
ファイル数が増えれば、
メッセージ数が増え、ス
ケールアウトした先の
ジョブでも同時にファイ
ルの処理が可能
© 2020 NTT DATA Corporation 49
4.クラウド環境でのSpring Batch -ジョブ管理テーブルの作成時の注意点-
• RDS(RDBのマネージドサービス)上で、ジョブ管理テーブルを構築する必要がある
• 前述の通り、コンテナ化したアプリがスケールアウトしていくと、RDSへのアクセス数が増加
し、コネクションプールが枯渇してしまう場合がある
• Spring Batchを利用する場合は、業務アプリケーション上で利用しない場合でもRDS
が必要となるので、性能試験を実施してコネクションプール枯渇やCPU使用率高騰等の
性能問題が発生しなか確認する必要がある
© 2020 NTT DATA Corporation
おわりに
© 2020 NTT DATA Corporation 51
5.おわりに
• バッチ処理ってなに?
• データを一定期間集めて、一括して処理する方式
• Spring Batchのアーキテクチャは?
• Job、Stepで構成されている
• ファイルやDBなどのデータ読み込み、処理、書きこみを実施することを前提としている
• Tasklet、Chunkのモデルがあり、処理内容や再実行方式により選択する
• Spring Batchはどうやって使うの?
• Javaコマンド引数による指定
• キューやDBをポーリングすることによる非同期実行
© 2020 NTT DATA Corporation 52
5.おわりに
参考情報
• Spring Batch - リファレンスドキュメント(バージョン 4.3.0)
• https://spring.pleiades.io/spring-batch/docs/current/reference/html/
• TERASOLUNA Batch Framework for Java (5.x) Development Guideline(バージョン5.3.0)
• https://terasoluna-batch.github.io/guideline/current/ja/single_index.html
• Amazon SQSを使ったSpringアプリケーション(3)(4), IT Search+
• https://news.mynavi.jp/itsearch/article/devsoft/4713
• https://news.mynavi.jp/itsearch/article/devsoft/4756
• [AWS Black Belt Online Seminar] AWS Batch
• https://aws.amazon.com/jp/blogs/news/webinar-bb-aws-batch-2019/
© 2020 NTT DATA Corporation
ご静聴ありがとうございました
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

What's hot

これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと土岐 孝平
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き土岐 孝平
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
Spring fest2020 spring-security
Spring fest2020 spring-securitySpring fest2020 spring-security
Spring fest2020 spring-security土岐 孝平
 
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーションこれから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション土岐 孝平
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)NTT DATA Technology & Innovation
 
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022Takayuki Shimizukawa
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugMasatoshi Tada
 
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)Koichiro Matsuoka
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 

What's hot (20)

これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Spring fest2020 spring-security
Spring fest2020 spring-securitySpring fest2020 spring-security
Spring fest2020 spring-security
 
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーションこれから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
 
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 

Similar to 今こそ知りたいSpring Batch(Spring Fest 2020講演資料)

20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つYuichi Hasegawa
 
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天Hiro Yoshioka
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~apkiban
 
Rancher/k8sを利用した運用改善の取り組み
Rancher/k8sを利用した運用改善の取り組みRancher/k8sを利用した運用改善の取り組み
Rancher/k8sを利用した運用改善の取り組みMichitaka Terada
 
Spring Integration 超入門
Spring Integration 超入門Spring Integration 超入門
Spring Integration 超入門Yasutaka Sugamura
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Yuichi Hasegawa
 
データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例Tetsutaro Watanabe
 
弊社IoT事例とAlexaSkil開発レシピ
弊社IoT事例とAlexaSkil開発レシピ弊社IoT事例とAlexaSkil開発レシピ
弊社IoT事例とAlexaSkil開発レシピTakashi Kozu
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介bitbank, Inc. Tokyo, Japan
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Taro L. Saito
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)NTT DATA Technology & Innovation
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことbitbank, Inc. Tokyo, Japan
 
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメントオープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメントDaisuke Nishino
 
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)NTT DATA OSS Professional Services
 
The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)Kimihiko Kitase
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門You&I
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf勇 黒沢
 

Similar to 今こそ知りたいSpring Batch(Spring Fest 2020講演資料) (20)

20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ
 
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
 
Rancher/k8sを利用した運用改善の取り組み
Rancher/k8sを利用した運用改善の取り組みRancher/k8sを利用した運用改善の取り組み
Rancher/k8sを利用した運用改善の取り組み
 
Spring Integration 超入門
Spring Integration 超入門Spring Integration 超入門
Spring Integration 超入門
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
 
データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例
 
弊社IoT事例とAlexaSkil開発レシピ
弊社IoT事例とAlexaSkil開発レシピ弊社IoT事例とAlexaSkil開発レシピ
弊社IoT事例とAlexaSkil開発レシピ
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメントオープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
オープンアーキテクチャ,オープンソースソフトウェア時代の標準化フレームワークを使用したプロジェクトマネジメント
 
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
 
The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 

More from NTT DATA Technology & Innovation

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Recently uploaded

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Recently uploaded (9)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

今こそ知りたいSpring Batch(Spring Fest 2020講演資料)

  • 1. © 2020 NTT DATA Corporation 今こそ知りたいSpring Batch 2020/12/17 株式会社NTTデータ 公共・社会基盤事業推進部 橋本 直樹
  • 2. © 2020 NTT DATA Corporation 2 0.はじめに -自己紹介- 橋本 直樹(Naoki Hashimoto) 株式会社NTTデータ 公共・社会基盤事業推進部 プロジェクト推進統括部 技術戦略担当 シニア・エキスパート • 開発経験 • 主に、Spring Framework(TERASOLUNA Framework)を用いたWebアプリケーション 開発 • OAuth2.0の仕様に沿った、API認可アプリケーション開発 • Spring Security OAuth(現在は、SpringSecurity5に統合)で実装 • 最近の開発 • AWS上のコンテナ環境で動作するSpring Batchアプリケーション開発
  • 3. © 2020 NTT DATA Corporation 3 0.はじめに -想定聴講者- • これから、バッチアプリケーションを開発しなければならないが、そもそもバッチっ てなに? • Spring FrameworkでWebアプリを作ったことはあるけど、Spring Batch はつかったことがない・・・ ※サンプルコードはSpring Boot前提となります • Spring Batchのことは知ってるけど、アーキテクチャとかよくわからないし、使い 方もよくわからない・・・
  • 4. © 2020 NTT DATA Corporation 4 アジェンダ 1. バッチ処理とは? 2. Spring Batchとは? 3. Spring Batchのアーキテクチャ 【基本編】 – ジョブの構成(Job、Step) – ビジネスロジックの実装(Tasklet、Chunk) – ジョブの起動 – ジョブ実行管理 【応用編】 – ジョブの再実行方式(リラン、リスタート) – フロー制御 – 並列処理 – 多重処理 4. クラウド環境でのSpring Batch (SpringBatchのアーキテクチャ 【番外編】) 5. さいごに
  • 5. © 2020 NTT DATA Corporation バッチ処理とは? Spring Batchとは?
  • 6. © 2020 NTT DATA Corporation 6 1.バッチ処理とは? ~バッチ処理の定義~ • データ処理におけるバッチ処理は、ひとまとまりのデータを一括して処理する 方式である • 逐次生み出されるデータを一定期間・一定量集めたものをバッチといい、この バッチ単位で処理をおこなう方式がバッチ処理である ※バッチ処理, Wikipedia, https://tinyurl.com/y43v4ulr, (参照2020-11-25)
  • 7. © 2020 NTT DATA Corporation 7 1.バッチ処理とは? ~バッチ処理パターン~ • パターン1 あらかじめ登録した一連の処理を自動的に実行する処理方式(※処理 量は大小様々) • スケジュール起動 • イベント起動(ファイル格納等) • オンラインディレード(REST API起動) 企業等の業務システムではこちらのパターンであることが多い • パターン2  大量データに対する処理といった重い処理を、一括して実施する  大規模シミュレーターやAIの機械学習等
  • 8. © 2020 NTT DATA Corporation 8 2.Spring Batchとは? • Spring Frameworkをベースとした、バッチアプリケーションを開発するためのアプリケーショ ンフレームワーク • 以下の機能を提供  処理の流れを定型化(tasklet、chunk)  様々なジョブ起動方式(コマンドライン、キュー等)  様々なデータ形式への入出力(ファイル、データべース等)  ジョブの実行管理(実行状態管理、ジョブの再実行等)  処理の効率化(多重実行、並列実行等) ※Spring Batchのアーキテクチャ, TERASOLUNA Batch Framework for Java (5.x) Development Guideline,https://tinyurl.com/y5x477hg, (参照2020-11-25)
  • 9. © 2020 NTT DATA Corporation Spring Batchのアーキテクチャ 【基本編】
  • 10. © 2020 NTT DATA Corporation 10 3.Spring Batchのアーキテクチャ -ジョブの構成- Job1 Step1 Step2 StepN ・・・ JobRepository ・・・ JobN JobLauncher(or JobOperator)
  • 11. © 2020 NTT DATA Corporation 11 3.Spring Batchのアーキテクチャ -ジョブの構成- Job1 Step1 Step2 StepN ・・・ JobRepository ・・・ JobN JobLauncher(or JobOperator) Jobを起動
  • 12. © 2020 NTT DATA Corporation 12 3.Spring Batchのアーキテクチャ -ジョブの構成- Job1 Step1 Step2 StepN ・・・ JobRepository ・・・ JobN JobLauncher(or JobOperator) SpringBatchが バッチ処理を行う単位
  • 13. © 2020 NTT DATA Corporation 13 3.Spring Batchのアーキテクチャ -ジョブの構成- Job1 Step1 Step2 StepN ・・・ JobRepository ・・・ JobN JobLauncher(or JobOperator) Jobは複数のStepで構成され、 Stepでデータへの処理を行う
  • 14. © 2020 NTT DATA Corporation 14 3.Spring Batchのアーキテクチャ -ジョブの構成- Job1 Step1 Step2 StepN ・・・ JobRepository ・・・ JobN JobLauncher(or JobOperator) JobRepositoryでJob、Stepの 実行状態を管理する
  • 15. © 2020 NTT DATA Corporation 15 3.Spring Batchのアーキテクチャ -ビジネスロジック実装- Chunk • 3つのインターフェースで構成されており、データを読み込み、業務処理、書きこみを実施 • フラットファイル(CSV等)、XMLファイル、JSONファイル、DBアクセスを扱うのを容 易にするために、サポートクラスも用意されている • 処理対象となるデータを1件ずつ処理するのではなく、一定件数のチャンクを単位とする • トランザクションは、チャンク単位の中間コミット方式となる Step ItemReader ItemProcessor ItemWriter Data Chunk Chunk Item Item Item Item
  • 16. © 2020 NTT DATA Corporation 16 3.Spring Batchのアーキテクチャ -ビジネスロジック実装- Tasklet • executeという1つのメソッドをもつ単純なインターフェースで、Chunkに比べて実装も容易 • Chunkモデルに当てはまらないような処理(入力データに関係のない処理)や、順序性 の担保が必要な処理(コントロールブレイク処理等)に向いている • トランザクションは、Tasklet処理単位の一括コミット方式となる • TaskletからServiceクラスなどを呼び出す際は、そのトランザクション属性に注意 • Serviceを別トランザクションとする場合は、Transactionalアノテーションのpropagation属性を REQUIRES_NEWとする等 Step Tasklet
  • 17. © 2020 NTT DATA Corporation 17 3.Spring Batchのアーキテクチャ -ジョブの構成、ビジネスロジック実装- @Configuration @EnableBatchProcessing public class JobConfig extends DefaultBatchConfigurer { //omitted @Bean public Step step01() { return stepBuilderFactory.get(“step01”).tasklet(tasklet()).build(); } @Bean public Job job() throws Exception { return jobBuilderFactory.get(“job”) .incrementer(new RunIdIncrementer()) .listener(listener()) .start(step01()).build(); } //omitted } Job,Stepのサンプル(Configクラス)※Taskletの場合 Step01を実行するJob Tasklet01を実行する Step SpringBatchを有効にする
  • 18. © 2020 NTT DATA Corporation 18 3.Spring Batchのアーキテクチャ -ジョブの構成、ビジネスロジック実装- Job,Stepのサンプル(Configクラス)※Chunkの場合 @Bean public Step step02() { return stepBuilderFactory.get("step02") .<String, String> chunk(10) .reader(itemReader()) .processor(itemProcessor()) .writer(itemWriter()) .build(); } @Bean public Job job() throws Exception { return jobBuilderFactory.get(“job”) .incrementer(new RunIdIncrementer()) .listener(listener()) .start(step02()).build(); } 1つのchunkで扱う アイテム数
  • 19. © 2020 NTT DATA Corporation 19 3.Spring Batchのアーキテクチャ -ジョブの起動- • 実行時にジョブを順次起動 • デフォルトでは、Bean定義されたジョブが順次起動される • application.yml等でspring.batch.job.enabled = false とすると無効 • Javaコマンド引数により起動 • ShellScriptなどで、ComandLineJobRunnerを経由して起動する • 引数として、ジョブ起動設定ファイルパスやJobIDを設定する • キュー、DB等をポーリングして非同期実行 • 監視処理を作成し、キューやDBを監視(SpringBatchは監視処理をもっていない) • 監視処理から、JobOperator経由で起動する
  • 20. © 2020 NTT DATA Corporation 20 3.Spring Batchのアーキテクチャ -ジョブの起動- Listener • JobやStepの実行前後やエラー発生時に処理を挿入するためのインターフェース • Listenerないで、開始終了ログの出力を行ったりする • 様々なListenerインターフェースがあるが、以下が一般的 • JobExecutionListener • StepExecutionListener • ChunkListener • ItemReadListener、ItemProcessListener、ItemWriteListener
  • 21. © 2020 NTT DATA Corporation 21 3.Spring Batchのアーキテクチャ -ジョブの起動- public class JobListener extends JobExecutionListenerSupport { @Override public void beforeJob(JobExecution jobExecution) { super.beforeJob(jobExecution); System.out.println("Start JOB"); } @Override public void afterJob(JobExecution jobExecution) { super.afterJob(jobExecution); System.out.println("End JOB"); } } Listenerのサンプルコード Job実行後に 呼び出される Job実行前に 呼び出される
  • 22. © 2020 NTT DATA Corporation 22 3.Spring Batchのアーキテクチャ -ジョブ実行管理- • JobInstance :ジョブを管理する論理的な単位 • ジョブ名(ジョブID)+ジョブパラメータのセットを一意に管理 • 同一キー情報のJobInstanceは生成されない(実行エラーとなる) • ジョブは二重実行されない • JobExecution :ジョブを管理する物理的な実行単位 • 失敗したジョブに対して再実行すると、新しいJobExecutionが作成される • StepExecution:ステップを管理する物理的な実行単位 JobInstance JobExecution StepExecution * * 1 1
  • 23. © 2020 NTT DATA Corporation 23 3.Spring Batchのアーキテクチャ -ジョブ実行管理- JobRepositoryのメタデータスキーマ • ジョブ実行管理はDB等で実施 • デフォルトではインメモリで管理 • 永続化が必要な場合は、自身でDBと スキーマを用意する必要あり ※付録A:メタデータスキーマ, Spring Batch(Ver.4.3.0) - リファレンスドキュメント, https://tinyurl.com/y6cmdrrd, (参照2020-11-25)
  • 24. © 2020 NTT DATA Corporation 24 3.Spring Batchのアーキテクチャ -ジョブ実行管理- ジョブの実行ステータス ステータス 説明 リスタート可否 COMPLETED 実行成功 × FAILED 実行失敗 ○ STARTED 実行中 × STARTING 開始前 × STOPPING 停止待ち × STOPPED 停止 ○ ABANDANED 失敗したが処理完了、再起動時スキップ × UNKNOWN 状態不明 × ※BatchStatus, Spring Batch(Ver.4.3.0) - APIドキュメント, https://spring.pleiades.io/spring-batch/docs/4.3.x/api/, (参照2020-11-25)
  • 25. © 2020 NTT DATA Corporation Spring Batchのアーキテクチャ 【応用編】
  • 26. © 2020 NTT DATA Corporation 26 3.Spring Batchのアーキテクチャ -ジョブの再実行方式- 再実行方式には大きく分けて、リラン、リスタートの2種類がある • リラン • ジョブを最初からやり直す方式 • Taskletモデルが適している • リスタート • ジョブが中断したところから処理を再開する方式 • 正常に処理できていたものをスキップし、未処理のものから処理を再開 • Chunkモデルが適している
  • 27. © 2020 NTT DATA Corporation 27 3.Spring Batchのアーキテクチャ -ジョブの再実行方式- リラン • リラン時、まったく同一の「ジョブ名(ジョブID)+ジョブパラメータ」では起動できない • 二重実行防止機能が働くため、ジョブパラメータを変更しリランする • 業務データの初期化等が必要(業務処理のべきとう性を担保することが望ましい) JobInstance1 JobExecution1-1 リラン JobInstance2 JobExecution2-1
  • 28. © 2020 NTT DATA Corporation 28 3.Spring Batchのアーキテクチャ -ジョブの再実行方式- リスタート • 処理再開位置を保持、取得し、再開位置までのデータスキップが必要 • Chunkモデルを適用することで、比較的実現しやすい(中間コミットモデル) • 失敗したジョブのJobExecutionIDに対して「-restart」と指定することでリスタート可能 • JobLauncherやJobOperatorから指定可能 JobInstance1 JobExecution1-1 リスタート JobExecution1-2 ジョブパラメータは、 JobRepositoryから復元
  • 29. © 2020 NTT DATA Corporation 29 Job1 3.Spring Batchのアーキテクチャ -フロー制御- Step1 Step2 Step3 シーケンシャルフロー • 全てのStepが順番に実行されるジョブ
  • 30. © 2020 NTT DATA Corporation 30 Job1 3.Spring Batchのアーキテクチャ -フロー制御- シーケンシャルフロー • 全てのStepが順番に実行されるジョブ • Step中の処理が異常終了した場合は、後続ステップを実行されない • Step2が失敗した場合、Step3は実行されない Step1 Step2 Step3 実行されない
  • 31. © 2020 NTT DATA Corporation 31 Job1 3.Spring Batchのアーキテクチャ -フロー制御- シーケンシャルフロー • 全てのStepが順番に実行されるジョブ • Step中の処理が異常終了した場合は、後続ステップを実行されない • Step2が失敗した場合、Step3は実行されない • 異常終了の原因を取り除き、ジョブをリスタートした場合、異常終了し たStepから処理をやり直すことが可能 • Job1をリスタートした場合、Step2からリスタート Step1 Step2 Step3 正常終了Stepは 実行されない リスタート
  • 32. © 2020 NTT DATA Corporation 32 3.Spring Batchのアーキテクチャ -フロー制御- Jobのサンプル(シーケンシャルフロー) @Bean public Job job() throws Exception { return jobBuilderFactory.get("job") .incrementer(new RunIdIncrementer()) .listener(listener()) .start(step01()) .next(step02()) .next(step03()) .build(); } startで最初のStepを指定し、nextで次のStepをつなげていく Step1 Step2 Step3
  • 33. © 2020 NTT DATA Corporation 33 3.Spring Batchのアーキテクチャ -フロー制御- 条件分岐 • Stepの実行結果(ExitStatus)によって、後続の Stepを変更する • 実行結果がFAILED以外の状態で、ジョブが終了して しまった場合、リスタートできなくなることがある Job1 Step1 Step3 Step2 成功 したか? Yes No
  • 34. © 2020 NTT DATA Corporation 34 3.Spring Batchのアーキテクチャ -フロー制御- Jobのサンプル(条件分岐) @Bean public Job job() throws Exception { return jobBuilderFactory.get("job") .incrementer(new RunIdIncrementer()) .listener(listener()) .start(step01()) .on("*").to(step03()) .from(step01()).on("FAILED").to(step02()) .end() .build(); } Step1 Step3 Step2 成功 したか? Yes No onで実行結果の文字列判定句を設定し、 toで一致した場合のstepを指定 ※「*」はゼロ個以上の文字に一致する
  • 35. © 2020 NTT DATA Corporation 35 3.Spring Batchのアーキテクチャ -並列処理- マルチスレッドステップ • 単一プロセス上で、Step(チャンク)単位でスレッドを作成 • マルチスレッド化される際は、順序性が担保されないので、アイテムの処理に順序性が必 要な場合は、本ステップは採用できない 並行ステップ • 単一プロセス上で、スプリットフロー(複数のStepの連なり)単位でスレッドを作成
  • 36. © 2020 NTT DATA Corporation 36 3.Spring Batchのアーキテクチャ -並列処理- @Bean public TaskExecutor taskExecutor() { return new SimpleAsyncTaskExecutor("spring_batch"); } @Bean public Step step02() { return stepBuilderFactory.get("step02") .<String, String> chunk(10) .reader(itemReader()) .processor(itemProcessor()) .writer(itemWriter()) .taskExecutor(taskExecutor) .throttleLimit(10) .build(); } Stepのサンプル(マルチスレッドステップ) Chunkごとに、新しい スレッドを作成する スレッド数はデフォルトでは最大 4つまでしか生成できないので、 最大値を増やす場合に設定
  • 37. © 2020 NTT DATA Corporation 37 3.Spring Batchのアーキテクチャ -並列処理- Flowのサンプル(並行ステップ) @Bean public Flow flow1() { return new FlowBuilder<SimpleFlow>("flow1") .start(step01()) .next(step02()) .build(); } @Bean public Flow flow2() { return new FlowBuilder<SimpleFlow>("flow2") .start(step03()) .build(); } step01→step02というStepの 連なりを1つのFlowとする step03の実行を1つのFlowとする Flow1 Step1 Step2 Flow2 Step3
  • 38. © 2020 NTT DATA Corporation 38 3.Spring Batchのアーキテクチャ -並列処理- Jobのサンプル(並行ステップ) @Bean public Job job() { return jobBuilderFactory.get("job") .start(splitFlow()) .next(step04()) .build() .build(); } @Bean public Flow splitFlow() { return new FlowBuilder<SimpleFlow>("splitFlow") .split(taskExecutor()) .add(flow1(), flow2()) .build(); } Flow1 Step1 Step2 Flow2 Step3 Step4 Flow1、Flow2を別スレッドで並走させる Flow1+Flow2の並走完了後、Step04を実行
  • 39. © 2020 NTT DATA Corporation 39 3.Spring Batchのアーキテクチャ -多重処理- パーティショニング • Stepの実行を分割してマルチスレッドで実行する • Manager内の処理を特定の件数ごとに、自動的に分割しWorkerを作成する • 全てのWorkerの処理が完了したら、ManagerのStepを完了とする Job1 Step1 Step2(Manager) Step3 Worker Worker Worker Worker Worker
  • 40. © 2020 NTT DATA Corporation 40 3.Spring Batchのアーキテクチャ -多重処理- @Bean public Step stepManager() { return stepBuilderFactory .get("step2.manager") .partitioner(step02()) .partitioner("step2", partitioner()) .gridSize(10) .taskExecutor(taskExecutor()) .build(); } @Bean public Partitioner partitioner() { return new Partitioner01(); } Stepのサンプル(Manegerステップ) Step02をパーティション化 パーティショナーを追加 パーティションの分割数を設定
  • 41. © 2020 NTT DATA Corporation 41 3.Spring Batchのアーキテクチャ -多重処理- public class Partitioner01 implements Partitioner { @Override public Map<String, ExecutionContext> partition(int gridSize) { Map<String, ExecutionContext> map = new HashMap<>(); int maxSize = 1000; // 実際は対象itemの件数を設定 int dataSize = maxSize / gridSize; // 1つのWorkerで扱うデータサイズ int offset = 0; // 初期位置からのオフセット for (int i = 0; i < gridSize; i++ ) { ExecutionContext context = new ExecutionContext(); context.putInt("dataSize", dataSize); context.putInt("offset", offset); offset += dataSize; map.put("partition:" + i, context); } return map; } } Partitionerのサンプル Partitonerインターフェースを実装 スレッドを識別する文字列と、スレッドに引き 渡したいパラメータ(ExecutionContext) をセットでMapに設定して返却 実際にItemReaderなどで 実施する処理に合わせて 変更する
  • 42. © 2020 NTT DATA Corporation クラウド環境でのSpring Batch ※Spring Batchのアーキテクチャ 【番外編】
  • 43. © 2020 NTT DATA Corporation 43 4.クラウド環境でのSpring Batch -クラウド環境におけるバッチアプリケーション開発- 以下のような理由から、バッチ処理はパブリッククラウドサービスと親和性が高い ① バッチ処理は決まった時間のみ起動すればよく、パブリッククラウドサービスを利用した場合、 コストメリットを得やすい  インスタンスの種類や起動時間に対して課金されるため ② 大量データを扱う場合、容易にスケールアウト可能であるため、業務量に応じたリソース 設計が実現可能  余分なリソースを予め用意する必要がなく、コスト削減が狙える AWSにおける、バッチアーキテクチャに適したマネージドサービスを紹介し、 そのサービスでSpring Batchを利用する際の注意点を紹介する
  • 44. © 2020 NTT DATA Corporation 44 4.クラウド環境でのSpring Batch -バッチアーキテクチャに適したサービス- AWS Cloud Auto Scaling group VPC ECS JobQueue AWS Batch JobDefinition ECR Cloud Watch Logs AWS Batchの利用 • AWS Batchの実態は、ECS(コンテナオーケストレーションサービス)と独自のキュー • ECSをそのまま構築する際に考慮する必要がある、クラスタやサービス等が自動構築されるので構築が容易 • キューにメッセージが送信されると、JobDefinitionに記載された定義の通りコンテナが起動する • コンテナはキューにメッセージが登録されてから起動するため、起動時間のバッファを考慮する必要あり ・・・ ・・・ コンテナイメージ メッセージ登録 ログ出力
  • 45. © 2020 NTT DATA Corporation 45 4.クラウド環境でのSpring Batch -バッチアーキテクチャに適したサービス- ECS + SQSの利用 • 性能要件が厳しく、AWS Batchの起動時間が無視できない場合はECS + SQSの構成で対応 • AWS Batchの起動時間はコンテナイメージのつくりにより異なる • ECS上でコンテナを常時起動することで、起動コストが発生しないようにする(維持コストは上がる) • JobQueueの代わりにSQSを利用 • それぞれ個別に構築する必要があるので、構築コストは上がる AWS Cloud VPC SQS ECS バッチAP1 バッチAP2 バッチAP3 ・・・ キュー1 キュー2 ・・・ メッセージ登録
  • 46. © 2020 NTT DATA Corporation 46 4.クラウド環境でのSpring Batch -アプリケーションのコンテナ化- • 紹介したマネージドサービスは、全てコンテナアプリケーションを前提としている • Spring Batchで作成したアプリケーションのDocker Imageを作成し、ECR(AWSの 提供するDockerHubサービス)にpushする必要がある  Dockerfileを作成しDocker Imageを用意する FROM amazoncorretto:11 ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar","-Dfile.encoding=UTF-8"] Dockerfileのサンプル AWSの提供するOpenJDK11をベースとする Maven等で作成したjarファイルをコピー コンテナ起動時にJavaコ マンドでSpring Batchアプ リケーションを起動
  • 47. © 2020 NTT DATA Corporation 47 4.クラウド環境でのSpring Batch -アプリケーションのスケールアウト- • 紹介したマネージドサービスは、キューに滞留したメッセージの量によって、コンテナを新たに 起動することによって、スケールアウトを実現可能 • アプリケーションは、コンテナが増えた際にスケールアウト可能な単位でジョブを設計する必 要がある • 1ジョブで大量のファイルを取り扱う場合、複数のジョブから扱うファイルを重複させな いようにする制御は難しく、結局、1つのジョブでやり切る必要がある • 1ジョブ1ファイルといった単位で処理することで、ファイル量が増えればジョブの数を増 やし、ジョブの数が多くなれば(キューに滞留したメッセージ数が多い)コンテナを増 やしてスケールアウトすることが可能
  • 48. © 2020 NTT DATA Corporation 48 4.クラウド環境でのSpring Batch -アプリケーションのスケールアウト- Job 1ジョブで大量ファイル スケールアウト Job Job 1ジョブで1ファイル スケールアウト Job 1メッセージであたりの ファイル数も大量になっ ており、スケールアウト しても、ファイルを同時 に処理できない ファイル数が増えれば、 メッセージ数が増え、ス ケールアウトした先の ジョブでも同時にファイ ルの処理が可能
  • 49. © 2020 NTT DATA Corporation 49 4.クラウド環境でのSpring Batch -ジョブ管理テーブルの作成時の注意点- • RDS(RDBのマネージドサービス)上で、ジョブ管理テーブルを構築する必要がある • 前述の通り、コンテナ化したアプリがスケールアウトしていくと、RDSへのアクセス数が増加 し、コネクションプールが枯渇してしまう場合がある • Spring Batchを利用する場合は、業務アプリケーション上で利用しない場合でもRDS が必要となるので、性能試験を実施してコネクションプール枯渇やCPU使用率高騰等の 性能問題が発生しなか確認する必要がある
  • 50. © 2020 NTT DATA Corporation おわりに
  • 51. © 2020 NTT DATA Corporation 51 5.おわりに • バッチ処理ってなに? • データを一定期間集めて、一括して処理する方式 • Spring Batchのアーキテクチャは? • Job、Stepで構成されている • ファイルやDBなどのデータ読み込み、処理、書きこみを実施することを前提としている • Tasklet、Chunkのモデルがあり、処理内容や再実行方式により選択する • Spring Batchはどうやって使うの? • Javaコマンド引数による指定 • キューやDBをポーリングすることによる非同期実行
  • 52. © 2020 NTT DATA Corporation 52 5.おわりに 参考情報 • Spring Batch - リファレンスドキュメント(バージョン 4.3.0) • https://spring.pleiades.io/spring-batch/docs/current/reference/html/ • TERASOLUNA Batch Framework for Java (5.x) Development Guideline(バージョン5.3.0) • https://terasoluna-batch.github.io/guideline/current/ja/single_index.html • Amazon SQSを使ったSpringアプリケーション(3)(4), IT Search+ • https://news.mynavi.jp/itsearch/article/devsoft/4713 • https://news.mynavi.jp/itsearch/article/devsoft/4756 • [AWS Black Belt Online Seminar] AWS Batch • https://aws.amazon.com/jp/blogs/news/webinar-bb-aws-batch-2019/
  • 53. © 2020 NTT DATA Corporation ご静聴ありがとうございました 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。