SlideShare a Scribd company logo
1 of 51
Download to read offline
JobStreamerではじめる
JavaBatchのクラウド分散実行
kawasima
川島義隆
JJUG CCC 2015 Spring F-7
kawasima
https://github.com/kawasima/
http://twitter.com/kawasima/
http://www.slideshare.net/kawasima/
http://qiita.com/kawasima/
Javaな場でしゃべるのは
初めてなので、
お手柔らかにお願いします!
JavaBatchを
始めてみよう
JSR352 JavaBatchとは
Job
JobInstance
Step
Batchlet
Chunk
ItemReader
ItemProcessor
ItemWriter
JobExecution StepExecution
実装するコンポーネント
XMLで定義する
ジョブ実行をあらわすコンポーネント
*1
1
0..1
0..1
JSR352 JavaBatchのはじめ方
①Batchlet または ItemReader /
ItemProcessor / ItemWriterを実装する。
②batch-jobs.xmlを書く。
③起動するプログラムを書く。
Batchletを実装する
@Named
public class MyBatchlet extends AbstractBatchlet {
@Inject
JobContext jobContext;
private Properties jobProperties;
@Override
public String process() throws Exception {
jobProperties = jobContext.getProperties();
String value1 = jobProperties.getProperty("jobProp1");
// ...
return "Processed";
}
}
基本的にはこの1メソッド
を実装するだけ
まぁ簡単
batch-jobs.xml
<job id="jasperReportsTest"
xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0">
<step id="step1">
<batchlet ref="jasperReportsBatchlet">
<properties>
<property name="resource" value="movies-2012.csv"/>
<property name="useFirstRowAsHeader" value="true"/>
<!-- n as record/row delimiter -->
<property name="recordDelimiter" value="&#xA;"/>
<property name="charset" value="UTF-8"/>
<property name="template" value="movies.jasper"/>
<property name="outputType" value="pdf"/>
<property name="outputFile"
value="#{systemProperties['java.io.tmpdir']}/report.pdf"/>
<property name="reportParameters" value="#{jobParameters['reportParameters']}"/>
</properties>
</batchlet>
</step>
</job>
It's so easy!!!!...?
起動プログラム
ExcelにジョブのIDをかくじゃろ
( ^ω^)
⊃ ⊂
というストーリーがみえる
これをこうして…
( ^ω^)
≡⊃⊂≡
こうじゃ
( ^ω^)
⊃ ⊂
JSR352 JavaBatchを始めると…
①Batchlet または ItemReader /
ItemProcessor / ItemWriterを実装する。
②batch-jobs.xmlを書く。
③起動する。
ツライ…
くやしい…
でも…ジェネレータ作っちゃう!
ジョブの組み立てをもっと簡単に!
ジョブの起動をもっと簡単に!
バッチコンテナの運用
● 常駐コンテナで動かすことのメリット
– 小さなジョブがたくさん動いても、JVM起動のオーバ
ヘッドがない。
● 常駐サーバで複数ジョブ動かすことへの漠然とし
た不安
– サーバが死んだときのリカバリは?
– 特定のジョブが別の重いジョブに影響を与えるのは避
けたい?
Disposable batch containers
ジョブの実行環境は、リソース専有することな
く、使い捨てできるとよい。
– 空いてるサーバに優先的にディスパッチ
– 複数のバッチサーバがいて、1台死んでも簡単に
フェイルオーバーできるといいなぁ
でも、バッチアプリのデプロイが面倒そうだ
ジョブの実行環境をDistributedに!
Deployの手間はゼロに!
ジョブスケジューラにまつわる思い出
• 動いちゃいけないのに、動いてしまった。
• 日付を間違えて登録して、起動しなかった。
• GUIから漂う昭和感。
ジョブがいつ動くかをもっと分かりやすく!
できればもっとモダンに!
なので
つくってみた
https://github.com/job-streamer
(EPLライセンス)
JobStreamerが変える世界
できるようになること 不要になるもの
管理コンソール上でのGUIによる
ジョブ組み立て
ジョブ XML
REST APIによるジョブの起動 ジョブ起動用のJavaアプリ
スケジュール実行 JP1のようなスケジューラ
シンプルな分散実行 バッチサーバのフェイルオーバー設計
エージェントへを起動するだけでジョブが動く、
ノーデプロイ・ノーコンフィギュレーション環境
VagrantやDockerなどによるバッチサーバの設
定やデプロイの自動化
エージェントの稼働状況モニタリング ZABBIXなどによるバッチサーバの監視
リアルタイムなログ収集 fluentdなどによるログの収集
すべてがS式になる Emacs以外の環境
JobStreamerの構成
管理コンソール
Jobの定義
Jobの実行ログ
コントロールバス
JavaBatchコンポーネント
● Batchlet
● ItemReader
● ItemProcessor
● ItemWriter
Load class
● ジョブの登録/編集/削除
● スケジューリング
● ジョブの実行
● 実行結果の確認
ジョブの実行リクエスト
● Load class
● 実行状態の送信
● サーバ負荷状態の送信
実行エージェント
Datomic
No deploy,
no configuration
コントロールバス
●
ジョブの登録やジョブのディスパッチなどを司
る。
– ジョブの登録/編集/削除
– ジョブのスケジューリング
– ジョブのディスパッチ/実行結果・ログの収集
– エージェントのモニタリング
●
REST APIですべての操作が可能。
管理コンソール
●
コントロールバスのWebインタフェース
– ジョブのGUI組み立て
– 実行ログの閲覧
– ジョブのタイムライン表示
●
Single page applicationでサクサク動く!
エージェント
●
実際にジョブが実行されるサーバ
●
REST APIですべての操作が可能。
●
実装はJBossのJberet
– クラスローダをWebSocketClassLoaderに入れ替えて
使う。
●
Dockerfileもついてるので、docker runして使う
ことも可能。
Datomic (おまけ)
●
Jobの定義や実行ログなどは、すべてDatomic
に格納される。
●
SPoFのコントローラバスからのみ繋ぐので、
Freeライセンスでも本番運用可能。
http://www.datomic.com/
Datomicとは...
今をときめくAppend-onlyなデータベース
– ストレージ(としてのDB)
は別に選択できる。
●
Dynamo DB
●
Infinispan
●
Mysql
などなど
Why Datomic?
Clojureから自然な形でクエリが書ける。
※ クエリはDatalogという論理プログラミングの伝統的な記法
Demo
Jobの実行状況をみる(一覧)
Jobの実行状況をみる(タイムライン)
アプリケーションを登録する
専用のMavenプラグインがあります
% mvn job-streamer:deploy
Jobを新規登録する
Jobの詳細をみる
Jobをスケジューリングする
実行履歴とログをみる
エージェントをみる
エージェントをモニタリングする
例) CSVをJPAでOracleにロードする
例) シェルスクリプトを動かす
シェルスクリプトをクラスパスに入れておき…
こんなジョブを流す
エージェントで実行され、STDINがログとして記録される
Architecture
WebSocketClassLoader
クラスロードをWebSocket経由でリモートからよぶ。
リソースファイルもロード可能。
https://github.com/kawasima/websocket-classloader/
Maven Centralにおいてあるので、
お気軽にお試しください
WebSocketClassLoaderのしくみ
WebSocketClassLoaderClassProvider
WebSocket Handshake / Connect
LoadClass request
Class binary format
Encoded by fressian
JSR356準拠で動くので、dependenciesは0
(EEサーバ以外で動かすには、Undertowなどにデプロイする)
JSR356のServerEndpointを
実装している。
JSR356のClientEndpointを
使ってloadClassリクエストを
送る。
ローカルキャッシュに最新の
クラスがあればそっちを使う。
JberetでのClassLoaderの置き換え
BatchSEEnvironmentクラスにて...
こんな実装になっちゃっているので、
WebSocketClassLoaderを返すように置き換え
ている。
Jobが実行されるまでの流れ
Full clojure
①サーバ実装 → liberator
②Javascript
→ Clojurescript
→Om (React layer)
③ Stylesheet → garden
④ SQL → datalog
すべてがS式に!
om
ReactをClojurescriptから使うことができる。
Circle CIのUIはomで作られています。
(https://github.com/circleci/frontend)
https://github.com/omcljs/om
liberator
APIを宣言的に書くことができる。
liberatorのデシジョングラフ
どこを、どう通ってレスポンスを返したか、
リクエストごとに表示される
サーバ間WebSocket(JSR356)
Agentの状態の変化をリアルタイムにControl
Busが受け取るために、WebSocketを使って通知
JSR356の仕様としてClientもあるので、実装は
非常に簡単。
ログのリアルタイム書き込み
(WebSocketAppender)
logbackのアペンダとしてセットし、ログを
WebSocket経由でログサーバにリアルタイムで
送る。
https://github.com/kawasima/logback-websocket-appender/
これもMaven Centralにおいてあるので、よろしければ
どうぞお使いください
RRD4J
Agentのリソースモニタリングは、RRDToolの
JavaクローンのRRD4Jを使うと簡単にPure
Javaでグラフが書ける。
(https://github.com/rrd4j/rrd4j)
今後の予定
●
SplitやDecisionなどのJSR352のフルサポート
● マルチプロジェクトのサポート
● 異常時の通知の仕組み実装
●
ファイル到着トリガやDBステータス変更トリ
ガのサポート
●
スケジュール登録機能の強化(ウィザードや営
業日カレンダーの登録など)
まとめ
●
JavaBatchに対する不満もJobStreamerを使
えば解消するよ
●
No deploy, No configurationなので、簡単に
分散実行できちゃうよ
●
なによりJavaBatchを気軽に試せるよ
みなさまの(or User Developer)としての
ご参加を心よりお待ちしております!
github.com/job-streamer

More Related Content

What's hot

3.Java EE7 徹底入門 CDI&EJB
3.Java EE7 徹底入門 CDI&EJB3.Java EE7 徹底入門 CDI&EJB
3.Java EE7 徹底入門 CDI&EJBTsunenaga Hanyuda
 
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーククラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-RetryフレームワークY Watanabe
 
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX UpdateJavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX UpdateTakashi Aoe
 
テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術Y Watanabe
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!Java女子部
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々torutk
 
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみるJavascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみるShunji Konishi
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
GradleどうでしょうTakuma Watabiki
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会Yuki Okada
 
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側賢 秋穂
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目大樹 小倉
 
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介Yuki Fujisawa
 
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力Takashi Aoe
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallMasatoshi Tada
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1Y Watanabe
 

What's hot (20)

3.Java EE7 徹底入門 CDI&EJB
3.Java EE7 徹底入門 CDI&EJB3.Java EE7 徹底入門 CDI&EJB
3.Java EE7 徹底入門 CDI&EJB
 
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーククラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
 
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX UpdateJavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
 
テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
Introduction to Spock
Introduction to SpockIntroduction to Spock
Introduction to Spock
 
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
 
Gradle handson
Gradle handsonGradle handson
Gradle handson
 
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみるJavascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
Hello Java
Hello JavaHello Java
Hello Java
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
 
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
 
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
 
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 Fall
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
 

Viewers also liked

Droid kaigiプレゼン
Droid kaigiプレゼンDroid kaigiプレゼン
Droid kaigiプレゼンSuguru Oho
 
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syobobenkyon mm
 
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程Takao Sumitomo
 
データモデルは時空を越える
データモデルは時空を越えるデータモデルは時空を越える
データモデルは時空を越えるterahide
 
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方Fumihiko Shiroyama
 
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Shinobu Okano
 
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてあなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてShinichi Kozake
 
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素Takahiro YAMADA
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)Yoshitaka Kawashima
 
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Yuki Anzai
 
マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]YUKI YAMAGUCHI
 
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]bitter_fox
 

