SlideShare a Scribd company logo
1 of 78
Download to read offline
Data Engineering
at VOYAGE GROUP
JAWS DAYS 2015
2015/03/22
@suzu_v
自己紹介
• 鈴木健太、すずけん、@suzu_v
• http://suzuken.hatenablog.jp/
• ソフトウェアエンジニア
• アドテクノロジー事業(SSP, DMP)に従事
https://www.facebook.com/voyagegroup/photos/a.365470036810049.90562.176439939046394/752116391478743/?type=3&permPage=1
データエンジニアリング
• 日々増え続けるデータをビジネスに活かし、ユーザ
に恩恵を届けるためには、信頼性の高いデータの保
持、処理、そしてクエリ可能な状態をつくる必要が
ある。そのために、スケーラブルで信頼性の高いデー
タ基盤をつくり、データのパイプラインを組み立て
るエンジニアリングのこと
私達とAWS
• 2009年から利用開始
• 2011年からアドテクノロジー領域でも利用を開始
• 今日はアドテクノロジー領域でのAWS利用につい
てお話します
ディスプレイ広告
広告リクエスト
ブラウザ アドサーバ
そのときどきで良さそうな
広告を選んで
ブラウザ アドサーバ
広告
広告
広告
広告を表示する
ブラウザ アドサーバ
広告
広告
広告
ex. 行動ターゲティング基盤
アーキテクチャ
行動ターゲティングの課題
• なるべく速く書き込みたい。ユーザが何かをみたら、
すぐにターゲティング可能な状態にしてほしい。反
映が速ければ速いほどいい。
• 案件や対象ユーザが増えても、システム全体が問題
なくスケールすること
• 読み込みが安定して低レイテンシであること。でき
れば5ms以内。
Targeting
Infrastructure
ELB
EC2
EC2 EC2
EC2
request
EC2
S3
DynamoDB
EMR ELB
EC2
EC2 EC2
EC2
http api
fluentd
fluentd
(aggregator)
out_exec_filter
out_dynamodb servlet (scala)
dynamic-dynamo
EC2
Growth
Forecast
EC2
EC2
VPC 1
VPC 1
VPC 2
(targeting)
VPC Peering
VPC Peering
ephemeral
cluster
ELB
EC2
EC2 EC2
EC2
request
EC2
S3
DynamoDB
EMR ELB
EC2
EC2 EC2
EC2
http api
fluentd
fluentd
(aggregator)
out_exec_filter
out_dynamodb servlet (scala)
dynamic-dynamo
EC2
Growth
Forecast
EC2
EC2
VPC 1
VPC 1
VPC 2
(targeting)
VPC Peering
VPC Peering
ephemeral
cluster
配信用VPC
ターゲティング
基盤VPC
ELB
EC2
EC2 EC2
EC2
request
EC2
S3
DynamoDB
EMR ELB
EC2
EC2 EC2
EC2
http api
fluentd
fluentd
(aggregator)
out_exec_filter
out_dynamodb servlet (scala)
dynamic-dynamo
EC2
Growth
Forecast
EC2
EC2
VPC 1
VPC 1
VPC 2
(targeting)
VPC Peering
VPC Peering
ephemeral
cluster
Fluentdの
forwardで連携
ELB
EC2
EC2 EC2
EC2
request
EC2
S3
DynamoDB
EMR ELB
EC2
EC2 EC2
EC2
http api
fluentd
fluentd
(aggregator)
out_exec_filter
out_dynamodb servlet (scala)
dynamic-dynamo
EC2
Growth
Forecast
EC2
EC2
VPC 1
VPC 1
VPC 2
(targeting)
VPC Peering
VPC Peering
ephemeral
cluster
Event Streamノード
c3.xlarge複数台
td-agent2
ELB
EC2
EC2 EC2
EC2
request
EC2
S3
DynamoDB
EMR ELB
EC2
EC2 EC2
EC2
http api
fluentd
fluentd
(aggregator)
out_exec_filter
out_dynamodb servlet (scala)
dynamic-dynamo
EC2
Growth
Forecast
EC2
EC2
VPC 1
VPC 1
VPC 2
(targeting)
VPC Peering
VPC Peering
ephemeral
cluster
out_exec_filterでログを加工
DynamoDBに書き込み
ELB
EC2
EC2 EC2
EC2
request
EC2
S3
DynamoDB
EMR ELB
EC2
EC2 EC2
EC2
http api
fluentd
fluentd
(aggregator)
out_exec_filter
out_dynamodb servlet (scala)
dynamic-dynamo
EC2
Growth
Forecast
EC2
EC2
VPC 1
VPC 1
VPC 2
(targeting)
VPC Peering
VPC Peering
ephemeral
cluster
ユーザのセグメント情報を書き込み
全てのログ
http://www.slideshare.net/repeatedly/fluentd-unified-logging-layer-at-fossasia
http://www.slideshare.net/repeatedly/fluentd-unified-logging-layer-at-fossasia
シンプルなストリーム処理
in_forwardで受け入れたレコード
out_exec_filterで加工
{id: "hoge", segment: "seg1", created: 1426406962, ...}
DynamoDBテーブルへ
{id: "hoge", url: "http://fuga.com/kuke", user_agent: ..}
{id: "hoge", url: "http://hoge.com/a", user_agent: ..}
if (domain(url) == "fuga.com") seg = "seg1"
<match hoge.log>
type exec_filter
command ./our/special/filter/command
buffer_type file
buffer_path /path/to/ephemeral/disk/hoge
</match>
!
<match filtered.hoge.log>
type dynamodb
dynamo_db_table our_targeting_table
buffer_type file
buffer_path /path/to/ephemeral/disk/filtered
...
<secondary>
type s3
s3_bucket your-bucket
s3_region ap-northeast-1
s3_object_key_format ...
buffer_type file
buffer_path /path/to/ephemeral/disk/filtered.secondary
...
</secondary>
</match>
in_forwardでおくられてきた
ログをうけとり、フィルターする
filterしたログをDynamoDBに書き込む
batchWriteItemを利用
もし書き込みが失敗したらs3へ
書ききれてませんが、s3への転送もしてます
<match hoge.log>
type exec_filter
command ./our/special/filter/command
buffer_type file
buffer_path /path/to/ephemeral/disk/hoge
</match>
!
<match filtered.hoge.log>
type dynamodb
dynamo_db_table our_targeting_table
buffer_type file
buffer_path /path/to/ephemeral/disk/filtered
...
<secondary>
type s3
s3_bucket your-bucket
s3_region ap-northeast-1
s3_object_key_format ...
buffer_type file
buffer_path /path/to/ephemeral/disk/filtered.secondary
...
</secondary>
</match>
バッファは全てファイル
ephemeral diskに
EventStreamノードの運用
• ノードを作り直す場合にはforward側からフェイルしたノー
ドを外し、全ての転送が終わったら落とす
• Output先を詰まらせないこと。fluentdにバッファをなる
べく貯めないことが望ましい。定常的にバッファが貯まる
ようなら改善が必要。
• バッファがたまってしまった場合は原因を特定して詰まり
を解消した上で、強制的にflush
• $ pkill -USR1 -f fluentd
ストリーム処理における状態
プロセッサ
データ
ストリーム処理における状態
プロセッサ
id: 1
k: 2
データ
あるidがk: 1を満たしていたら通したい
ストリーム処理における状態
プロセッサ
id: 1
k: 2
データ
NG
あるidがk: 1を満たしていたら通したい
ストリーム処理における状態
プロセッサ
データ
あるidがk: 1を満たしていたら通したい
ストリーム処理における状態
プロセッサ
データ
id: 1
k: 1
あるidがk: 1を満たしていたら通したい
ストリーム処理における状態
プロセッサ
データ
id: 1
k: 1 OK!
あるidがk: 1を満たしていたら通したい
ストリーム処理における状態
プロセッサ
データ
id: 1
k: 1
プロセッサにとどまる
時間は限りなく短い
あるidがk: 1を満たしていたら通したい
留めるデータが増えるケース
プロセッサ
id: 1
k: 2
データ
あるidがk: 1とk: 2両方を満たしていたら通したい
プロセッサ
id: 1
k: 2
データ stay
あるidがk: 1とk: 2両方を満たしていたら通したい
留めるデータが増えるケース
プロセッサ
id: 1
k: 3
id: 1
k: 2
id: 1
k: 1
データ 条件がくるまで
滞留させる必要がある
あるidがk: 1とk: 2両方を満たしていたら通したい
留めるデータが増えるケース
プロセッサ
id: 1
v: ok
データ
条件をみたしたのでOK
あるidがk: 1とk: 2両方を満たしていたら通したい
留めるデータが増えるケース
ストリーム処理における状態
プロセッサ
id: 1
k: 3
id: 1
k: 2
id: 1
k: 1
データ 条件がくるまで
滞留させる必要がある
対象とする時間の幅(window)が長くなれば
なるほど多くのデータをストリーム処理可能
な場所に保持する必要がある。データの流量
が増えるとそれだけ多くのリソース(RAM
等)が必要になる。
あるidがk: 1とk: 2両方を満たしていたら通したい
行動ターゲティングの課題
(再掲)
• なるべく速く書き込みたい。ユーザが何かをみたら、
すぐにターゲティング可能な状態にしてほしい。反
映が速ければ速いほどいい。
• 案件や対象ユーザが増えても、システム全体が問題
なくスケールすること
• 読み込みが安定して低レイテンシであること。でき
れば5ms以内。
いろいろ試した結果
• シンプルなmap処理のみリアルタイムに
• (30日前にページAをみた and さっきページBをみ
た)というセグメントにも対応しなければいけなかっ
た・・。のでバッチも併用することに。
• 結果横に並べればシンプルなmap処理についてはス
ケールする構成になったので良かった
ELB
EC2
EC2 EC2
EC2
request
EC2
S3
DynamoDB
EMR ELB
EC2
EC2 EC2
EC2
http api
fluentd
fluentd
(aggregator)
out_exec_filter
out_dynamodb servlet (scala)
dynamic-dynamo
EC2
Growth
Forecast
EC2
EC2
VPC 1
VPC 1
VPC 2
(targeting)
VPC Peering
VPC Peering
ephemeral
cluster
EMRでDynamoDBとS3からデータ抽出
再集計してDynamoDBへ書き込み
EMR / Hive
• Amazon Hadoop 2.4.0, Hive 0.13.1, core: m1.xlarge * 30,
task: c3かr3系統をspot instanceで。専用のSecurity Group
を用意。基本的にRCFileで扱う。
• 200クエリ / 日。1日1クラスタ立ち上げて、ひたすらそこに投
げている。DynamoDBとs3からデータを読み込み、集計し、s3
に書き出している。使うHiveクエリは管理ツールから自動生成
or リポジトリにコミットしてJenkinsからs3に上げている。
• アドホックに使う場合には都度別クラスタを立ち上げている。
分析者も手元からThrift経由で。
SET dynamodb.throughput.read.percent=0.8;
!
CREATE EXTERNAL TABLE IF NOT EXISTS users (
id string,
seg string,
created bigint
)
stored as rcfile
location 's3://path/to/my/user/table';
!
CREATE EXTERNAL TABLE if not exists
users_from_dynamodb (
id string,
seg string,
created bigint)
STORED BY
'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES (
"hive.jdbc.update.on.duplicate" = "true",
"dynamodb.table.name" = "our_special_user_table_name",
"dynamodb.column.mapping" = "id:id,seg:seg,created:created");
!
INSERT OVERWRITE TABLE users SELECT * FROM users_from_dynamodb;
DynamoDBのthroughputをどれくらい使うか
DynamoDBカラムとHiveテーブルの
カラム対応関係
DynamoDBから全データを
抽出してs3に書き込み
EMRの利点と課題
• 利点
• Hadoopのバージョンアップなど、EMR側がやってくれるので楽
• 潰して、立ち上げなおして、が簡単にできる
• bootstrapを工夫すれば様々なHadoop関連ミドルウェアを手軽に試せる
• https://github.com/awslabs/emr-bootstrap-actions
• 課題
• クラスタ立ち上げは時間がかかる
• ジョブスケジューリングは自前で頑張る必要あり
• EMRコマンドのデバッグには極論EMRを立ち上げるしか無い
TODO
このへんで水を飲む
行動ターゲティングの課題
(再掲)
• なるべく速く書き込みたい。ユーザが何かをみたら、
すぐにターゲティング可能な状態にしてほしい。反
映が速ければ速いほどいい。
• 案件や対象ユーザが増えても、システム全体が問題
なくスケールすること
• 読み込みが安定して低レイテンシであること。でき
れば5ms以内。
DynamoDB、最高です
• ご存知フルマネージドNoSQL DB on AWS
• 2年半ほど継続して利用。AWSを使っていて最も選
んでよかったと思っているデータストア。
• 30億レコード入っている。1リクエスト3msで返る。
しかも1度もダウンしたことがない。
「DynamoDBからの読み込
み遅いんですけど・・・」
「(;・ ・)?」
ELB
EC2
EC2 EC2
EC2
request
EC2
S3
DynamoDB
EMR ELB
EC2
EC2 EC2
EC2
http api
fluentd
fluentd
(aggregator)
out_exec_filter
out_dynamodb servlet (scala)
dynamic-dynamo
EC2
Growth
Forecast
EC2
EC2
VPC 1
VPC 1
VPC 2
(targeting)
VPC Peering
VPC Peering
ephemeral
cluster
配信サーバからセグメントデータを読み込み
apache (prefork) + PHP
apacherequest DynamoDB
apache (prefork) + PHP
apacherequest
Process
DynamoDB
apache (prefork) + PHP
apacherequest
Process
DynamoDB
新規コネクション
( 10ms)
apache (prefork) + PHP
apacherequest
Process
DynamoDB
GetItem
apache (prefork) + PHP
apache
Process
DynamoDB
response
apache (prefork) + PHP
apache DynamoDB
response
apache (prefork) + PHP
apache DynamoDB
response
リクエストからレスポンスまで
30ms
秒間リクエスト数が増えた時
apache DynamoDB
秒間リクエスト数が増えた時
apache
request
Process
DynamoDB
requestrequestrequestrequestrequestrequestrequestrequestrequestrequestrequestrequest
Process
Process
Process
待ちプロセスが増える
= LAが上がる
• PHP製のapiをScalaで再実装。Servletを利用。
• DynamoDBへのコネクションをプールするように
• responseが早くなり、同時接続数が増えすぎるこ
となく、安定して稼働
fluentd「DynamoDB
つまって書けないんで
すけど」
私「( ゚д゚)」
ELB
EC2
EC2 EC2
EC2
request
EC2
S3
DynamoDB
EMR ELB
EC2
EC2 EC2
EC2
http api
fluentd
fluentd
(aggregator)
out_exec_filter
out_dynamodb servlet (scala)
dynamic-dynamo
EC2
Growth
Forecast
EC2
EC2
VPC 1
VPC 1
VPC 2
(targeting)
VPC Peering
VPC Peering
ephemeral
cluster
out_exec_filterでログを加工
DynamoDBに書き込み
書き込む量が増えてWrite capacityが
足りなくなった!
• 勝手にスケールするようにしよう!ということで
dynamic-dynamodbの導入
結果
Write
Capacity
Read
Capacity
Query
Latency
テーブル設計イメージ
user_id
String
(hash key)
segment
String
(range key)
created
Number
…
hoge seg1 1426406962
hoge seg2 1426406962
fuga seg1 1426406962
kuke seg1 1426406962
DynamoDB Tips
• 1Itemあたりのバイト数を小さくする(1KBを超え
ないように
• hot keyを作らないようにする(hash keyに同じID
が大量に存在する状態にしないようにする
• DynamoDB - EC2の新規コネクションはそれなり
にコストが高い( 10ms)ので、コネクションを
プールする(つながれば安定して速い
参考: http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-dynamodb
若手解析者「すずけんさん、Hive遅
いんすけど何とかならないっすか?」
私「(́・ω・`)」
アドホックな
データ分析
部分的にBigQueryを利用
• EC2 -> S3 -> SQS -> EC2(worker) -> GCS
• アドホックな分析用はこちらに移行中
https://cloud.google.com/bigquery/?hl=ja
BigQuery
• いいところ
• クラスタのメンテしなくていい。(Hadoopクラス
タの面倒見なくていいし)。速い。コンソールも
最初からついてる。Google Appsと連携できる。
• 使いづらい所
• 権限周り。まだAWSと比べて細かい制御が難しそ
う。UDFが(まだ)使えない。
現状の使い分け
• Large Batch: EMR + Hive
• Short Batch: BigQuery
• Stream Processing: Fluentd + out_exec_filter
参考: http://www.slideshare.net/tagomoris/hcj2014-sql
データと組織
プロダクトオーナーシップ
• インフラも、データも、サービスも、営業も
• 「このデータを取れるようにしたいだけど?」に対
して、全方面に答えられる必要がある。ログに10
バイト情報を増やすだけで、10バイト 250億だ
け月に扱う量が増える。帯域、ディスク、関連する
コストが増える。それらに見合うだけの価値があと
から出せるのかを考える必要がある。
–Amazon’s Leadership PrinciplesのOwnershipより
リーダーにはオーナーシップが必要です。リー
ダーは長期的な視野で考え、短期的な結果のた
めに、長期的な価値を犠牲にしません。リーダー
は自分のチームだけでなく、会社全体のために
行動します。リーダーは「それは私の仕事では
ありません」とは決して口にしません。
cf. Amazon
• Amazon Kinesis
Developer Managerの
Goさんの話
• AmazonのLeadership
PrinciplesのOwnership
について
• インフラチームもサービ
スチームもOwnershipを
ビジネス的な改善の重視
• VOYAGE GROUPのエンジニアは技術的なレビュー
を受ける。人事評価も影響する。
• 現場のエンジニアでもプロダクトの数値を「見え
る」ようにすることを意識させられる。
• データをうまく扱う環境をつくること -> ビジネス
を改善すること
参考: http://gihyo.jp/design/serial/01/creative/0006
まとめ
普通のことを普通にやる
• パフォーマンスも、運用も、コストも。データの配
置も、必要なところだけ、必要なことを。データや
トラフィックが増えても、普通のことを普通にやる。
エンジニア採用中です!
https://voyagegroup.com/adtechunit/

More Related Content

What's hot

ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングYasuhiro Onishi
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入matsumoto_katsuhiko
 
実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ太郎 test
 
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてくださいレガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてくださいIsamu Suzuki
 
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordovamiso- soup3
 
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメNode.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメIsamu Suzuki
 
Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術Isamu Suzuki
 
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。Yutaka Horikawa
 
Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発Takuro Sasaki
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話Yuki Ishikawa
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座都元ダイスケ Miyamoto
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 
GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法gree_tech
 
Springを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしようSpringを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしよう土岐 孝平
 
React.js + Reduxで作るSPA
React.js + Reduxで作るSPAReact.js + Reduxで作るSPA
React.js + Reduxで作るSPAShohei Saeki
 
20170111above the cloud_vol2
20170111above the cloud_vol220170111above the cloud_vol2
20170111above the cloud_vol2Naomi Yamasaki
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroKenta Suzuki
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクションTakahiro Okumura
 

What's hot (19)

ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニング
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入
 
実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ
 
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてくださいレガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
 
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova
 
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメNode.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメ
 
Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術
 
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。
 
Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法
 
Springを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしようSpringを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしよう
 
React.js + Reduxで作るSPA
React.js + Reduxで作るSPAReact.js + Reduxで作るSPA
React.js + Reduxで作るSPA
 
20170111above the cloud_vol2
20170111above the cloud_vol220170111above the cloud_vol2
20170111above the cloud_vol2
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
 

Similar to Data Engineering at VOYAGE GROUP #jawsdays

実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターンHiroyasu Suzuki
 
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用Developers Summit
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションMasashi Shinbara
 
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows AzureKeiichi Hashimoto
 
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう! Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう! Yoichi Kawasaki
 
A12 既存のデータベース環境で分析業務を加速させるには? DB2が実現するソフトウエア分析ソリューション(DB2 BLU Acceleration)の仕...
A12 既存のデータベース環境で分析業務を加速させるには? DB2が実現するソフトウエア分析ソリューション(DB2 BLU Acceleration)の仕...A12 既存のデータベース環境で分析業務を加速させるには? DB2が実現するソフトウエア分析ソリューション(DB2 BLU Acceleration)の仕...
A12 既存のデータベース環境で分析業務を加速させるには? DB2が実現するソフトウエア分析ソリューション(DB2 BLU Acceleration)の仕...Insight Technology, Inc.
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識Daiyu Hatakeyama
 
[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008Toru Kimura
 
Synapse lakedatabase
Synapse lakedatabaseSynapse lakedatabase
Synapse lakedatabaseRyoma Nagata
 
Windows azureって何
Windows azureって何Windows azureって何
Windows azureって何Kana SUZUKI
 
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & AppsGoogle Cloud Platform - Japan
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由gree_tech
 
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集SORACOM, INC
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~じゅん なかざ
 
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLスケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLMicrosoft Azure Japan
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!guestc06e54
 
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Masakazu Muraoka
 

Similar to Data Engineering at VOYAGE GROUP #jawsdays (20)

Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
 
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
 
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
 
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう! Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
 
A12 既存のデータベース環境で分析業務を加速させるには? DB2が実現するソフトウエア分析ソリューション(DB2 BLU Acceleration)の仕...
A12 既存のデータベース環境で分析業務を加速させるには? DB2が実現するソフトウエア分析ソリューション(DB2 BLU Acceleration)の仕...A12 既存のデータベース環境で分析業務を加速させるには? DB2が実現するソフトウエア分析ソリューション(DB2 BLU Acceleration)の仕...
A12 既存のデータベース環境で分析業務を加速させるには? DB2が実現するソフトウエア分析ソリューション(DB2 BLU Acceleration)の仕...
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識
 
[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008
 
Synapse lakedatabase
Synapse lakedatabaseSynapse lakedatabase
Synapse lakedatabase
 
Windows azureって何
Windows azureって何Windows azureって何
Windows azureって何
 
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由
 
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
 
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLスケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
 
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
 

More from VOYAGE GROUP

AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroVOYAGE GROUP
 
JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)VOYAGE GROUP
 
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようJSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようVOYAGE GROUP
 
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会VOYAGE GROUP
 
[20140625]wwdc2014 feedback
[20140625]wwdc2014 feedback[20140625]wwdc2014 feedback
[20140625]wwdc2014 feedbackVOYAGE GROUP
 
Google playでのリワードアプリリジェクトからの今後のマネタイズ手段について インタースティシャル広告×クロスプロモーション-
Google playでのリワードアプリリジェクトからの今後のマネタイズ手段について インタースティシャル広告×クロスプロモーション-Google playでのリワードアプリリジェクトからの今後のマネタイズ手段について インタースティシャル広告×クロスプロモーション-
Google playでのリワードアプリリジェクトからの今後のマネタイズ手段について インタースティシャル広告×クロスプロモーション-VOYAGE GROUP
 
事業内デザイナーのミッション(公開版) genesix 藤井幹大
事業内デザイナーのミッション(公開版) genesix 藤井幹大事業内デザイナーのミッション(公開版) genesix 藤井幹大
事業内デザイナーのミッション(公開版) genesix 藤井幹大VOYAGE GROUP
 
[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakataVOYAGE GROUP
 
セミナープレゼン資料【Adingo】 20130529 
セミナープレゼン資料【Adingo】 20130529 セミナープレゼン資料【Adingo】 20130529 
セミナープレゼン資料【Adingo】 20130529 VOYAGE GROUP
 
セミナープレゼン資料【Adingo】 20130530 
セミナープレゼン資料【Adingo】 20130530 セミナープレゼン資料【Adingo】 20130530 
セミナープレゼン資料【Adingo】 20130530 VOYAGE GROUP
 
Abテストノススメ
AbテストノススメAbテストノススメ
AbテストノススメVOYAGE GROUP
 
iPhoneアプリ「トリセツ」にて実践したリーンスタートアップ
iPhoneアプリ「トリセツ」にて実践したリーンスタートアップiPhoneアプリ「トリセツ」にて実践したリーンスタートアップ
iPhoneアプリ「トリセツ」にて実践したリーンスタートアップVOYAGE GROUP
 
【発表用】Lpoワークショップ~組織でサイト改善をする方法~
【発表用】Lpoワークショップ~組織でサイト改善をする方法~【発表用】Lpoワークショップ~組織でサイト改善をする方法~
【発表用】Lpoワークショップ~組織でサイト改善をする方法~VOYAGE GROUP
 
Androidにおけるテストに関して〜デバイスをどう選択するか〜
Androidにおけるテストに関して〜デバイスをどう選択するか〜Androidにおけるテストに関して〜デバイスをどう選択するか〜
Androidにおけるテストに関して〜デバイスをどう選択するか〜VOYAGE GROUP
 
スマホ無料アプリのマネタイズについて【Adingo】
スマホ無料アプリのマネタイズについて【Adingo】スマホ無料アプリのマネタイズについて【Adingo】
スマホ無料アプリのマネタイズについて【Adingo】VOYAGE GROUP
 
最新のマーケットアルゴリズムと、 アルゴリズムを踏まえてのプロモーション
最新のマーケットアルゴリズムと、 アルゴリズムを踏まえてのプロモーション最新のマーケットアルゴリズムと、 アルゴリズムを踏まえてのプロモーション
最新のマーケットアルゴリズムと、 アルゴリズムを踏まえてのプロモーションVOYAGE GROUP
 
【発表用】ウェブアナリスト養成講座「Lpoとabテスト」
【発表用】ウェブアナリスト養成講座「Lpoとabテスト」【発表用】ウェブアナリスト養成講座「Lpoとabテスト」
【発表用】ウェブアナリスト養成講座「Lpoとabテスト」VOYAGE GROUP
 
ゴールから始めよう!
ゴールから始めよう!ゴールから始めよう!
ゴールから始めよう!VOYAGE GROUP
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)VOYAGE GROUP
 

More from VOYAGE GROUP (20)

AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
 
JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)
 
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようJSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めよう
 
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会
 
[20140625]wwdc2014 feedback
[20140625]wwdc2014 feedback[20140625]wwdc2014 feedback
[20140625]wwdc2014 feedback
 
Google playでのリワードアプリリジェクトからの今後のマネタイズ手段について インタースティシャル広告×クロスプロモーション-
Google playでのリワードアプリリジェクトからの今後のマネタイズ手段について インタースティシャル広告×クロスプロモーション-Google playでのリワードアプリリジェクトからの今後のマネタイズ手段について インタースティシャル広告×クロスプロモーション-
Google playでのリワードアプリリジェクトからの今後のマネタイズ手段について インタースティシャル広告×クロスプロモーション-
 
事業内デザイナーのミッション(公開版) genesix 藤井幹大
事業内デザイナーのミッション(公開版) genesix 藤井幹大事業内デザイナーのミッション(公開版) genesix 藤井幹大
事業内デザイナーのミッション(公開版) genesix 藤井幹大
 
[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata
 
セミナープレゼン資料【Adingo】 20130529 
セミナープレゼン資料【Adingo】 20130529 セミナープレゼン資料【Adingo】 20130529 
セミナープレゼン資料【Adingo】 20130529 
 
セミナープレゼン資料【Adingo】 20130530 
セミナープレゼン資料【Adingo】 20130530 セミナープレゼン資料【Adingo】 20130530 
セミナープレゼン資料【Adingo】 20130530 
 
Abテストノススメ
AbテストノススメAbテストノススメ
Abテストノススメ
 
iPhoneアプリ「トリセツ」にて実践したリーンスタートアップ
iPhoneアプリ「トリセツ」にて実践したリーンスタートアップiPhoneアプリ「トリセツ」にて実践したリーンスタートアップ
iPhoneアプリ「トリセツ」にて実践したリーンスタートアップ
 
【発表用】Lpoワークショップ~組織でサイト改善をする方法~
【発表用】Lpoワークショップ~組織でサイト改善をする方法~【発表用】Lpoワークショップ~組織でサイト改善をする方法~
【発表用】Lpoワークショップ~組織でサイト改善をする方法~
 
Androidにおけるテストに関して〜デバイスをどう選択するか〜
Androidにおけるテストに関して〜デバイスをどう選択するか〜Androidにおけるテストに関して〜デバイスをどう選択するか〜
Androidにおけるテストに関して〜デバイスをどう選択するか〜
 
スマホ無料アプリのマネタイズについて【Adingo】
スマホ無料アプリのマネタイズについて【Adingo】スマホ無料アプリのマネタイズについて【Adingo】
スマホ無料アプリのマネタイズについて【Adingo】
 
最新のマーケットアルゴリズムと、 アルゴリズムを踏まえてのプロモーション
最新のマーケットアルゴリズムと、 アルゴリズムを踏まえてのプロモーション最新のマーケットアルゴリズムと、 アルゴリズムを踏まえてのプロモーション
最新のマーケットアルゴリズムと、 アルゴリズムを踏まえてのプロモーション
 
【発表用】ウェブアナリスト養成講座「Lpoとabテスト」
【発表用】ウェブアナリスト養成講座「Lpoとabテスト」【発表用】ウェブアナリスト養成講座「Lpoとabテスト」
【発表用】ウェブアナリスト養成講座「Lpoとabテスト」
 
ゴールから始めよう!
ゴールから始めよう!ゴールから始めよう!
ゴールから始めよう!
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)
 
Sprk2012 LT
Sprk2012 LTSprk2012 LT
Sprk2012 LT
 

Data Engineering at VOYAGE GROUP #jawsdays