Slide 1

Slide 1 text

GunosyͷࢪࡦΛ ࢧ͑Δٕज़ @y_matsuwitter

Slide 2

Slide 2 text

About @y_matsuwitter » ։ൃຊ෦ࣥߦ໾һ » iOS, Android, Infrastructure, Web » Golang!! Docker!! » ਖ਼࠲

Slide 3

Slide 3 text

Gunosyͱ͸ » χϡʔεΩϡϨʔγϣϯΞϓϦ » ݱࡏ800ສDL » ػցֶश + ΞϓϦ։ൃ + ޿ࠂ഑৴ » ΤϯδχΞνʔϜ 25໊

Slide 4

Slide 4 text

Gunosy։ൃͷ໘ന͞ » ߴ଎APIαʔό ʢPeak࣌ϨΠςΠϯγ 30msʣ » ߴੑೳADαʔό » Ұ೔਺ઍສ݅Λࢧ͑ΔPush഑৴ج൫ » ৽ٕज़Λͻͨ͢ΒProduction΁ » ...etc

Slide 5

Slide 5 text

ࠓ೔ͷ࿩ » GunosyͰͷࡉ͔͍ϦϦʔεΛࢧ͍͑ͯΔऔΓ૊Έʹ͍ͭͯ » େ·͔ͳ࿩͕ଟ͍ͷͰɺࡉ͔͍෦෼͸ޙͰ࣭͝໰Լ͍͞

Slide 6

Slide 6 text

We have... Too many problems Too too many ideas

Slide 7

Slide 7 text

Try, try, try... with limited time and resources.

Slide 8

Slide 8 text

There is no silver bullets!

Slide 9

Slide 9 text

Grow your app

Slide 10

Slide 10 text

Grow your app

Slide 11

Slide 11 text

Grow your app Grow your team!!

Slide 12

Slide 12 text

Team = Your service » ֤ࣗͷ௅ઓ͕ٕज़ྗͷ੒௕ » ٕज़ྗͷ੒௕͕νʔϜͷ੒௕΁ » νʔϜͷ੒௕͕ΞϓϦͷ௕ظతͳ੒௕΁

Slide 13

Slide 13 text

Gunosy's rule » ৽ٕज़ͷੵۃ࠾༻ » ਺ࣈ͸ਆΑΓਖ਼͍͠ » 㙽ʹ΋֯ʹ΋ࢪࡦɾϦϦʔε

Slide 14

Slide 14 text

૊৫ͷ֦େ͕ݸਓͷ ௅ઓΛ๦͛ͳ͍࢓૊ Έͮ͘Γ

Slide 15

Slide 15 text

But, How did it?

Slide 16

Slide 16 text

Microservice Disposability

Slide 17

Slide 17 text

Microservices = খ͞ͳαʔϏεͷ૊Έ߹ Θͤ

Slide 18

Slide 18 text

What is microservices? » ద੾ͳن໛ͷϏδωεϩδοΫͷմ͝ͱʹ಺෦αʔϏεΛ෼ׂ » ΞϓϦέʔγϣϯଆ͔Β֤छAPIΛݺͼग़͢ » αʔϏεʹ߹Θٕͤͨज़બఆ

Slide 19

Slide 19 text

Why microservices? » Ϗδωεʹ߹ΘͤͨνʔϜͷ෼ׂɾฤ੒ » খ͞ͳαʔϏεʹΑΔଐਓੑͷرബԽ » Ϗδωεཁٻʹର͢ΔॊೈͳରԠ ϞϊϦγοΫͳγεςϜͰ͸ɺϏδωε͕੒௕͢Δʹै͍վमίετ͕૿ Ճ͍ͯ͘͠

Slide 20

Slide 20 text

Disposability = ࣺͯ΍͢͞

Slide 21

Slide 21 text

What is disposability? » γεςϜؒͷ݁߹౓Λখ͘͞อͪɺഇغΛ༰қʹ͢Δ » ϦϑΝΫλϦϯάͰ͸ͳ͘γεςϜͷஔ͖׵͑ʹΑΔରॲ » ֤αʔϏε΁ͷґଘ౓ͷ௿͍ΞϓϦέʔγϣϯ