Viewers also liked (12)

Droid kaigiプレゼン
Droid kaigiプレゼンDroid kaigiプレゼン
Droid kaigiプレゼン
 
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
 
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
 
データモデルは時空を越える
データモデルは時空を越えるデータモデルは時空を越える
データモデルは時空を越える
 
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
 
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
 
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてあなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
 
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
 
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
 
マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]
 
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
 

Similar to JobStreamerではじめるJavaBatchのクラウド分散実行

JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているKoichi Sakata
 
Maven2 プラグイン入門
Maven2 プラグイン入門Maven2 プラグイン入門
Maven2 プラグイン入門guestd4898b
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotationEIICHI KIMURA
 
REST with Spring Boot #jqfk
REST with Spring Boot #jqfkREST with Spring Boot #jqfk
REST with Spring Boot #jqfkToshiaki Maki
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)Yoshiharu Hashimoto
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレットTakashi Makino
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷JavaToshiaki Maki
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
はじめてのJPA
はじめてのJPAはじめてのJPA
はじめてのJPAkawaba
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Yuji Kubota
 
Quartzでcronを範囲検索したい
Quartzでcronを範囲検索したいQuartzでcronを範囲検索したい
Quartzでcronを範囲検索したいchibochibo
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8masahitojp
 
Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2Yoshi Nagase
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかYoshitaka Kawashima
 
