AWSにおけるバッチ処理の
ベストプラクティス
都元ダイスケ
2014-06-28 @ Sapporo
#cmdevio
自己紹介
• よく訓練されたアップル信者、都元です。
• Webアプリ屋出身のAWS屋
• Classmethod所属
• AWS歴 2.5年
• @daisuke_m
CloudFormation
EC2S3
Glacier
ElasticM...
バッチ処理とは?
‣ リアルタイム処理の対義語。
‣ らしいのだが厳密な話は抜きだ。
‣ 直感的に乱暴に。
HTTPリクエストに応答するための処理以外のもの
#cmdevio
要するに
‣ 運用上必要な情報を、随時担当者が抽出したりする
ためのアドホック(場当たり的)処理。
‣ データ移行とか、ちょっとした集計とか。
‣ 随時発生するバックグラウンド処理。
‣ ジョブスケジューラにトリガされる処理。
‣ 遅延処理や定...
Design for failure
(障害を見越した設計)
‣ まずはAZ障害に耐える設計を!
‣ AWSは比較的カジュアルにEC2
インスタンスに再起動を要求w
‣ だからMulti-AZで冗長化。
‣ WebサーバはELBによる

クラス...
バッチ on AWS
‣ バッチサーバをAWSにどのように実装するか。
‣ アドホック処理は素朴にどうぞ。
‣ バックグラウンド処理は?
‣ ジョブスケジューラ処理は? cron
?
#cmdevio
cronの問題点
冗長化できない…
#cmdevio
いや、できなくぁないですよ? でも、します?
Producer & Consumer
‣ producerというのはデータを
生産する生産者
‣ consumerというのはデータを
消費する消費者
‣ Queue(FIFOバッファ)で

2者がつながる
#cmdevio
‣ producerはSQSにジョブリクエストを投げるだけ
‣ consumerはSQSをポーリングし、リクエストを
拾い次第Workerとして実作業を担う
‣ 可用性 (availability) を意識したら