Slide 22

Slide 22 text

Why disposability? » ͦͷ࣌ͷ৽ٕज़ͷ࠾༻ʹΑΔஔ׵͑Λ༰қʹ͢Δ » ෛ࠴ͱͳͬͨ࣌ʹʮࣺͯΔʯͱ͍͏൑அΛऔΕΔ༨஍ » খ͞ͳνʔϜͰଟ͘ͷ࣮ݧ ݁Ռͱͯ͠ଟ͘ͷࢼߦɾ৽ٕज़ͷTry͕ੜ·ΕΔ

Slide 23

Slide 23 text

But... How?

Slide 24

Slide 24 text

Golang, ABTesting Opsworks, Docker

Slide 25

Slide 25 text

Golang » ΞϓϦέʔγϣϯͷ഑ஔ͕༰қ » ฒྻॲཧͷهड़͕༰қ » APIͷຆͲ͕Golang੡ » ࠃ಺࠷େͷGolang։ൃνʔϜʢࣗশʣ

Slide 26

Slide 26 text

Golang ӡ༻ϧʔϧ » ֤αʔϏεͰ࢖ΘΕΔڞ௨Ϟδϡʔ ϧΛࣾ಺ύοέʔδͱͯ͠ఏڙ » ΤϯυϙΠϯτ΍ύεϕʔεͰසൟ ʹReplace

Slide 27

Slide 27 text

Golang ։ൃ࣌ͷߏ੒ » WebϑϨʔϜϫʔΫ: guregu/kami » ͦͷଞ΄΅಺੡ύοέʔδͷΈͰӡ༻ » CircleCIʹΑΔCI

Slide 28

Slide 28 text

ABTesting » ଟ͘ͷࢪࡦΛABςετʹͯޮՌܭଌ » σβΠφͱͯ͠ͷ௅ઓΛࡉ͔͘൓ө͢Δ࢓૊Έ

Slide 29

Slide 29 text

ABTesting ࣮ࡍͷӡ༻ » APIΑΓͲͷUIΛग़੍͔͢ޚʢը໘ભҠɾϨΠΞ΢τͳͲʣ » RedshiftɾBigQueryͰ੒Ռूܭ » KPI౳͸શͯμογϡϘʔυʹΑΓ֬ೝ

Slide 30

Slide 30 text

ABTesting ࡞͍ͬͯΔ΋ͷ » ஈ૊΍৭ͳͲશͯͷଐੑΛϦϞʔτ੍ޚՄೳͳςΩετඳըΤϯδϯ

Slide 31

Slide 31 text

ABTesting ࡞͍ͬͯΔ΋ͷ » JSONϕʔεͷHTML likeͳಠࣗఆ ٛϏϡʔ

Slide 32

Slide 32 text

Opsworks » ͩΕͰ΋ඞཁͳΠϯϑϥΛGUIͷΈͰߏங » ॊೈͳεέʔϦϯάରԠ

Slide 33

Slide 33 text

Opsworks ϥʔϝϯτοϐϯάΠϯϑϥ » ը໘Λϙνϙν͍͚ͯͩ͘͠ͰඞཁͳΫϥελ͕࡞੒Մೳ

Slide 34

Slide 34 text

Docker » ϓϩηε࣮ߦ؀ڥΛ࣮ࡍͷαʔό͔Β෼཭ » શͯͷγεςϜʹϙʔλϏϦςΟ

Slide 35

Slide 35 text

Docker Ұྫ: ෼ࢄόονॲཧ

Slide 36

Slide 36 text

·ͱΊ » MicroservicesͱDisposability » ௅ઓΛ๦͛ͳ͍։ൃମ੍Λ࡞Γଓ͚Δ » ΞϓϦͷ੒௕͸ͦ͜ʹ͍ͭͯ͘Δʂ

Slide 37

Slide 37 text

There is no silver bullets!

Slide 38

Slide 38 text

We're hiring!! ੒௕͢Δ؀ڥͰ࠷ߴͷ։ൃΛ

Slide 39

Slide 39 text

࣭໰౳͸ @y_matsuwitter ·Ͱ