Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Amazon Simple Workflow Casual
Search
Kenichi Takahashi
November 01, 2013
Programming
780
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Amazon Simple Workflow Casual
AWS Casual Talks #1 LT
Kenichi Takahashi
November 01, 2013
More Decks by Kenichi Takahashi
See All by Kenichi Takahashi
実践、マルチクラウド環境でのコスト管理の現状と未来
kenchan
0
200
エンジニアリング 💰Moneyジャー / Engineering Money-ger
kenchan
3
1k
Lv1,2の開発生産性を経営と繋ぐ
kenchan
4
2.1k
「トップ10プランナー」からはじめる目標設定
kenchan
5
4.5k
負債と言わないことが負債と向き合うこと
kenchan
5
4.7k
可用性No.1へ!「カラーミーショップ」のリ・アーキテクティング
kenchan
0
190
カラーミーショップは私たちが作っています
kenchan
0
1.8k
カラーミーショップ 2022 / COLORME SHOP 2022
kenchan
0
750
Amazon RDS移行のための 性能検証でわかった2つのこと
kenchan
3
4.3k
Other Decks in Programming
See All in Programming
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
250
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
170
Creating Composable Callables in Contemporary C++
rollbear
0
210
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
300
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
190
Contextとはなにか
chiroruxx
1
400
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
130
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
260
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
880
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Product Roadmaps are Hard
iamctodd
55
12k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
350
What's in a price? How to price your products and services
michaelherold
247
13k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
30 Presentation Tips
portentint
PRO
1
350
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Navigating Weather and Climate Data
rabernat
0
340
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Everyday Curiosity
cassininazir
0
250
Transcript
ג ӬγεςϜϚωδϝϯτ ∁ڮ݈Ұ LFOUBLBIBTIJ!FTNDPKQ IUUQTIVDSFBNOFU "84$BTVBM5BMLT "NB[PO 4JNQMF8PSLqPX $BTVBM
ࣗݾհ ,FOJDIJ5",")"4)* IUUQTIVDSFBNOFU UXJUUFS!LFODIBO HJUIVCLFODIBO ! (FOUPP 'VOUPP -JOVY 5JMJOH8JOEPX.BOBHFS
,JOFTJT$POUPVSFE,FZCPBSE ! ఏಜ ϦϯΨധ ޫͷઓ࢜ ϰΝφσΟʔϧ
ɹIUUQJEPCBUBJP
ँࣙ
"NB[PO4JNQMF8PSLqPX Λ"844%,GPS3VCZ͔Β ͍ɺ"DUJWJUZ5BTLΛඇಉظ ʹྃͤ͞ΔΈΛ࡞Δ͜ͱͰ ༷ʑͳ՝Λղܾͨ͠Λ͠·͢ɻ ࠓͷ͓
͓ख͍͍ͯ͠Δ4BOTBO༷ ͷʮͱ͋ΔγεςϜʯͰ 4JNQMF8PSLqPX͕γε ςϜͷத֩Λ୲͓ͬͯΓɺ ̔ສͷϫʔΫϑϩʔΛຖ࣮ ߦ͍ͯ͠·͢ɻ ࠓͷ͓ͷิ
ͳͥ4JNQMF8PSLqPX
ͳͥ4JNQMF8PSLqPX "NB[PO4JNQMF8PSLqPX ͍ͬͯ͏৽͍͠αʔϏε͕͋ΔΈ ͍ͨͳΜ͚ͩͲʜ
w ్தͰਓखΛೖΕ͍ͨ w ༏ઌʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ3VCZ
՝
w ్தͰਓखΛೖΕ͍ͨ w ༏ઌʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ3VCZ
՝
IUUQEIBUFOBOFKQDLBUBZBNB
'MPX'SBNFXPSL3FDJQFT
ʂʂʂ
w ్தͰਓखΛೖΕ͍ͨ w ༏ઌʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ3VCZ
՝
جຊҰݸྲྀ͠Ͱॱ൪ʹ
جຊҰݸྲྀ͠Ͱॱ൪ʹ ʮ͓ٸ͗ศʯ ʮ·ͱΊͯൃૹʯ Ͳ͏࣮ݱ͠Α͏ʁ
4JNQMF8PSLqPXͷػೳ
4JNQMF8PSLqPXͷػೳ ΞΫςΟϏςΟͷதͰ ࣗͨͪͰ ࣮͠ͳ͍ͱ͍͚ͳ͍
w ్தͰਓखΛೖΕ͍ͨ w ༏ઌʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ3VCZ
՝
"844JNQMF8PSLqPX "DUJWJUZ5BTLΛӬଓԽͰ ͖ΔΑ͏ʹ͢Δ ղܾҊTUFQ
w ͪঢ়ଶͷλεΫΛϝϞϦ ্ʹ͞ͳͯ͘Α͍ w ࣮ࡍʹॲཧ͢Δॱ൪ɺ୯Ґ Λ੍ޚͰ͖Δ ӬଓԽ͕Ͱ͖Δͱʜ
"DUJWJUZ5BTL͔Βඞཁͳ ใΛ+40/ܗࣜͰऔΓग़͠ɺ%# ʹอଘ͓ͯ͘͠ɻλεΫΛྃ ͤ͞Δࡍʹɺͦͷใ͔ΒΦ ϒδΣΫτΛ෮ݩ͢Δɻ "DUJWJUZ5BTLΛ%#ʹอଘ
NZ@BDUJWJUZ@UBTLSC class MyActivityTask < SimpleDelegator! def initialize(original_activity_task)! super original_activity_task! end!
...! def to_json! to_hash.to_json! end! ! def to_hash! {! 'taskToken' => task_token,! 'activityId' => activity_id,! 'startedEventId' => started_event_id,! ! 'activityType' => {! 'name' => activity_type.name,! 'version' => activity_type.version,! },! ! 'workflowExecution' => {! 'workflowId' => workflow_execution.workflow_id,! 'runId' => workflow_execution.run_id,! }! ! ‘task_info' => {! # set custom task_info! }! }! end!
NZ@BDUJWJUZ@UBTLSC class MyActivityTask < SimpleDelegator! ...! def self.create_from_attributes(domain, attributes)! aws_attributes
= attributes.except('task_info')! swf_activity_task = AWS::SimpleWorkflow::ActivityTask.new(! domain,! aws_attributes,! {}! )! ! task = self.new(swf_activity_task)! ! if task_info = attributes['task_info']! # set custom task_info! end! ! task! end! end
1SPEVDFS$POTVNFS ύλʔϯΛద༻ͯ͠ɺ࣮ࡍͷ ॲཧॱ൪ͷ੍ޚɺόονॲ ཧΛ࣮͢Δɻ ղܾҊTUFQ
http://www.hyuki.com/dp/dpinfo.html#ProducerConsumer
"8448"DUJWJUZ5BTL $PMMFDUJPOQPMM·ͨ QPMM@TJOHMF@UBTLΛ͍ɺ 48'͔ΒλεΫΛऔಘͯ͠%# ʹอଘ͢Δ͚ͩɻ 1SPEVDFS
BDUJWJUZ@UBTL@QSPEVDFS@CBTFSC class ActivityTaskProducerBase! ...! def process_next_task!! activity_task = activity_task_list.poll_for_single_task! !
process!(MyActivityTask.new(activity_task))! end! ! def process!(my_activity_task)! MyTaskMode.create(! task_info: my_activity_task.to_json,! # other attributes! )! end! end
λεΫΛҙͷॱ൪ɺ·ͱ· ΓͰॲཧΛߦ͍ɺ"84 48"DUJWJUZ5BTLDPN QMFUFΛݺͼग़͠ɺλεΫΛ ࣍ਐΊΔɻ $POTVNFS
TBNQMF@DPOTVNFSSC
"DUJWJUZ5BTLΛӬଓԽ͢Δ ͜ͱͰɺ48'ͱͷΠϯλ ϑΣʔεʹ1SPEVDFS $POTVNFSύλʔϯΛద༻ ͠ɺࠓճͷ՝ղܾͰ͖· ͨ͠ɻ ·ͱΊ
w ్தͰਓखΛೖΕ͍ͨ w ༏ઌʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ3VCZ
՝
ϫʔΫϑϩʔͷ్தͰਓखΛೖΕΔ ͚ͩͰ͋Ε'MPX'SBNFXPSL Λ͏͜ͱͰ؆୯ʹ࣮ݱͰ͖·͕͢ɺ ్தͰόονॲཧΛڬΉ߹ɺॲ ཧ͢Δॱ൪ΛೖΕସ͍͑ͨͱ͍͏༻ ͕݅͋Δ߹ࣗલͰ࣮͢Δඞཁ ͕͋Γ·͢ɻ ·ͱΊ
&OKPZ$PEJOH