Slide 1

Slide 1 text

ג Ӭ࿨γεςϜϚωδϝϯτ ∁ڮ݈Ұ LFOUBLBIBTIJ!FTNDPKQ IUUQTIVDSFBNOFU  "84$BTVBM5BMLT "NB[PO 4JNQMF8PSLqPX $BTVBM

Slide 2

Slide 2 text

ࣗݾ঺հ ,FOJDIJ5",")"4)* IUUQTIVDSFBNOFU UXJUUFS!LFODIBO HJUIVCLFODIBO ! (FOUPP 'VOUPP -JOVY 5JMJOH8JOEPX.BOBHFS ,JOFTJT$POUPVSFE,FZCPBSE ! ఏಜ ϦϯΨധ஍  ޫͷઓ࢜ ϰΝφσΟʔϧ

Slide 3

Slide 3 text

ɹIUUQJEPCBUBJP

Slide 4

Slide 4 text

ँࣙ

Slide 5

Slide 5 text

"NB[PO4JNQMF8PSLqPX Λ"844%,GPS3VCZ͔Β ࢖͍ɺ"DUJWJUZ5BTLΛඇಉظ ʹ׬ྃͤ͞Δ࢓૊ΈΛ࡞Δ͜ͱͰ ༷ʑͳ՝୊Λղܾͨ͠࿩Λ͠·͢ɻ ࠓ೔ͷ͓࿩

Slide 6

Slide 6 text

͓ख఻͍͍ͯ͠Δ4BOTBO༷ ͷʮͱ͋ΔγεςϜʯͰ͸ 4JNQMF8PSLqPX͕γε ςϜͷத֩Λ୲͓ͬͯΓɺ໿ ̔ສͷϫʔΫϑϩʔΛຖ೔࣮ ߦ͍ͯ͠·͢ɻ ࠓ೔ͷ͓࿩ͷิ଍

Slide 7

Slide 7 text

ͳͥ4JNQMF8PSLqPX

Slide 8

Slide 8 text

ͳͥ4JNQMF8PSLqPX "NB[PO4JNQMF8PSLqPX ͍ͬͯ͏৽͍͠αʔϏε͕͋ΔΈ ͍ͨͳΜ͚ͩͲʜ

Slide 9

Slide 9 text

w ్தͰਓखΛೖΕ͍ͨ w ༏ઌ౓ʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ͸3VCZ ՝୊

Slide 10

Slide 10 text

w ్தͰਓखΛೖΕ͍ͨ w ༏ઌ౓ʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ͸3VCZ ՝୊

Slide 11

Slide 11 text

IUUQEIBUFOBOFKQDLBUBZBNB

Slide 12

Slide 12 text

'MPX'SBNFXPSL3FDJQFT

Slide 13

Slide 13 text

ʂʂʂ

Slide 14

Slide 14 text

w ్தͰਓखΛೖΕ͍ͨ w ༏ઌ౓ʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ͸3VCZ ՝୊

Slide 15

Slide 15 text

جຊ͸Ұݸྲྀ͠Ͱॱ൪ʹ

Slide 16

Slide 16 text

جຊ͸Ұݸྲྀ͠Ͱॱ൪ʹ ʮ͓ٸ͗ศʯ ʮ·ͱΊͯൃૹʯ Ͳ͏࣮ݱ͠Α͏ʁ

Slide 17

Slide 17 text

4JNQMF8PSLqPXͷػೳ

Slide 18

Slide 18 text

4JNQMF8PSLqPXͷػೳ ΞΫςΟϏςΟͷதͰ ࣗ෼ͨͪͰ ࣮૷͠ͳ͍ͱ͍͚ͳ͍

Slide 19

Slide 19 text

w ్தͰਓखΛೖΕ͍ͨ w ༏ઌ౓ʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ͸3VCZ ՝୊

Slide 20

Slide 20 text

"844JNQMF8PSLqPX "DUJWJUZ5BTLΛӬଓԽͰ ͖ΔΑ͏ʹ͢Δ ղܾҊTUFQ

Slide 21

Slide 21 text

w ଴ͪঢ়ଶͷλεΫΛϝϞϦ ্ʹ࢒͞ͳͯ͘Α͍ w ࣮ࡍʹॲཧ͢Δॱ൪ɺ୯Ґ Λ੍ޚͰ͖Δ ӬଓԽ͕Ͱ͖Δͱʜ

Slide 22

Slide 22 text

"DUJWJUZ5BTL͔Βඞཁͳ৘ ใΛ+40/ܗࣜͰऔΓग़͠ɺ%# ʹอଘ͓ͯ͘͠ɻλεΫΛ׬ྃ ͤ͞Δࡍʹ͸ɺͦͷ৘ใ͔ΒΦ ϒδΣΫτΛ෮ݩ͢Δɻ "DUJWJUZ5BTLΛ%#ʹอଘ

Slide 23

Slide 23 text

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!

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

1SPEVDFS$POTVNFS ύλʔϯΛద༻ͯ͠ɺ࣮ࡍͷ ॲཧॱ൪ͷ੍ޚɺόονॲ ཧΛ࣮૷͢Δɻ ղܾҊTUFQ

Slide 26

Slide 26 text

http://www.hyuki.com/dp/dpinfo.html#ProducerConsumer

Slide 27

Slide 27 text

"8448"DUJWJUZ5BTL $PMMFDUJPOQPMM·ͨ͸ QPMM@TJOHMF@UBTLΛ࢖͍ɺ 48'͔ΒλεΫΛऔಘͯ͠%# ʹอଘ͢Δ͚ͩɻ 1SPEVDFS

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

λεΫΛ೚ҙͷॱ൪ɺ·ͱ· ΓͰॲཧΛߦ͍ɺ"84 48"DUJWJUZ5BTLDPN QMFUFΛݺͼग़͠ɺλεΫΛ ࣍΁ਐΊΔɻ $POTVNFS

Slide 30

Slide 30 text

TBNQMF@DPOTVNFSSC

Slide 31

Slide 31 text

"DUJWJUZ5BTLΛӬଓԽ͢Δ ͜ͱͰɺ48'ͱͷΠϯλ ϑΣʔεʹ1SPEVDFS $POTVNFSύλʔϯΛద༻ ͠ɺࠓճͷ՝୊͸ղܾͰ͖· ͨ͠ɻ ·ͱΊ

Slide 32

Slide 32 text

w ్தͰਓखΛೖΕ͍ͨ w ༏ઌ౓ʹΑͬͯॲཧ͢Δॱ ൪Λ੍ޚ͍ͨ͠ w ్தͰ·ͱΊͯόονॲཧ ͍ͨ͠ w ݴޠ͸3VCZ ՝୊

Slide 33

Slide 33 text

ϫʔΫϑϩʔͷ్தͰਓखΛೖΕΔ ͚ͩͰ͋Ε͹'MPX'SBNFXPSL Λ࢖͏͜ͱͰ؆୯ʹ࣮ݱͰ͖·͕͢ɺ ్தͰόονॲཧΛڬΉ৔߹΍ɺॲ ཧ͢Δॱ൪ΛೖΕସ͍͑ͨͱ͍͏༻ ͕݅͋Δ৔߹͸ࣗલͰ࣮૷͢Δඞཁ ͕͋Γ·͢ɻ ·ͱΊ

Slide 34

Slide 34 text

&OKPZ$PEJOH