SlideShare a Scribd company logo
1 of 57
バッチ高速化のあゆみ
株式会社ビズリーチ
阪本 康裕
1章 「はじめに」
今日のお題
システム運営で必ずつきまとうバッチ処理
の長時間化。
今回はこの課題をを解決するまでに実施し
た数々の施策についての紹介
各施策については施策内容と発生し得るリ
スクと共に紹介。
目次
1章
「はじめに」
1. 今日のお題
2. 目次
3. 自己紹介
2章
「高速化のあゆみ」
1. 対象
2. 課題
3. 施策
a. ロジック
b. データソース
c. インフラ
3章
「奥の手」
1. マルチプロセス化
4章
「さいごに」
1. 最終的な成果
2章 「高速化のあゆみ」
1. 対象(1/3)
環境/ミドルウェア
・Batchサーバ
言語:Java(Spring+Struts.Quartz scheduler)
アプリケーションコンテナ:Tomcat
データソース:RDS(AmazonWebService,MySQL互換)
その他:検索サーバ Apache Solr
1. 対象 (2/3)
対象機能
スカウトメール配信
予め企業が設定しているスカウト条件にマッチする求職者に向けてメールを配信する機能。
自動で求職者に毎日朝・夕の2回、数求人を配信している。
大まかな処理としては
①マッチング処理
➜ 企業が出している求人と利用者の職務経歴書をマッチングし、マッチ度を算出(毎日)
②メール配信処理
➜ 求職者に対しては毎日数件、マッチ度の高い順にスカウトメールを自動配信
の2部構成。(いずれもバッチ処理)
今回はその前者の①マッチング処理
1. 対象 (2/3)
マッチング処理
1. 求人のスカウト条件に一致する求職者を検索する
2. 一致したものに対してマッチ度を計算
3. 求人⇔求職者情報を格納
2. 課題(1/3) バッチ処理時間の長期化
求職者200,000名☓求人70,000件の条件一致検索を行うので、純粋に処理量が多い
多数☓多数をイメージできるような、掛け算のようなイメージがあれば
求職者
☓
200,000名
求人
☓
70,000件
14,000,000,000通り
2. 課題(2/3) 長時間化に伴う後続バッチの追いつき
バッチ処理時間長くなると、後続のメール配信処理の開始時間に間に合わなくなる。
スカウトバッチ メール配信バッチ
(後続)
2. 課題(3/3) 運用上の問題
バッチ時間が始まると、その処理時間中はサーバを止めることができない。
これは新規機能リリースや、非定期のサーバ再起動が可能な機会を著しく低下させるため
運用面でも不利益が出始めていた。
帰りたい・・
まだ処理中
3. 施策 a.ロジック
①トランザクション回数の削減
効果:★★☆☆☆ リスク:★★☆☆☆
①トランザクション回数の削減
1求人に対する求職者のマッチ度情報は最大で全求職者数分のレコードが作成されることになるため、
RDSへのINSERT発行回数も最大で14,000,000,000通り分発生することになる。
Batch(アプリケーションサーバ)からRDSへのレコード登録は
①RDSへのコネクション接続 ※接続プールを使っている場合はこのStepは発生しない
②トランザクション開始
③INSERTクエリ発行(レコード登録)
④コミット
⑤RDSへのコネクション切断 ※接続プールを使っている場合はこのStepは発生しない
という流れとなる。
その中で登録処理は③だけだが、登録に必要な段取りとして①②④⑤が存在する。
①②④⑤が属に言う「オーバーヘッド」となる。
①トランザクション回数の削減
このオーバーヘッドは必ずしも1レコード登録する為に必要なものではなく、
複数レコードを一括で登録する際にも同じオーバーヘッドの時間で賄う事ができる。
つまり、③のステップで複数のレコードを登録することでオーバーヘッド分の時間短縮に繋がる。
イメージ
1トラン1レコード ☓ 1000件
(①〜⑤)☓1000件 = 500000ms(500秒)
1トラン1000レコード
(①〜②)+③☓1000件+(④〜⑤) = 100400ms(100.4秒)
※但し、④はレコード件数増加により処理時間は増加する
①RDSへのコネクション接続 ➜ 100ms
②トランザクション開始 ➜ 100ms
③INSERTクエリ発行(レコード登録) ➜ 100ms
④コミット ➜ 100ms
⑤RDSへのコネクション切断 ➜ 100ms
約⅕に短縮(※)
①トランザクション回数の削減
リスク
トランザクションに登録をまとめる実装は比較的容易。
エラー時はトランザクション内の全てのレコード更新がロールバックされるため、
他レコードへの影響を考慮する必要がある。(全滅はOKか?一部更新はOKか?)
前項にも記載したが、トランザクション内で登録するレコード数が多くなればコミット処理時間も
増大する。
このコミット処理についてはRDSへの負荷に直結するので、RDSの性能と相談して件数を決める必要あ
り
3. 施策 a.ロジック
②処理のマルチスレッド化
効果:★★★★☆ リスク:★★★★☆
②処理のマルチスレッド化
バッチの処理時間の内訳を算出すると、Batchサーバの処理時間に比べて
RDSへの登録処理、Solrへの検索処理が圧倒的に多い。
その上、RDSやSolrの負荷も低いといった場合はBatch、RDS、Solrのスペックを十分に引き出せていな
いことになる。
この場合に有効な策としてバッチ処理のマルチスレッド化が挙げられる。
これは単一処理(スレッド)で発生していた各々の隙間時間を極力減らすことで時間の短縮に繋げる事
ができる。
そもそもRDSもSolrも複数アクセスを前提に設計されているので、単一アクセスでスペックを十分に
発揮し切ることは少ない。
Batchサーバ
Batchサーバ
②処理のマルチスレッド化
具体的には
①スカウト条件に一致する求職者を検索する
②一致したものに対してマッチ度を計算
③求人⇔求職者情報を格納
だった処理を
・処理対象となる求人のリストを抽出
・抽出した求人群をスレッド数分に分割する
・下記の処理を行う子スレッドを並列分だけ生成し、前項の分割分を渡す
・スカウト条件に一致する求職者を検索する
・一致したものに対してマッチ度を計算
・求人⇔求職者情報を格納
・並列分の子スレッドが全て終わるのを待機する
へと変更する。
②処理のマルチスレッド化
before
②処理のマルチスレッド化
after
この処理をスレッド化
②処理のマルチスレッド化
after
②処理のマルチスレッド化
マルチスレッド化に伴う子スレッドの管理。
バッチ処理本体を本スレッド、実処理を子スレッド(複数)として位置付けすると
本スレッドは全ての子スレッドの終了を監視する必要がある。
親スレッドは子スレッドの状況、特にエラーは検知し辛いので
子スレッドのエラーは自身で対処できるようにしないと行方不明になる
サーバのスペック以上に分割しても返って遅くなる&誰かが負荷倒れすることになるので注意
リスク
3. 施策 a.データソース
①インデックスチューニング
効果:★★★★☆ リスク:★★★★☆
②インデックスのチューニング
RDS(MySQL)への検索時に使用するインデックスを見直し
検索しようとしている条件に
一致したインデックスが
用意されているか?
用意されていた場合、
実際に使われているのか?
②インデックスのチューニング
検索しようとしている条件に一致したインデックスが用意されている
か?
テーブルレイアウト 実データ
②インデックスのチューニング
検索しようとしている条件に一致したインデックスが用意されている
か?
テーブルレイアウト 実データ
IDX_1
②インデックスのチューニング
検索しようとしている条件に一致したインデックスが用意されている
か?
テーブルレイアウト 実データ
IDX_2
②インデックスのチューニング
検索しようとしている条件に一致したインデックスが用意されている
か?
テーブルレイアウト 実データ
IDX_1_2
②インデックスのチューニング
検索しようとしている条件に一致したインデックスが用意されている
か?
テーブルレイアウト 実データ
②インデックスのチューニング
検索しようとしている条件に一致したインデックスが用意されている
か?
テーブルレイアウト 実データ
explain結果
②インデックスのチューニング
検索しようとしている条件に一致したインデックスが用意されている
か?
テーブルレイアウト 実データ
②インデックスのチューニング
検索しようとしている条件に一致したインデックスが用意されている
か?
テーブルレイアウト 実データ
explain結果
②インデックスのチューニング
RDS(MySQL)への検索時に使用するインデックスを見直し
インデックスの有無によりDBの検索対象レコード範囲が全景になるか否か挙動が異なる
➜ 大量のレコードがテーブルに存在するほど影響が大きくなる
②インデックスのチューニング
RDS(MySQL)への検索時に使用するインデックスを見直し
定義インデックスが実装で発行するクエリに添っているか?
➜ 実装の改修などでDDL変更されたケースなどでインデックスも再設計されているか?
コード変更を伴わない為、アプリの挙動には影響しないのがこのチューニングの強み。
但し、インデックス登録時のALTER TABLE中は対象テーブルが共有ロック(読み取り専用)になる可能性
があるので注意。
特に外部制約でリンクしている子テーブルも同様のロックが発生するので、システムの肝となるテーブ
ルが対象となった場合はサービス停止もあり得るため、運用の事故は大きく発生し得る
②インデックスのチューニング
リスク
3. 施策 a.データソース
②クエリ(insert文)チューニング
効果:★★★☆☆ リスク:★★☆☆☆
②クエリ(insert文)チューニング
レコードの登録時に発行するSQLは
1レコード目:INSERT INTO ◯◯ VALUES (AA,AA,AA)
2レコード目:INSERT INTO ◯◯ VALUES (BB,BB,BB)
3レコード目:INSERT INTO ◯◯ VALUES (CC,CC,CC)
・
・
といった形でRDSにSQLクエリを発行している。
この個々のクエリ発行にはRDSのの通信が発生するため、この通信オーバーヘッドがレコード数分
発生することになる。
例えばこのオーバーヘッド時間が10msだとすると、1000件更新では10000ms(100秒)にまで膨れ上がる
このクエリを
INSET INTO ◯◯ VALUES (AA,AA,AA),(BB,BB,BB),・・・・・
と、1INSERT文で複数レコードを登録してしまうとこのオーバーヘッド時間(回数)の削減に繋がる
②クエリ(insert文)チューニング
あまりに複数登録しすぎると発行SQLを文が大きくなりすぎてデバッグが困難になる
INSET INTO ◯◯ VALUES
(AA,AA,AA),(BB,BB,BB),(CC,CC,CC),(DD,DD,DD),(EE,EE
,EE),(FF,FF,FF),(GG,GG,GG),(HH,HH,HH),(II,II,II),(JJ,JJ,J
J),(KK,KK,KK)(LL,LL,LL)・・・・・
(LL,LL,LL)・・・・・・・・・・・・・・・・・・・・・
リスク
3. 施策 a.インフラ
①RDSスケールアップ
効果:★★★★☆ リスク:★★★☆☆
①RDSのスケールアップ
AWSサービスの1つRDS。
こちらはインスタンスのサイズを1段階上げることにより純粋の処理スペックの向上
また、インスタンスサイズに連動してネットワーク性能も向上するので通信上の高速化も
さらにストレージをマグネチック(DISK)からSSDへと変更することでIOも高速化
RDS料金/スペック
①RDSのスケールアップ
AWSの使用料金が増加
スケールアップ時にはRDSの再起動が必要。全システムがRDSに依存しているため
全てのサービスを停止する必要がある
リスク
3. 施策 a.インフラ
②Solrのクラスタリング
効果:★★★★☆ リスク:★★★☆☆
②Solrのクラスタリング
Solrの台数(EC2インスタンス)を増やすことで、必要な処理を分散して全体の許容量を上げる
クラスタリングにはAWSのロードバランサーにて2台のSolrへとアクセス分散を実現
②Solrのクラスタリング
EC2インスタンスが1台(Solr分)と、EBSの料金が運用コストとして増加する
データ同期が必須。
リスク
それでも間に合わない・・・
・どれだけ高速化の策を打っても1バッチの処理時間を短縮するには限界がある
➜ インスタンスの性能を上げても、費用に見合う成果は出ない
3章 「奥の手」
4. 奥の手
マルチプロセス化
効果:★★★★★ リスク:★★★★☆
②マルチプロセス化
残された課題
➜ 1つのバッチ処理時間が長くなりすぎて、将来的に頭打ちになる
処理方式の転換
➜ 複数バッチサーバ処理へと変更し、処理ペースを掛け算で確保できるようにする
②マルチプロセス化
新しい処理方式
①処理内容の細分化
➜ 現在の処理を分割可能な単位で細分化する
②マルチプロセス化
新しい処理方式
②細部化された処理を実装
➜ より細かい単位で処理を行う実装へと変更し、複数のサーバ実行に対応する
単位で処理を行う実装
②マルチプロセス化
新しい処理方式
③細部化された情報をキューイング
➜ 複数サーバが分割された処理対象を順次要求し、処理を行う
キューについてはAWSのSQS(Simple Queue Service)を採用
SQSとは?
Amazon Web Serviceが提供するキューイングシステム
安価で大量のメッセージの送信/配信をサポートし、SDKも公式で提供している
②マルチプロセス化
新しい処理方式
注意点
・メッセージ配信時に同じものが取れる場合がある
・FIFOを保証していない
②マルチプロセス化
処理サーバ1 処理サーバ2
新しい処理方式
②マルチプロセス化
SQSの特性「メッセージ配信時に同じものが取れる場合がある」への対応
同一メッセージが何回も取れる場合、同じ処理を複数実行する可能性がある。
防止策としてRDS(MySQL)にて処理済みメッセージの管理テーブルを用意し
メッセージ受信時に処理済みか否かのチェックを行うことで回避
(INSERT時の一意制約を活用)
4章 「さいごに」
結果
ここまでの施策によって・・
結果
処理サーバ2台構成により実行速度が300%UP

