Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gunosyの施策を支える技術

 Gunosyの施策を支える技術

dots summit 2015にて。

y_matsuwitter

February 07, 2015
Tweet

More Decks by y_matsuwitter

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. There is no silver bullets!

    View Slide

  9. Grow your app

    View Slide

  10. Grow your app

    View Slide

  11. Grow your app
    Grow your team!!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. But, How did it?

    View Slide

  16. Microservice
    Disposability

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. Disposability
    = ࣺͯ΍͢͞

    View Slide

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

    View Slide

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

    View Slide

  23. But...
    How?

    View Slide

  24. Golang, ABTesting
    Opsworks, Docker

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  35. Docker
    Ұྫ: ෼ࢄόονॲཧ

    View Slide

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

    View Slide

  37. There is no silver bullets!

    View Slide

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

    View Slide

  39. ࣭໰౳͸ @y_matsuwitter ·Ͱ

    View Slide