続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5jToshiaki Maki
 

Similar to JobStreamerではじめるJavaBatchのクラウド分散実行 (20)

JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
 
Maven2 プラグイン入門
Maven2 プラグイン入門Maven2 プラグイン入門
Maven2 プラグイン入門
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
 
REST with Spring Boot #jqfk
REST with Spring Boot #jqfkREST with Spring Boot #jqfk
REST with Spring Boot #jqfk
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレット
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
はじめてのJPA
はじめてのJPAはじめてのJPA
はじめてのJPA
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
Heap statsfx analyzer
Heap statsfx analyzerHeap statsfx analyzer
Heap statsfx analyzer
 
LogicFlow 概要
LogicFlow 概要LogicFlow 概要
LogicFlow 概要
 
Quartzでcronを範囲検索したい
Quartzでcronを範囲検索したいQuartzでcronを範囲検索したい
Quartzでcronを範囲検索したい
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8
 
Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
 
続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 

More from Yoshitaka Kawashima

ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?Yoshitaka Kawashima
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話Yoshitaka Kawashima
 
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?Yoshitaka Kawashima
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』Yoshitaka Kawashima
 
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣Yoshitaka Kawashima
 
システムダウンのひみつ
システムダウンのひみつシステムダウンのひみつ
システムダウンのひみつYoshitaka Kawashima
 