More Related Content

What's hot

AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
Yoshifumi Kawai
 
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
GREE VR Studio Lab
 
ファイルやディレクトリに「別名」を付ける機能について 〜ハードリンクからシンボリックリンクまで〜
ファイルやディレクトリに「別名」を付ける機能について 〜ハードリンクからシンボリックリンクまで〜ファイルやディレクトリに「別名」を付ける機能について 〜ハードリンクからシンボリックリンクまで〜
ファイルやディレクトリに「別名」を付ける機能について 〜ハードリンクからシンボリックリンクまで〜
iPride Co., Ltd.
 
elasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるelasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみる
Katsushi Yamashita
 

What's hot (20)

AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
Flumeを活用したAmebaにおける大規模ログ収集システム
Flumeを活用したAmebaにおける大規模ログ収集システムFlumeを活用したAmebaにおける大規模ログ収集システム
Flumeを活用したAmebaにおける大規模ログ収集システム
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
 
ファイルシステム比較
ファイルシステム比較ファイルシステム比較
ファイルシステム比較
 
ゆるバグ
ゆるバグゆるバグ
ゆるバグ
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
 
トランザクションの並行処理制御
トランザクションの並行処理制御トランザクションの並行処理制御
トランザクションの並行処理制御
 
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
 
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメNode.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメ
 
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくったCommon Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
 
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで #CEDEC2022
 
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
 
