Slide 1

Slide 1 text

͋ͳͨͬͯͲΜͳํ(ܕ)ʁ 2018/05/25 kamakura.go#4

Slide 2

Slide 2 text

ࣗݾ঺հ • ໼ਧྒྷհ a.k.a ˏKonboi • ໘ന๏ਓΧϠοΫ • SGࣄۀ෦ • αʔόʔαΠυΤϯδχΞ/
 ΤϯδχΞϦϯάϚωʔδϟʔ • Go/Perl/AWS

Slide 3

Slide 3 text

ࠓ೔ͷ͓࿩

Slide 4

Slide 4 text

͋ͳͨͬͯͲΜͳํ(ܕ)ʁ

Slide 5

Slide 5 text

GoͷϓϩδΣΫτͰδϣϒΩϡʔΛ
 Amazon SQSΛ࢖࣮ͬͯݱͨ͠࿩

Slide 6

Slide 6 text

GoͷϓϩδΣΫτͰδϣϒΩϡʔΛ
 Amazon SQSΛ࢖࣮ͬͯݱͨ͠࿩

Slide 7

Slide 7 text

δϣϒΩϡʔ • a.k.a ϝοηʔδΩϡʔ/λεΫΩϡʔ • Perl • Gearman • Q4M • Rails • ActiveJob • Sidekiq • Shoryuken

Slide 8

Slide 8 text

δϣϒΩϡʔ • ඇಉظʹॲཧΛߦ͍͍ͨ • ϩδοΫͷॲཧΛ෼͚͍ͨ • ex) • Ϣʔβʔొ࿥ޙϝʔϧΛૹΔ • ΫΤετΫϦΞ࣌ͷΫΤετΫϦΞνϟϨϯδͷୡ੒ • ϑϨϯυΛΫΤετʹ࿈Εͯߦͬͨ࣌ʹ
 ϑϨϯυ΁ϙΠϯτ෇༩

Slide 9

Slide 9 text

GoͷϓϩδΣΫτͰδϣϒΩϡʔΛ
 Amazon SQSΛ࢖࣮ͬͯݱͨ͠࿩

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Amazon SQS • Simple Queue Service ͷུ • ϚωʔδυͷΩϡʔΠϯάαʔϏε • ඪ४ΩϡʔͱFIFO(First In First Out)Ωϡʔͷ2ͭ • ͨͩ͠ɺFIFO͸౦ژϦʔδϣϯະରԠ

Slide 12

Slide 12 text

Amazon SQS • String,Number,BinaryͷσʔλΛ
 ϝοηʔδຊจʹ֨ೲՄೳ • Attributeͱݺ͹ΕΔϑΟʔϧυʹ
 ຊจͱ͸ผʹ৘ใ͕֨ೲՄೳ • Ұఆ࣌ؒܦͭͱ
 ࠶౓ϝοηʔδ͕औಘͰ͖Δ • ϝοηʔδ͸ࣗ਎Ͱ࡟আ͢Δඞཁ͕༗Δ

Slide 13

Slide 13 text

ͦ΋ͦ΋ͳΜͰ
 Amazon SQSΛ࢖͏ͷ͔ʁ

Slide 14

Slide 14 text

Amazon SQSΛ࢖͏ཧ༝ • ϑϧϚωʔδυ • ؅ཧίετμ΢ϯ • ଞͷϓϩδΣΫτͰ࠾༻ࡁΈ • ͨͩ͠ • SQSಠࣗͷΫηΛߟྀ͢Δඞཁ͕͋Δ • ࠓճ͸͜ͷ෦෼͸࿩͞ͳ͍ͷͰڵຯ͋Δਓ͸
 ࠙਌ձͰ

Slide 15

Slide 15 text

GoͷϓϩδΣΫτͰδϣϒΩϡʔΛ
 Amazon SQSΛ࢖࣮ͬͯݱͨ͠࿩

Slide 16

Slide 16 text

GoͷϓϩδΣΫτ • ొ৔ਓ෺ • Job • ඇಉظʹ࣮ߦ͍ͨ͠ॲཧ • Queue • JobΛग़͠ೖΕ͢Δ౔؅ͷΠϝʔδ • JobQueue • JobΛQueue͔ΒऔΓग़࣮ͯ͠ߦ͢Δ

Slide 17

Slide 17 text

GoͷϓϩδΣΫτ • ίʔυͩͱ͜Μͳײ͡

Slide 18

Slide 18 text

GoͷϓϩδΣΫτ +PC2VFVF 2VFVF +PC

Slide 19

Slide 19 text

GoͷϓϩδΣΫτ +PC2VFVF 2VFVF +PC

Slide 20

Slide 20 text

GoͷϓϩδΣΫτ +PC2VFVF 2VFVF +PC

Slide 21

Slide 21 text

GoͷϓϩδΣΫτ +PC2VFVF 2VFVF +PC 3VO

Slide 22

Slide 22 text

ͨͱ͑͹Queue͕
 channelͷ৔߹

Slide 23

Slide 23 text

Queue͕channelͷ৔߹ • channelΛ༻͍ͨQueueͷίʔυ

Slide 24

Slide 24 text

Queue͕channelͷ৔߹ • ਤ +PC2VFVF 2VFVF +PC DIBOOFM

Slide 25

Slide 25 text

Queue͕channelͷ৔߹ • ਤ +PC2VFVF 2VFVF +PC DIBOOFM

Slide 26

Slide 26 text

Queue͕channelͷ৔߹ • ਤ +PC2VFVF 2VFVF +PC DIBOOFM

Slide 27

Slide 27 text

Queue͕channelͷ৔߹ • ਤ +PC2VFVF 2VFVF DIBOOFM +PC 3VO

Slide 28

