Upload
Download free for 30 days
Login
Submit Search
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
9 likes
5,162 views
都元ダイスケ Miyamoto
JAWS-UG 千葉支部 Vol.5 ~秋のAWS Lambda & API Gateway 祭り!!~
Technology
Read more
1 of 29
Download now
Downloaded 14 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
More Related Content
PDF
API Gatewayで re:Inventのセッション探し
Ryo Nakamaru
PDF
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
Takashi Makino
PDF
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
Yoshihiro Ohsuka
PPTX
20160312 Jaws Days 2016 API Gateway+Lambda
Kazuki Ueki
PDF
ドローンの安全運転をささえるLambda
真吾 吉田
PDF
Lambda × Mobileの可能性
yuki0211s
PDF
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
Takehiro Suemitsu
PDF
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
Ryu Yamashita
API Gatewayで re:Inventのセッション探し
Ryo Nakamaru
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
Takashi Makino
PHPという概念が存在しない退屈な世界 - AWS LambdaでWebAPP編
Yoshihiro Ohsuka
20160312 Jaws Days 2016 API Gateway+Lambda
Kazuki Ueki
ドローンの安全運転をささえるLambda
真吾 吉田
Lambda × Mobileの可能性
yuki0211s
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
Takehiro Suemitsu
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
Ryu Yamashita
What's hot
(20)
PPTX
はじめてのAWS Lambda
Masaki Misawa
PDF
What's new with Serverless
Keisuke Nishitani
PDF
Introduction to AWS X-Ray
Keisuke Nishitani
PDF
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
Masahiro NAKAYAMA
PDF
AWSのサーバレス関連アップデートを10分で紹介します
Keisuke Nishitani
PDF
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
真吾 吉田
PDF
Going Serverless, Building Applications with No Servers
Keisuke Nishitani
PPTX
AWS Lambda + Go
Kentaro Kawano
PDF
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki
PDF
AWS Lambda / Amazon API Gateway Deep Dive
Keisuke Nishitani
PDF
AWS LambdaでEC2を管理しよう(JAWS-UG 大阪 in AWS Cloud Roadshow 2015)
tsuchimon
PDF
Tune Up AWS Lambda
Keisuke Nishitani
PDF
Serverless Architecture on AWS (20151201版)
Keisuke Nishitani
PDF
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Keisuke Nishitani
PPTX
Amazon AlexaとServerless
Jun Ichikawa
PPTX
Serverless frameworkを使ってみた話 at #nseg #90
ko ty
PDF
JAWSDAYS2016 Technical Deep DIVE
陽平 山口
PDF
サーバーレスアーキテクチャのすすめ(公開版)
Keisuke Kadoyama
PDF
AWSでアプリ開発するなら 知っておくべこと
Keisuke Nishitani
PDF
サーバーレスの今とこれから
真吾 吉田
はじめてのAWS Lambda
Masaki Misawa
What's new with Serverless
Keisuke Nishitani
Introduction to AWS X-Ray
Keisuke Nishitani
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
Masahiro NAKAYAMA
AWSのサーバレス関連アップデートを10分で紹介します
Keisuke Nishitani
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
真吾 吉田
Going Serverless, Building Applications with No Servers
Keisuke Nishitani
AWS Lambda + Go
Kentaro Kawano
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki
AWS Lambda / Amazon API Gateway Deep Dive
Keisuke Nishitani
AWS LambdaでEC2を管理しよう(JAWS-UG 大阪 in AWS Cloud Roadshow 2015)
tsuchimon
Tune Up AWS Lambda
Keisuke Nishitani
Serverless Architecture on AWS (20151201版)
Keisuke Nishitani
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Keisuke Nishitani
Amazon AlexaとServerless
Jun Ichikawa
Serverless frameworkを使ってみた話 at #nseg #90
ko ty
JAWSDAYS2016 Technical Deep DIVE
陽平 山口
サーバーレスアーキテクチャのすすめ(公開版)
Keisuke Kadoyama
AWSでアプリ開発するなら 知っておくべこと
Keisuke Nishitani
サーバーレスの今とこれから
真吾 吉田
Ad
Viewers also liked
(20)
PDF
フルマネージドのポイントシステム
Masayuki Kato
PDF
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
Amazon Web Services Japan
PDF
クラウドネイティブ化する未来
Keisuke Nishitani
PDF
Jawsug chiba API Gateway
Takuro Sasaki
PDF
20150908 jaws ug-chiba_lt
Tomoaki Imai
PDF
AWS Blackbelt 2015シリーズ AWS Lambda
Amazon Web Services Japan
PDF
20150226_JAWS_UG札幌
美佳 松井
PDF
20150425 JAWS-UG Okinawa
Toshiyuki Konparu
PDF
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
PPTX
Lambdaについて
Ara Jo
PDF
JavaのLambdaの裏事情
なおき きしだ
PDF
20150928楽しいlambda
Norifumi Homma
PDF
AWS Lambda のご紹介 2015 JAWS沖縄
Toshiaki Enami
PPTX
管理統制もLambdaで!
Mamoru Ohashi
PPTX
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
Hiroyuki Kusu
PDF
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
都元ダイスケ Miyamoto
PDF
速習 AWS Lambda
Masayuki Uchida
PDF
Serverlessなものを使ってサービスを作っている話
Yasuyuki Fujikawa
PDF
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
PDF
AWS Lambda にまつわるおいしい話
美佳 松井
フルマネージドのポイントシステム
Masayuki Kato
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
Amazon Web Services Japan
クラウドネイティブ化する未来
Keisuke Nishitani
Jawsug chiba API Gateway
Takuro Sasaki
20150908 jaws ug-chiba_lt
Tomoaki Imai
AWS Blackbelt 2015シリーズ AWS Lambda
Amazon Web Services Japan
20150226_JAWS_UG札幌
美佳 松井
20150425 JAWS-UG Okinawa
Toshiyuki Konparu
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
Lambdaについて
Ara Jo
JavaのLambdaの裏事情
なおき きしだ
20150928楽しいlambda
Norifumi Homma
AWS Lambda のご紹介 2015 JAWS沖縄
Toshiaki Enami
管理統制もLambdaで!
Mamoru Ohashi
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
Hiroyuki Kusu
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
都元ダイスケ Miyamoto
速習 AWS Lambda
Masayuki Uchida
Serverlessなものを使ってサービスを作っている話
Yasuyuki Fujikawa
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
AWS Lambda にまつわるおいしい話
美佳 松井
Ad
Similar to 20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
(7)
PDF
AWS Lambda Update
Keisuke Nishitani
PPTX
JAWS-UG 愛媛 第6回勉強会(Lambda)
Takahiro Kato
PDF
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
真吾 吉田
PDF
AWS Black Belt Techシリーズ AWS Lambda Updates
Amazon Web Services Japan
PDF
AWSCLI Lambda
Operation Lab, LLC.
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
PDF
第18回 jaws ug札幌 勉強会 やってみたで終わらないlambdaな話
Hiroyuki Hiki
AWS Lambda Update
Keisuke Nishitani
JAWS-UG 愛媛 第6回勉強会(Lambda)
Takahiro Kato
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
真吾 吉田
AWS Black Belt Techシリーズ AWS Lambda Updates
Amazon Web Services Japan
AWSCLI Lambda
Operation Lab, LLC.
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
第18回 jaws ug札幌 勉強会 やってみたで終わらないlambdaな話
Hiroyuki Hiki
More from 都元ダイスケ Miyamoto
(20)
PDF
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
都元ダイスケ Miyamoto
PDF
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
都元ダイスケ Miyamoto
PDF
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
PDF
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
都元ダイスケ Miyamoto
PDF
AWSクラウドデータストレージ総論
都元ダイスケ Miyamoto
PDF
20170312 F.K様向け ライフパートナーM.M様のご提案
都元ダイスケ Miyamoto
PDF
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
PDF
マイクロWebアプリケーション - Developers.IO 2016
都元ダイスケ Miyamoto
PDF
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
PDF
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
都元ダイスケ Miyamoto
PDF
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
都元ダイスケ Miyamoto
PDF
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
都元ダイスケ Miyamoto
PDF
20130516 cm課外授業8-aws
都元ダイスケ Miyamoto
PDF
20121215 DevLOVE2012 Mahout on AWS
都元ダイスケ Miyamoto
PDF
20121206 VOYAGE LT - 名前重要って言うけどさ
都元ダイスケ Miyamoto
PDF
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
PDF
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
都元ダイスケ Miyamoto
PDF
DevLOVE Beautiful Development - 第一幕 陽の巻
都元ダイスケ Miyamoto
PDF
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
都元ダイスケ Miyamoto
PDF
とべとべ電設部勉強会20100717 DB meets Jiemamy
都元ダイスケ Miyamoto
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
都元ダイスケ Miyamoto
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
都元ダイスケ Miyamoto
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
都元ダイスケ Miyamoto
AWSクラウドデータストレージ総論
都元ダイスケ Miyamoto
20170312 F.K様向け ライフパートナーM.M様のご提案
都元ダイスケ Miyamoto
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
マイクロWebアプリケーション - Developers.IO 2016
都元ダイスケ Miyamoto
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
都元ダイスケ Miyamoto
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
都元ダイスケ Miyamoto
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
都元ダイスケ Miyamoto
20130516 cm課外授業8-aws
都元ダイスケ Miyamoto
20121215 DevLOVE2012 Mahout on AWS
都元ダイスケ Miyamoto
20121206 VOYAGE LT - 名前重要って言うけどさ
都元ダイスケ Miyamoto
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
都元ダイスケ Miyamoto
DevLOVE Beautiful Development - 第一幕 陽の巻
都元ダイスケ Miyamoto
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
都元ダイスケ Miyamoto
とべとべ電設部勉強会20100717 DB meets Jiemamy
都元ダイスケ Miyamoto
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
1.
"時間の流れ" という無限リストを扱う AWS Lambda JAWS-UG 千葉支部
Vol.5 ∼秋のAWS Lambda & API Gateway 祭り!!∼ 2015-09-08 クラスメソッド株式会社 都元ダイスケ
2.
自己紹介 ✦ よく訓練されたアップル信者、都元です。 ✦ Webアプリ屋出身のAWS屋 ✦
Javaやってます ✦ AWS歴約4年(since 2011夏) ✦ Twitter @daisuke_m ✦ 人間CloudFormer ✦ 自動デプロイ芸人
3.
今日は ✦ 秋のAWS Lambda
& API Gateway 祭り!! ✦ ただし、本セッションはAPI Gateway成分ゼロです。 ✦ Lambdaのみでがんばります。 ✦ Lambdaが出てくるのも遅くぁwせdrftgyふじこ
4.
バッチ処理 ✦ リアルタイム処理の対義語。 ✦ ここでは、HTTPリクエストに応答するための 処理以外のもの。 ✦
例えばこんなお仕事を担う。 ✦ 毎週/毎日、通知のメールを送りたい。 ✦ 毎月、締め処理のバッチを走らせたい。
5.
都元の問題提起編
6.
AWS上に、HAでスケーラブルな バッチサーバを構成してください。 冗長バッチサーバ問題
7.
定期バッチの課題 ✦ 障害等で発火できなかったトリガはどうする? ✦ 毎分発火すべきトリガで、0:31までは発火でき ていた。今、息を吹き返したのが0:33.30。 ✦
0:32と0:33、発火漏れ。
8.
戦略 ✦ 何事もなかったように、0:34から再開。 ✦ 即座に2回発火し、0:34からは予定通り。 ✦
何度撃ち漏らしていても、即座に1回だけ発火し、 0:34からは予定通り。 ✦ etc.
9.
一方AWSは ✦ Design for
failure (障害を見越した設計) ✦ EC2インスタンス単品での可用性を担保しよう としない。 ✦ 言い換えると、高可用性(HA)を要求するシステ ムに対しては、Multi-AZを要求する。 ✦ Multi-AZ分散すると、スケーラビリティも。
10.
cronバッチサーバ ✦ 可用性のために2台冗長でバッチサーバを構築。 ✦ 2回発火してくれてベンリでオトク!? ✦
バッチ処理が増えたので4台にスケール。 ✦ 4サーバで同じ処理を並走してくれるので、 1台当たりの稼働率は変わらないのでオトク!?
11.
バッチサーバの責務を分割 ✦ ジョブスケジューラ (JS) ✦
規定されたリズムに従ってトリガを発火 ✦ 発火した結果、何が行われるかは関知しない ✦ ジョブワーカー (JW) ✦ 発火したトリガを受けて、処理を実行 ✦ トリガが発火した理由には関知しない
12.
改めてHAとスケーラビリティ ✦ JWのMulti-AZ化は簡単。 ✦ SQSを使ったProducer
/ Consumerパターン ✦ クセモノはJS側だった。
13.
都元の解答編
14.
Solution 1 -
Brian ✦ トリガのCRUDを担う RESTful API ✦ 複数台で冗長化 ✦ 多重発火防止はDBを仲介した セマフォで実現 ✦ トリガに従って、SNSトピッ クにメッセージを投げるだけ。
15.
Brianの実装と問題点 ✦ QuartzというJava製OSSジョブスケジューラ。 ✦ 複雑だが高機能なので、そこそこ実装は楽。 ✦
RDBを利用したセマフォ(クラスタ機能) ✦ 複雑で、RDBからDynamoDBに差し替える等は困難 ✦ misfire instruction機能 ✦ RDSのfailoverによる可用性の低下がある。 ✦ JSに2台、JWに2台。金のバカ食い。 ✦ cron + sh-scriptであれば1台で済んでたのに。
16.
Solution 2 -
Jimmy ✦ トリガは毎秒で固定 ✦ 複数台で冗長化 ✦ 多重発火防止はDynamoDBを 仲介したセマフォで実現 ✦ トリガに従って、SNSトピッ クにメッセージを投げるだけ。
17.
Jimmyが吐くメッセージ { "timestamp": 1438825770, "firedTimestamp": 1438825770, "recovery":
false, "version": "0.1-SNAPSHOT" }
18.
Jimmyの実装と課題 ✦ 中身は実はQuartzを利用。(なんだかんだよく出来てる) ✦ ただしクラスタは利用せず、気ままに毎秒発火。 ✦
DynamoDBへのConditional Putを利用して、書き込みに 成功したインスタンスにSNSメッセージ送信の権利を。 ✦ 全インスタンス(通常2台)でビーチ・フラッグス! ✦ 欲しいのは毎秒じゃない問題。 ✦ "0 0 9-18 ? * MON-FRI"
19.
無限リスト ✦ 無限の大きさを持つリスト。 ✦ 手続き型プログラミングで考えると、この手の リストを処理しようとすると無限ループやメモリ 破綻に繋がる。 ✦
関数型プログラミングで考えると、この手のリ ストは、最終的にfilterかreduceされる。
20.
無限リスト利用例 ✦ [0, 1,
2, 3, 4, 5, …] という無限リスト。 これをサイズN個にフィルタしてからloopすると、 N回ループが自在に作れる。 ✦ ↑の無限リストに階乗関数(!n)をmapすると [1, 1, 2, 6, 24, …] ✦ さらに逆数を返す関数(1/n)をmapして [1/1, 1/1, 1/2, 1/6, 1/24, …] ✦ 全要素の総和を求めると、ネイピア数(e≠2.718)
21.
時の流れという無限リスト ✦ 太古の昔から、永遠の未来までをつなぐリスト ✦ Jimmyは、その要素を1つ1つ取り出して表現 (represent)しているだけです。 ✦
と考えると、Jimmyのメッセージをフィルター して、SQSに突っ込めば良いのではないか。 ✦ という設計思想でJimmyを作ってみました。
22.
ああ、やっと Lambdaが出てきた
25.
こうだったらいいのにな ✦ パラメータをコンストラクタで受け取って汎用化 ✦ 1つのコードパッケージで複数のLambdaを展開
26.
Lambdaに要望 ✦ デプロイパラメータを指定できるようにしてくだ さい。 ✦ できればそのパラメータはcontextから読めると いいです。
27.
小細工チャレンジ (1) ✦ Lambda
Functionにタグがあれば…。 ✦ GetFunctionとか呼び出してタグの情報をパラ メータとして利用できるのではないか? Functionにタグ無かったwww っうぇwwwっうぇww
28.
小細工チャレンジ (2) $ aws
lambda get-function-configuration --function-name jimmy { "FunctionName": "jimmy", "CodeSize": 8283395, "MemorySize": 128, "FunctionArn": "arn:aws:lambda:xx:xx:function:jimmy", "Handler": "JimmyMessageFilterHandler", "Role": "arn:aws:iam::xxxx:role/lambda-poweruser", "Timeout": 60, "LastModified": "2015-08-21T01:52:15.348+0000", "Runtime": "java8", "Description": "0 0 9-18 ? * MON-FRI" } "Description": "0 0 9-18 ? * MON-FRI" アッー!
29.
という不幸な事件を 起こさないためにも なにとぞ。
Download