ファイルやディレクトリに「別名」を付ける機能について 〜ハードリンクからシンボリックリンクまで〜
ファイルやディレクトリに「別名」を付ける機能について 〜ハードリンクからシンボリックリンクまで〜ファイルやディレクトリに「別名」を付ける機能について 〜ハードリンクからシンボリックリンクまで〜
ファイルやディレクトリに「別名」を付ける機能について 〜ハードリンクからシンボリックリンクまで〜
 
elasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるelasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみる
 

Viewers also liked

簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
dcubeio
 

Viewers also liked (20)

簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
[D3]サーバーレスでサービスを作ってみた話
[D3]サーバーレスでサービスを作ってみた話[D3]サーバーレスでサービスを作ってみた話
[D3]サーバーレスでサービスを作ってみた話
 
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
機械学習を支えるX86 64の拡張命令セットを読む会 20170212機械学習を支えるX86 64の拡張命令セットを読む会 20170212
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
 
覚えて帰ろうJavaデザインパターン
覚えて帰ろうJavaデザインパターン覚えて帰ろうJavaデザインパターン
覚えて帰ろうJavaデザインパターン
 
はじめてのAws lambda
はじめてのAws lambdaはじめてのAws lambda
はじめてのAws lambda
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
サーバーサイドDartを試してみる
サーバーサイドDartを試してみるサーバーサイドDartを試してみる
サーバーサイドDartを試してみる
 
React NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみようReact NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみよう
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
 
Php入門
Php入門Php入門
Php入門
 
React native vol3
React native vol3React native vol3
React native vol3
 
GoogleTagManagerを使ってタグ運用を楽にしませんか?
GoogleTagManagerを使ってタグ運用を楽にしませんか?GoogleTagManagerを使ってタグ運用を楽にしませんか?
GoogleTagManagerを使ってタグ運用を楽にしませんか?
 
PostgreSQL使いのエンジニアから見たMySQL
PostgreSQL使いのエンジニアから見たMySQLPostgreSQL使いのエンジニアから見たMySQL
PostgreSQL使いのエンジニアから見たMySQL
 
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜 【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
 
Riotjsハンズオン
RiotjsハンズオンRiotjsハンズオン
Riotjsハンズオン
 
Unity + AndroidでモバイルVRハンズオン
Unity + AndroidでモバイルVRハンズオンUnity + AndroidでモバイルVRハンズオン
Unity + AndroidでモバイルVRハンズオン
 
Google apps scriptを使って業務改善
Google apps scriptを使って業務改善Google apps scriptを使って業務改善
Google apps scriptを使って業務改善
 

Similar to バッチ高速化のあゆみ

Principles of Transaction Processing Second Edition 7章 1, 2節
Principles of Transaction Processing Second Edition 7章 1, 2節Principles of Transaction Processing Second Edition 7章 1, 2節
Principles of Transaction Processing Second Edition 7章 1, 2節
Yuichiro Saito
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
土岐 孝平
 