Slide 28 text

ͨͱ͑͹Queue͕
 Amazon SQSͷ৔߹

Slide 29

Slide 29 text

ͨͱ͑͹Queue͕Amazon SQSͷ৔߹ • amazon sqsΛ༻͍ͨQueueͷίʔυ

Slide 30

Slide 30 text

• ਤ ͨͱ͑͹Queue͕Amazon SQSͷ৔߹ 2VFVF +PC

Slide 31

Slide 31 text

• ਤ ͨͱ͑͹Queue͕Amazon SQSͷ৔߹ +PC 2VFVF

Slide 32

Slide 32 text

• ਤ ͨͱ͑͹Queue͕Amazon SQSͷ৔߹ 424.FTTBHFͷ#PEZʹ
 +PCͷ৘ใΛ+40/ʹͯ͠ૹΔ 2VFVF

Slide 33

Slide 33 text

• ਤ ͨͱ͑͹Queue͕Amazon SQSͷ৔߹ 424.FTTBHFͷ#PEZͷ
 +40/Λ+PCʹ6ONBSTIBM 2VFVF

Slide 34

Slide 34 text

• ਤ ͨͱ͑͹Queue͕Amazon SQSͷ৔߹ +PC 2VFVF

Slide 35

Slide 35 text

• ਤ ͨͱ͑͹Queue͕Amazon SQSͷ৔߹ +PC 3VO 2VFVF

Slide 36

Slide 36 text

͋Ε...

Slide 37

Slide 37 text

ͪΐͬͱ଴ͯΑ…✋

Slide 38

Slide 38 text

ຊ୊
 (΍ͬͱ)
 
 ~͋ͳͨͬͯͲΜͳํ(ܕ)ʁ~ ࢒Γ෼͙Β͍ཉ͍͠

Slide 39

Slide 39 text

લஔ͖͕௕͍ͯ͘͢·ͤΜ

Slide 40

Slide 40 text

ຊ୊
 (΍ͬͱ)
 
 ~͋ͳͨͬͯͲΜͳํ(ܕ)ʁ~ ࢒Γ෼͙Β͍ཉ͍͠ Amazon SQSͷϝοηʔδ͔ΒJobʹม׵͢Δ

Slide 41

Slide 41 text

Amazon SQSͷϝοηʔδ͔ΒJobʹม׵͢Δ • Job͕1छྨͩͬͨΒ໰୊ͳ͍ • ͔࣮͠͠ࡍ͸ • ΫΤετΫϦΞϛογϣϯͷδϣϒ • QuestClearJob • ϑϨϯυʹϙΠϯτΛ෇༩͢Δδϣϒ • SendFriendPointJob • Unmarshalઌͷܕ͕ҟͳΔ

Slide 42

Slide 42 text

SQS͔ΒऔΓग़ͨ͠ϝοηʔδΛ
 ద੾ʹUnmarshal͢Δඞཁ͕͋Δ

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

औΓग़ͨ͠λΠϛϯάͰ
 ͋ͳͨ͸ͲΜͳํ(ܕ)͔஌͍ͬͯͯ
 structΛ࡞Δඞཁ͕͋Δ

Slide 45

Slide 45 text

Ͳ͏΍ͬͯղܾ͔ͨ͠

Slide 46

Slide 46 text

reflect

Slide 47

Slide 47 text

reflect • reflect.New(reflect.Type) • reflect.Value͕ฦͬͯ͘Δ • reflect.Value.Interface() • Interface{}͕ฦͬͯ͘Δ • ͜ΕͰstructΛੜ੒(?)͢Δࣄ͕Ͱ͖Δ

Slide 48

Slide 48 text

reflect

Slide 49

Slide 49 text

reflect

Slide 50

Slide 50 text

͜ΕΛઌఔͷSQS Queueʹ
 ൓ө͢Δͱ

Slide 51

Slide 51 text

SQS Queueʹ൓ө͢Δ

Slide 52

Slide 52 text

SQS Queueʹ൓ө͢Δ

Slide 53

Slide 53 text

SQS Queueʹ൓ө͢Δ

Slide 54

Slide 54 text

ิ଍ • ͳΜͰJobຖʹQueueΛ༻ҙ͠ͳ͔ͬͨͷʁ • طʹJobͷ਺͕10਺ݸ͋Γ
 ࠓޙ΋૿͑Δ༧ఆ • ৽نͰJobΛ࡞Δ౓ʹ։ൃ؀ڥ/ຊ൪ͱ QueueΛ࡞Δͷ͸ΦϖϨʔγϣϯ͕൥ࡶ

Slide 55

Slide 55 text

ิ଍

Slide 56

Slide 56 text

ิ଍ • Queueଆ͕ԿͷJob͕ग़ೖΓ͢Δ
 ͔͸஌Δඞཁ͕ͳ͘ɺ
 ґଘ͠ͳ͍ํ͕Α͍ͱ͍͏݁࿦ʹ

Slide 57

Slide 57 text

·ͱΊ • GoͷϓϩδΣΫτͰδϣϒΩϡʔΛ
 Amazon SQSΛ࢖࣮ͬͯݱͨ͠࿩ • reflect.New/reflect.Value/r.V.Interface() 
 ͔ΒಈతʹܕΛੜ੒ͯ͠ղܾ

Slide 58

Slide 58 text

Ҏ্
 ͋ͳͨͬͯͲΜͳํ?(ܕ)

Slide 59

Slide 59 text

Q&A

Slide 60

Slide 60 text

ࢀߟURL • https://aws.amazon.com/jp/sqs/ • http://awsdocs.s3.amazonaws.com/SQS/ latest/sqs-gsg.pdf • https://golang.org/pkg/reflect/ • ΈΜͳͷGoݴޠ