拡張性 (scalabili...
SQS
(AWSで提供するマネージド分散キュー)
‣ サービスレベルで Multi-AZ 冗長化対応済み
‣ スケーラブル
‣ であるがゆえに受け入れるべき制約
‣ 順序保証しない(厳密にFIFOじゃない)
‣ at least once de...
#cmdevio
Workerの実装
‣ Queueをポーリングする
‣ メッセージが来次第処理する
‣ メッセージの処理が成功したことを、Queueに
宣言する
#cmdevio
めんどくさい
定型的な処理
#cmdevio
Beanstalk worker tier
‣ Beanstalkは一般的に、ELB+Webサーバの

構成を提供してくれるデプロイ環境である。
‣ だけどね。ELB+Webサーバだけではなくてね。
‣ Queue+Workerサーバの環境も提...
worker / web tier
#cmdevio
aws-sqsd
#cmdevio
sample application
#cmdevio
ジョブスケジューラ
‣ この問題が未解決
‣ スケジュールに合わせたSQSメッセージ発行
‣ 可用性(AZダウン耐性)
‣ 拡張性(トリガが増えても大丈夫)
#cmdevio
Quartz と Brian
‣ QUARTZ
‣ JavaのOSSジョブスケジューラ
‣ RDBMSをセマフォとした分散・同期
‣ Brian by
‣ QUARTZをラップしたBeanstalkアプリ
‣ Web tier / intern...
#cmdevio
Developers.IO
Job Worker
三部作
http://bit.ly/aws-worker-sqs

http://bit.ly/aws-worker-beanstalk

http://bit.ly/aws-worker-br...
Upcoming SlideShare
Loading in...5
×

AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05

32,161

Published on

Published in: Technology
0 Comments
27 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
32,161
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
39
Comments
0
Likes
27
Embeds 0
No embeds

No notes for slide

AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05

  1. 1. AWSにおけるバッチ処理の ベストプラクティス 都元ダイスケ 2014-06-28 @ Sapporo #cmdevio
  2. 2. 自己紹介 • よく訓練されたアップル信者、都元です。 • Webアプリ屋出身のAWS屋 • Classmethod所属 • AWS歴 2.5年 • @daisuke_m CloudFormation EC2S3 Glacier ElasticMapReduce AutoScaling ELB CloudFrontRDS DynamoDB ElastiCache RedShift IAM CloudWatch Beanstalk Data Pipeline OpsWorks CloudHSM CloudSearch SWF SQS SNS SES Transcoder Route53VPC DirectConnect StorageGateway Mechanical Turk CloudTrail AppStream Kinesis
  3. 3. バッチ処理とは? ‣ リアルタイム処理の対義語。 ‣ らしいのだが厳密な話は抜きだ。 ‣ 直感的に乱暴に。 HTTPリクエストに応答するための処理以外のもの #cmdevio
  4. 4. 要するに ‣ 運用上必要な情報を、随時担当者が抽出したりする ためのアドホック(場当たり的)処理。 ‣ データ移行とか、ちょっとした集計とか。 ‣ 随時発生するバックグラウンド処理。 ‣ ジョブスケジューラにトリガされる処理。 ‣ 遅延処理や定時処理。 #cmdevio
  5. 5. Design for failure (障害を見越した設計) ‣ まずはAZ障害に耐える設計を! ‣ AWSは比較的カジュアルにEC2 インスタンスに再起動を要求w ‣ だからMulti-AZで冗長化。 ‣ WebサーバはELBによる
 クラスタリング構成 ‣ RDBサーバはMulti-AZによる
 Master-Slave構成 #cmdevio
  6. 6. バッチ on AWS ‣ バッチサーバをAWSにどのように実装するか。 ‣ アドホック処理は素朴にどうぞ。 ‣ バックグラウンド処理は? ‣ ジョブスケジューラ処理は? cron ? #cmdevio
  7. 7. cronの問題点 冗長化できない… #cmdevio いや、できなくぁないですよ? でも、します?
  8. 8. Producer & Consumer ‣ producerというのはデータを 生産する生産者 ‣ consumerというのはデータを 消費する消費者 ‣ Queue(FIFOバッファ)で
 2者がつながる #cmdevio
  9. 9. ‣ producerはSQSにジョブリクエストを投げるだけ ‣ consumerはSQSをポーリングし、リクエストを 拾い次第Workerとして実作業を担う ‣ 可用性 (availability) を意識したら
 拡張性 (scalability) をも手に入れた! #cmdevio
  10. 10. SQS (AWSで提供するマネージド分散キュー) ‣ サービスレベルで Multi-AZ 冗長化対応済み ‣ スケーラブル ‣ であるがゆえに受け入れるべき制約 ‣ 順序保証しない(厳密にFIFOじゃない) ‣ at least once delivery ‣ Workerの処理は順序不問で冪等がベスト。 #cmdevio
  11. 11. #cmdevio
  12. 12. Workerの実装 ‣ Queueをポーリングする ‣ メッセージが来次第処理する ‣ メッセージの処理が成功したことを、Queueに 宣言する #cmdevio
  13. 13. めんどくさい 定型的な処理 #cmdevio
  14. 14. Beanstalk worker tier ‣ Beanstalkは一般的に、ELB+Webサーバの
 構成を提供してくれるデプロイ環境である。 ‣ だけどね。ELB+Webサーバだけではなくてね。 ‣ Queue+Workerサーバの環境も提供。 #cmdevio
  15. 15. worker / web tier #cmdevio
  16. 16. aws-sqsd #cmdevio
  17. 17. sample application #cmdevio
  18. 18. ジョブスケジューラ ‣ この問題が未解決 ‣ スケジュールに合わせたSQSメッセージ発行 ‣ 可用性(AZダウン耐性) ‣ 拡張性(トリガが増えても大丈夫) #cmdevio
  19. 19. Quartz と Brian ‣ QUARTZ ‣ JavaのOSSジョブスケジューラ ‣ RDBMSをセマフォとした分散・同期 ‣ Brian by ‣ QUARTZをラップしたBeanstalkアプリ ‣ Web tier / internal ELBで使うとよい #cmdevio
  20. 20. #cmdevio
  21. 21. Developers.IO Job Worker 三部作 http://bit.ly/aws-worker-sqs
 http://bit.ly/aws-worker-beanstalk
 http://bit.ly/aws-worker-brian
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×