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

esaを支える技術と気持ち

fukayatsu
March 25, 2018

 esaを支える技術と気持ち

Rails Developers Meetup 2018: Day 2
https://techplay.jp/event/655769

> この発表ではesa の開発や運用・ユーザーサポート等について、技術的/心理的な側面から、様々なリソースが制限されている中でどのように自分達なりに工夫してきたかを共有できれば幸いです。

fukayatsu

March 25, 2018
Tweet

More Decks by fukayatsu

Other Decks in Technology

Transcript

  1. esaΛࢧ͑Δ
    ٕज़ͱؾ࣋ͪ
    Rails DM 2018 day-2
    esa LLC ਂ୩ಞੜ (@fukayatsu)

    View Slide

  2. contents
    • ࣗݾ঺հɾձࣾ঺հɾϓϩμΫτ঺հ
    • before esa
    • esaʹࢸΔ·Ͱͷٕज़ͱؾ࣋ͪ
    • after esa
    • esaʹ௥Ճ͞Ε͍ٕͯͬͨज़ͱؾ࣋ͪ(೥౓ผ)
    • ·ͱΊ
    2

    View Slide

  3. 3
    • ߹ಉձࣾ esa
    • ߹ܭ3໊
    • ΤϯδχΞ2໊
    • σβΠφʔ1໊
    • શһ͕ίʔυΛॻ͘
    • શһ͕ձࣾ୅ද
    • ૑ۀ4೥໨

    View Slide

  4. esa LLC͕΍͍ͬͯΔ͜ͱ
    • esa.ioͷ։ൃɾӡӦ
    • pplog.netͷ։ൃɾӡӦ
    • ଞͷձࣾͷ։ൃ΍σβΠϯͷ͓ख఻͍
    4

    View Slide

  5. esa LLC͕΍Βͳ͍͜ͱ
    • αʔϏε΍ձࣾͷٸܹͳ੒௕͸໨ࢦ͞ͳ͍
    • ౤ࢿ͸ड͚ͳ͍
    • (ۜߦ౳͔Βগֹͷ༥ࢿ͸ड͚ͨ͜ͱ͕͋Δ)
    • Web ޿ࠂ͸ग़ͣ͞ɺޱίϛ͕ϝΠϯ
    5

    View Slide

  6. esa.ioͱ͸?
    6

    View Slide

  7. 7

    View Slide

  8. 8
    • ݱࡏɺ໿2,200νʔϜ͕ར༻த
    • ITاۀΛத৺ͱͨ͠ձࣾɾஂମɾݸਓʢن໛: 1ਓʙ300ਓఔ౓ʣ
    • ΤϯδχΞɾσβΠφʔΛத৺ʹɺاըɾӦۀ৬ɾࣄ຿ܥͷํ΋ར༻
    • ݸਓ΍͝Ոఉɺେֶͷݚڀࣨɺझຯͷஂମ΋ଟ਺
    User
    About esa.io
    • MarkdownͰॻ͚ΔɺνʔϜͷͨΊͷ৘ใڞ༗πʔϧ
    • ೔ใɾٞࣄ࿥ɾϝϞɾΞΠσΞɾ࢓༷ॻɾاըॻ౳ɺνʔϜͰͷυ
    Ωϡϝϯτڞ༗Ͱར༻

    View Slide

  9. 9
    • ݱࡏɺ2,000νʔϜҎ্͕༗ྉར༻
    • ITاۀΛத৺ͱͨ͠ձࣾɾஂମɾݸਓʢن໛: 1ਓʙ300ਓఔ౓ʣ
    • ΤϯδχΞɾσβΠφʔΛத৺ʹɺاըɾӦۀ৬ɾࣄ຿ܥͷํ΋ར༻
    • ݸਓ΍͝Ոఉɺझຯͷஂମ΋ଟ਺
    User
    Concept: ৘ใΛɺҭ͍ͯͨɻ
    • υΩϡϝϯτ͸࠷ॳ͔Β׬ᘳͰ͸ͳ͘ɺ࣌ؒΛ͔͚ͯΑ͍΋ͷʹҭ͍ͬͯ͘
    • ݸਓ͕ΏΔ͍ΞΠσΞΛग़͠΍͘͢ɺΈΜͳͰܧଓతʹվળ͠΍͍͢࢓૊Έ
    • ্͔Βͷԡ͠෇͚Ͱ͸ͳ͘ϘτϜΞοϓͰࣗൃతʹ৘ใൃ৴͢ΔΑ͏ʹͳΔ
    ͜ͱ͕ɺΑΓ͍͖͍͖ͱͨࣗ͠཯తͳνʔϜͮ͘Γʹͭͳ͕Δ

    View Slide

  10. before esa
    10

    View Slide

  11. େֶ࣌୅ͷݪମݧ
    • ޻ֶ෦ػցܥ͕ͩͬͨɺ੒੷͕ͦΜͳʹྑ͘ͳ͔ͬ
    ͨͷͰر๬ͷݚڀࣨʹೖΕͳ͔ͬͨ
    • ͨ·ͨ·ೖͬͨݚڀࣨ͸์ࣹઢͷݚڀΛ͍ͯ͠Δ
    ͱ͜Ζͩͬͨ
    • ݚڀʹ͋·Γڵຯ͕෸͔ͣɺݚڀࣨʹߦͬͯ΋
    ݚڀʹؔ܎ͳ͍޻࡞΍ϓϩάϥϛϯάΛ͍ͯ͠
    ͨ (ڭत͸ීஈผ౩ͳͷͰ)
    11

    View Slide

  12. େֶ࣌୅ͷݪମݧ
    • ಺ྠ޲͚ͷ(ͩ͘Βͳ͍)WindowsΞϓϦΛ
    ࡞ͬͯຖ೔ࣗ෼ͨͪͰ࢖͍ͳ͕Βվળ͍ͯͬ͠
    ͨ
    • ͱͯ΋ָ͔ͬͨ͠ɻ
    12

    View Slide

  13. ৽ଔब׆࣌ͷPRεϥΠυΑΓൈਮ

    View Slide

  14. ৽ଔब׆࣌ͷPRεϥΠυΑΓൈਮ

    View Slide

  15. ࣾձਓʹͳ͔ͬͯΒ
    • ब৬͔ͯ͠Β΋৭ʑڵຯ͕͋Δ΋ͷΛยͬ୺͔Β࡞ͬͯ
    ΈͨΓͨ͠
    • ࡞͍ͬͯ͘͏ͪʹपลͷٕज़Λࣗવʹֶश͍ͯͬͨ͠
    • ͦͷ࣌࢓ࣄͰ΍͍ͬͯΔ͜ͱͷपล෼໺͕झຯͷ։ൃʹ
    ͭͳ͕Γɺझຯͷ։ൃͷ੒Ռ͕࢓ࣄʹ΋ϑΟʔυόοΫ
    ͞ΕΔ
    • => Α͍॥؀
    15

    View Slide

  16. ͦͷࠒझຯͰ࡞ͬͯͨ΋ͷ
    • Ոి(iRemocon/IRKit)΍Roombaͷૢ࡞ؔ࿈
    • Ruby gems
    • Chrome Extension / Chrome Apps
    • LTTM, markdown-linker, …
    • AndroidΞϓϦ
    16

    View Slide

  17. pplogͱͷؔΘΓ
    • ࡞ͬͯΈͨ͏ͪͷҰ͕ͭpplogͷඇެࣜAndroid
    ΫϥΠΞϯτͩͬͨ
    • ͦͷԑͰpplogք۾ͷਓʑͱग़ձ͍ɺ։ൃ߹॓Λ
    ܦͯesa͕ੜ·Εͨ
    • ޙʹesa LLCͰpplogΛӡӦ͢Δ͜ͱʹͳΔͷͩ
    ͕ɺͦΕ͸·ͨผͷ͓࿩
    17

    View Slide

  18. View Slide

  19. after esa
    19
    (͜ͷลͰ12෼͙Β͍໨ඪ)

    View Slide

  20. 2014
    • members: 10 / teams: -
    • ։ൃ߹॓ (5/9 ~ 5/11)
    • ຊ൪؀ڥͰ࠷ॳͷهࣄ͕࡞੒͞ΕΔ (5/10)
    • νʔϜػೳ͕௥Ճ͞ΕΔ (6݄)
    • esa LLCઃཱ (11݄)
    20

    View Slide

  21. esaΛࢧ͑Δؾ࣋ͪ(2014)
    • େֶ࣌୅ͷݪମݧͱಉ༷ʹɺ10ਓఔ౓Ͱ࢖͍ͳ
    ͕Βຖ೔ͷΑ͏ʹϑΟʔυόοΫΛ΋Β͍ɺͦ
    ΕΛ൓ө͍ͯ͘͠ͷָ͕͔ͨͩͨͩͬͨ͠
    • ౰࣌ϑϧλΠϜͰRailsͷ࢓ࣄΛ͍͕ͯͨ͠ɺ͋
    ·ΓۤʹͳΒͳ͔ͬͨ
    • ͲͪΒ΋RailsͳͷͰ૬ޓʹྑ͍Өڹ΋͋ͬͨ
    21

    View Slide

  22. esaΛࢧ͑Δٕज़(2014)
    • Ruby / Rails / ֤छGem
    • Heroku ͱ֤छaddon
    • AWS S3 / CloudFront
    • ଟগͷϑϩϯτΤϯυٕज़
    • GitHub / Idobata
    22
    Heroku্Ͱಈ͘
    ී௨ͷRailsΞϓϦ

    View Slide

  23. 2015
    • members: 2,300 / teams: 900
    • ਖ਼ࣜϦϦʔε (ݩ୴)
    • ֎෦ެ։ػೳ (1݄)
    • TeXه๏ͷαϙʔτ (4݄)
    • APIͷఏڙ։࢝ (5݄)
    • ͓·͚: લ৬Λ΍Ίͯesaʹ࣠଍ΛҠ͢(2݄)
    23

    View Slide

  24. esaΛࢧ͑Δؾ࣋ͪ(2015)
    • ༗ྉԽޙ΋ܧଓͯ͘͠ΕΔਓ͕ଟͯ͘خ͍͠
    • ͏·͍͚͘͹esa͚ͩͰੜ׆Ͱ͖Δ͔΋ʁ
    • ΑΓศརʹɺΑΓշదʹ࢖͑ΔΑ͏ʹ͍ͨ͠
    • ͦ͏ͨ͠ΒΑΓ΋ͬͱ΋ͬͱਓʹ࢖ͬͯ΋
    Β͑ΔͷͰ͸ʁ
    24

    View Slide

  25. esaΛࢧ͑Δٕज़(2015)
    • ϦϦʔεϊʔτۦಈ։ൃ
    • ϑΟʔυόοΫۦಈ։ൃ
    • ग़Ք͗
    25

    View Slide

  26. ϦϦʔεϊʔτۦಈ։ൃ
    • ϦϦʔεϊʔτΛग़͍ͨ͠ؾ࣋ͪΛར༻ͯ͠
    ։ൃ͢Δ
    • લ৬Λୀ৬͕ͯ࣌ؒ͠Ͱ͖ͨΓɺ·ͩ࡞Δ΂
    ͖ػೳ͕ͨ͘͞Μ͋ͬͨΓɺesaͰϦϦʔε
    ϊʔτΛॻ͘ͷ͕؆୯ͩͬͨΓͯ͠2015೥͸
    88ճϦϦʔεϊʔτ͕ॻ͔Εͨ
    26

    View Slide

  27. ϑΟʔυόοΫۦಈ։ൃ
    • ϑΟʔυόοΫΛ͘ΕͨਓΛ͍͍ҙຯͰڻ͔͍ͤͨؾ࣋ͪΛ
    ར༻ͯ͠։ൃ͢Δ
    • 5෼Ͱฦ৴ͨ͠Γɺ1࣌ؒҎ಺ʹमਖ਼׬ྃͨ͠Γ
    • masterϒϥϯνʹϚʔδͰຊ൪σϓϩΠ͞ΕΔͷͰɺग़ઌ
    Ͱ΋εϚϗ͔ΒGitHub্Ͱฤूͯ͠ରԠ΋Մೳ
    • ʮͰ͖ͨΒ30෼੾Γ͍ͨʯͱ͔͍͏λΠϜΞλοΫͷΑ͏
    ͳཁૉ΋͋Δ
    27

    View Slide

  28. ग़Ք͗
    • ͜ͷࠒ͔ΒݱࡏʹࢸΔ·Ͱɺि2ճଞࣾͷνʔϜʹࠞͬ͡
    ͯRailsʹΑΔ։ൃΛख఻͍ͬͯΔ
    • ॳظ͸ओʹӡసࢿۚͷͨΊ
    • ్த͔Β͸ͷٕज़τϨϯυʹऔΓ࢒͞ΕΔϦεΫΛݮΒ
    ͢ͱ͍͏ҙຯ߹͍΋͋ͬͨ
    • ·ͨɺग़Ք͗ઌͷձࣾ΋esaΛ࢖ͬͯ͘Ε͓ͯΓɺݱ৔
    Ͱ௚઀ϑΟʔυόοΫΛड͚ΒΕΔར఺΋͋Δ
    28

    View Slide

  29. 2016
    • members: 5,500 / teams: 1,300
    • Heroku => AWS ECS (3݄)
    • PlantUML (10݄)
    • ElasticsearchԽ (11݄)
    • ͓·͚: ଣੴఠग़खज़ͰೖӃ (8݄)
    29
    (͜ͷลͰ20෼͙Β͍໨ඪ)

    View Slide

  30. esaΛࢧ͑Δؾ࣋ͪ(2016)
    • ʮϖʔδͷද͕ࣔ஗͍Αʯʮݕࡧ͕஗͍Αʯ
    • ʮਃ͠༁Ͷ͐ʯͱ͍͏ؾ࣋ͪ
    • ʮUMLਤΛॻ͖͍ͨͰ͢ʯ
    • ʮΑʔ͠ɺ΍Δ͔ʔʯͱ͍͏ؾ࣋ͪ
    • (ݸผͷਓ͔Βݸผͷ࣌ظʹෳ਺དྷΔϑΟʔυόοΫ͸༗
    ༻ੑ͕ߴ͍)
    30

    View Slide

  31. esaΛࢧ͑Δؾ࣋ͪ(2016)
    • ࠇࣈԽ
    • ͜ͷ౰࣌͸·ͩ2໊ମ੎Ͱɺ໾һใु΋͔ͳ
    Γ߇͑Ίʹ͍͍ͯͨͤ͠Ͱ΋͋Δ
    • ؾ࣋ͪʹଟগ༨༟͕ੜ·Εͨ
    31

    View Slide

  32. esaΛࢧ͑Δٕज़(2016)
    • Docker + AWS ECS
    • Elasticsearch
    • PlantUML
    32

    View Slide

  33. ΠϯϑϥେҾͬӽ͠
    • Heroku͔ΒAWS ECSʹҠߦ
    • ଞͷλεΫΛฒߦͰקΊͳ͕Βɺ࡞ۀࣗମ
    ͸1ϲ݄ఔ౓Ͱ׬ྃ
    • ͜ͷ࣌ʹDockerԽ͓͍ͯͨ͜͠ͱͰɺޙͷ
    αϒγεςϜͷ௥Ճ͕΍Γ΍͘͢ͳͬͨ
    33

    View Slide

  34. ΠϯϑϥେҾͬӽ͠
    34
    docs.esa.io/posts/179

    View Slide

  35. Ҡߦޙͷߏ੒
    35

    View Slide

  36. ݕࡧv2
    • PostgresqlͰແཧ΍Γશจݕࡧ͍ͯͨ͠ͷΛ
    Elasticsearchʹஔ͖׵͑ͨ
    • Elasticsearchʹ࠶ೖ໳͠ͳ͕Β2ϲ݄ఔͰϦ
    Ϧʔε
    • ϦϦʔεޙ΋ҠߦظؒΛઃ͚ͯ৻ॏʹ੾ସ
    36

    View Slide

  37. PlantUMLରԠ
    • PlantUML͸Java੡ͷϓϩμΫτ
    • ͍͔ͭ͘ཁ๬Λ໯͍ͬͯͨ࣌ʹɺJRuby +
    Sinatra Ͱ࣮૷͢Δ͜ͱΛࢥ͍͖ͭ1೔Ͱ࣮૷
    • ECS΁ͷ੾Γସ͑ޙͩͬͨͨΊɺDockerԽ
    ͑ͯ͞͠͠·͑͹ϦϦʔε͸؆୯ͩͬͨ
    37

    View Slide

  38. ͓·͚: ଣੴͷఠग़खज़ͰೖӃ
    • ࣃҩऀͰ஬ࣃ͕ͳ͍͔ϨϯτήϯΛऔͬͨ࣌ʹଣӷથ
    ʹ1.5cmఔ౓ͷੴ͕ݟ͔ͭΓɺେֶපӃΛ঺հ͞ΕΔ
    • 8݄຤ʹશ਎ຑਲԼͷखज़Ͱଣӷથ͔ΒੴΛऔͬͯ΋
    Β͍ɺ3ധ4೔ͰແࣄୀӃ
    • खज़த͸Կ͔͋ͬͯ΋ରԠͰ͖ͳ͍ͷͰɺೖӃલʹো
    ֐࣌ͷࣗಈ෮چػߏ΍ChatOpsͷ੔උΛؤுͬͨ
    38

    View Slide

  39. 2017
    • members: 10,000 / teams: 1,700
    • @ppworks join (2݄)
    • WebPay => PAY.JP (4݄)
    • Ruby bizάϥϯϓϦಛผ৆ (12݄)
    39

    View Slide

  40. esaΛࢧ͑Δؾ࣋ͪ(2017)
    • օʹesaͰهࣄΛॻ͘ͷΛָ͠ΜͰ΄͍͠
    • ͦΕ͕Α͍৘ใڞ༗ʹͭͳ͕Δͱ࠷ߴ
    • Ruby bizάϥϯϓϦಛผ৆
    • ࠓ·Ͱ΍͖ͬͯͨ͜ͱ͕·ͨҰͭใΘΕͨ
    ؾ࣋ͪʹ
    40

    View Slide

  41. esaΛࢧ͑Δٕज़(2017)
    • ֤ࣗ΍Γ͍ͨ࣌ʹ΍Γ͍ͨ͜ͱΛओମతʹ΍
    Δ
    • Կ͔Λ΍Δͱ͖͸Ϟνϕʔγϣϯ্͕͕ͬ
    ͨλΠϛϯάͰ΍Δͷ͕ޮ཰͕Α͘ෛ୲΋
    গͳ͍
    • ΋ͪΖΜਵ࣌ଞͷϝϯόʔͷαϙʔτ΋͢Δ
    41

    View Slide

  42. esaΛࢧ͑Δٕज़(2017)
    • ֤ࣗ΍Γ͍ͨ࣌ʹ΍Γ͍ͨ͜ͱΛओମతʹ΍
    Δ
    • fukayatsu: ܾࡁγεςϜҠߦɺࡉ͔͍վળ
    • ppwoks: ϚϧνϩάΠϯɺΧελϜֆจࣈ
    • taea: σβΠϯௐ੔ɺΞΧσϛοΫϓϥϯ
    42

    View Slide

  43. 2018
    • members: 16,000 / teams: 2,200
    • ʁ
    • ʁ
    • ʁ
    43

    View Slide

  44. esaΛࢧ͑Δؾ࣋ͪ(2018)
    • কདྷతʹؾ͕࣋ͪͲ͏ͳΔ͔͸༧ଌࠔ೉ͳͷ
    Ͱ͋·Γߟ͍͑ͯͳ͍
    • ؾ࣋ͪΑ͘esaΛଓ͚ΒΕΔΑ͏ͳ؀ڥΛվળ
    ͠ଓ͚Δ͜ͱʹूத͢Δ
    • ͦͷͨΊʹٕज़Λຏ͖ɺखࡳΛ૿΍͍ͯ͠
    ͘
    44

    View Slide

  45. esaΛࢧ͑Δ༧ఆͷٕज़(2018)
    • Πϯϑϥؔ࿈ / ϑϩϯτΤϯυؔ࿈
    • ϞόΠϧΞϓϦ
    • ಉ࣌ฤूͷͨΊͷૢ࡞ม׵(OT)
    45
    ※ݸਓͷݟղͰ͢

    View Slide

  46. ·ͱΊ
    46

    View Slide

  47. ·ͱΊ
    • খ͘͞ϦϦʔε͠ɺϑΟʔυόοΫΛಓඪʹͯ͠
    ҭ͍ͯͯ͘ઓུ
    • αʔϏεΛҭ͍ͯͯΔͱɺ͍ͭͷؒʹ͔ࣗ෼΋αʔ
    ϏεʹҭͯΒΕ͍ͯΔ (ٕज़తʹ΋ਫ਼ਆతʹ΋)
    • ͜Ε͔Β΋esaΛ࢖ͬͯ͘ΕΔօ͞Μͱڞʹαʔ
    ϏεΛҭ͍͖͍ͯͯͨ
    47

    View Slide