AngulaとElixirの新しい関係
AngulaとElixirの新しい関係AngulaとElixirの新しい関係
AngulaとElixirの新しい関係
陸 谷出
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
Recruit Technologies
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
 

Similar to バッチ高速化のあゆみ (20)

アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
Principles of Transaction Processing Second Edition 7章 1, 2節
Principles of Transaction Processing Second Edition 7章 1, 2節Principles of Transaction Processing Second Edition 7章 1, 2節
Principles of Transaction Processing Second Edition 7章 1, 2節
 
Redmine導入しました(公開)
Redmine導入しました(公開)Redmine導入しました(公開)
Redmine導入しました(公開)
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
 
Apache Mesosってなに
Apache MesosってなにApache Mesosってなに
Apache Mesosってなに
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
 
BotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミングBotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミング
 
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化
 
Software testing
Software testingSoftware testing
Software testing
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
 
My style agile
My style agileMy style agile
My style agile
 
BP Study #16
BP Study #16BP Study #16
BP Study #16
 
SoCC12報告
SoCC12報告SoCC12報告
SoCC12報告
 
AngulaとElixirの新しい関係
AngulaとElixirの新しい関係AngulaとElixirの新しい関係
AngulaとElixirの新しい関係
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
 
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
 
博士論文公聴会
博士論文公聴会博士論文公聴会
博士論文公聴会
 
Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
 

More from dcubeio

More from dcubeio (18)

AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
 
20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
 
BizReach x Marketo連携
BizReach x Marketo連携BizReach x Marketo連携
BizReach x Marketo連携
 
Kinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたKinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみた
 
Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】
 
春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13
 
DynamoDBを導入した話
DynamoDBを導入した話DynamoDBを導入した話
DynamoDBを導入した話
 
Play2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだことPlay2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだこと
 
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー! すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
 
【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力
 
【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力
 
Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217 Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217
 

バッチ高速化のあゆみ

Editor's Notes

  1. インデックスが効いている検索
  2. 効いていない