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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  8. There is no silver bullets!

    View full-size slide

  9. Grow your app

    View full-size slide

  10. Grow your app

    View full-size slide

  11. Grow your app
    Grow your team!!

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  15. But, How did it?

    View full-size slide

  16. Microservice
    Disposability

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  20. Disposability
    = ࣺͯ΍͢͞

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  23. Golang, ABTesting
    Opsworks, Docker

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  36. There is no silver bullets!

    View full-size slide

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

    View full-size slide

  38. ࣭໰౳͸ @y_matsuwitter ·Ͱ

    View full-size slide