アンチフラジャイルの世界
アンチフラジャイルの世界アンチフラジャイルの世界
アンチフラジャイルの世界Yoshitaka Kawashima
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 FallYoshitaka Kawashima
 
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較Yoshitaka Kawashima
 
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1Yoshitaka Kawashima
 
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力Yoshitaka Kawashima
 
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199Yoshitaka Kawashima
 

More from Yoshitaka Kawashima (20)

ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
 
Are Design Patterns Dead?
Are Design Patterns Dead?Are Design Patterns Dead?
Are Design Patterns Dead?
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
 
Tackling Complexity
Tackling ComplexityTackling Complexity
Tackling Complexity
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
 
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
 
本番障害に至る病
本番障害に至る病本番障害に至る病
本番障害に至る病
 
システムダウンのひみつ
システムダウンのひみつシステムダウンのひみつ
システムダウンのひみつ
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
アンチフラジャイルの世界
アンチフラジャイルの世界アンチフラジャイルの世界
アンチフラジャイルの世界
 
Atomic Architecture
Atomic ArchitectureAtomic Architecture
Atomic Architecture
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
 
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較
 
How to find tech books
How to find tech booksHow to find tech books
How to find tech books
 
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1
 
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
 
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199
 

JobStreamerではじめるJavaBatchのクラウド分散実行