esaを支える技術と気持ち

Ffdf2b0baba2980a90923978cf32a6ca?s=47 fukayatsu
March 25, 2018

 esaを支える技術と気持ち

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

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

Ffdf2b0baba2980a90923978cf32a6ca?s=128

fukayatsu

March 25, 2018
Tweet

Transcript

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

  2. contents • ࣗݾ঺հɾձࣾ঺հɾϓϩμΫτ঺հ • before esa • esaʹࢸΔ·Ͱͷٕज़ͱؾ࣋ͪ • after

    esa • esaʹ௥Ճ͞Ε͍ٕͯͬͨज़ͱؾ࣋ͪ(೥౓ผ) • ·ͱΊ 2
  3. 3 • ߹ಉձࣾ esa • ߹ܭ3໊ • ΤϯδχΞ2໊ • σβΠφʔ1໊

    • શһ͕ίʔυΛॻ͘ • શһ͕ձࣾ୅ද • ૑ۀ4೥໨
  4. esa LLC͕΍͍ͬͯΔ͜ͱ • esa.ioͷ։ൃɾӡӦ • pplog.netͷ։ൃɾӡӦ • ଞͷձࣾͷ։ൃ΍σβΠϯͷ͓ख఻͍ 4

  5. esa LLC͕΍Βͳ͍͜ͱ • αʔϏε΍ձࣾͷٸܹͳ੒௕͸໨ࢦ͞ͳ͍ • ౤ࢿ͸ड͚ͳ͍ • (ۜߦ౳͔Βগֹͷ༥ࢿ͸ड͚ͨ͜ͱ͕͋Δ) • Web

    ޿ࠂ͸ग़ͣ͞ɺޱίϛ͕ϝΠϯ 5
  6. esa.ioͱ͸? 6

  7. 7

  8. 8 • ݱࡏɺ໿2,200νʔϜ͕ར༻த • ITاۀΛத৺ͱͨ͠ձࣾɾஂମɾݸਓʢن໛: 1ਓʙ300ਓఔ౓ʣ • ΤϯδχΞɾσβΠφʔΛத৺ʹɺاըɾӦۀ৬ɾࣄ຿ܥͷํ΋ར༻ • ݸਓ΍͝Ոఉɺେֶͷݚڀࣨɺझຯͷஂମ΋ଟ਺

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

    User Concept: ৘ใΛɺҭ͍ͯͨɻ • υΩϡϝϯτ͸࠷ॳ͔Β׬ᘳͰ͸ͳ͘ɺ࣌ؒΛ͔͚ͯΑ͍΋ͷʹҭ͍ͬͯ͘ • ݸਓ͕ΏΔ͍ΞΠσΞΛग़͠΍͘͢ɺΈΜͳͰܧଓతʹվળ͠΍͍͢࢓૊Έ • ্͔Βͷԡ͠෇͚Ͱ͸ͳ͘ϘτϜΞοϓͰࣗൃతʹ৘ใൃ৴͢ΔΑ͏ʹͳΔ ͜ͱ͕ɺΑΓ͍͖͍͖ͱͨࣗ͠཯తͳνʔϜͮ͘Γʹͭͳ͕Δ
  10. before esa 10

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

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

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

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

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

    • => Α͍॥؀ 15
  16. ͦͷࠒझຯͰ࡞ͬͯͨ΋ͷ • Ոి(iRemocon/IRKit)΍Roombaͷૢ࡞ؔ࿈ • Ruby gems • Chrome Extension /

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

    ͕ɺͦΕ͸·ͨผͷ͓࿩ 17
  18. None
  19. after esa 19 (͜ͷลͰ12෼͙Β͍໨ඪ)

  20. 2014 • members: 10 / teams: - • ։ൃ߹॓ (5/9

    ~ 5/11) • ຊ൪؀ڥͰ࠷ॳͷهࣄ͕࡞੒͞ΕΔ (5/10) • νʔϜػೳ͕௥Ճ͞ΕΔ (6݄) • esa LLCઃཱ (11݄) 20
  21. esaΛࢧ͑Δؾ࣋ͪ(2014) • େֶ࣌୅ͷݪମݧͱಉ༷ʹɺ10ਓఔ౓Ͱ࢖͍ͳ ͕Βຖ೔ͷΑ͏ʹϑΟʔυόοΫΛ΋Β͍ɺͦ ΕΛ൓ө͍ͯ͘͠ͷָ͕͔ͨͩͨͩͬͨ͠ • ౰࣌ϑϧλΠϜͰRailsͷ࢓ࣄΛ͍͕ͯͨ͠ɺ͋ ·ΓۤʹͳΒͳ͔ͬͨ • ͲͪΒ΋RailsͳͷͰ૬ޓʹྑ͍Өڹ΋͋ͬͨ

    21
  22. esaΛࢧ͑Δٕज़(2014) • Ruby / Rails / ֤छGem • Heroku ͱ֤छaddon

    • AWS S3 / CloudFront • ଟগͷϑϩϯτΤϯυٕज़ • GitHub / Idobata 22 Heroku্Ͱಈ͘ ී௨ͷRailsΞϓϦ
  23. 2015 • members: 2,300 / teams: 900 • ਖ਼ࣜϦϦʔε (ݩ୴)

    • ֎෦ެ։ػೳ (1݄) • TeXه๏ͷαϙʔτ (4݄) • APIͷఏڙ։࢝ (5݄) • ͓·͚: લ৬Λ΍Ίͯesaʹ࣠଍ΛҠ͢(2݄) 23
  24. esaΛࢧ͑Δؾ࣋ͪ(2015) • ༗ྉԽޙ΋ܧଓͯ͘͠ΕΔਓ͕ଟͯ͘خ͍͠ • ͏·͍͚͘͹esa͚ͩͰੜ׆Ͱ͖Δ͔΋ʁ • ΑΓศརʹɺΑΓշదʹ࢖͑ΔΑ͏ʹ͍ͨ͠ • ͦ͏ͨ͠ΒΑΓ΋ͬͱ΋ͬͱਓʹ࢖ͬͯ΋ Β͑ΔͷͰ͸ʁ

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

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

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

    ʮͰ͖ͨΒ30෼੾Γ͍ͨʯͱ͔͍͏λΠϜΞλοΫͷΑ͏ ͳཁૉ΋͋Δ 27
  28. ग़Ք͗ • ͜ͷࠒ͔ΒݱࡏʹࢸΔ·Ͱɺि2ճଞࣾͷνʔϜʹࠞͬ͡ ͯRailsʹΑΔ։ൃΛख఻͍ͬͯΔ • ॳظ͸ओʹӡసࢿۚͷͨΊ • ్த͔Β͸ͷٕज़τϨϯυʹऔΓ࢒͞ΕΔϦεΫΛݮΒ ͢ͱ͍͏ҙຯ߹͍΋͋ͬͨ •

    ·ͨɺग़Ք͗ઌͷձࣾ΋esaΛ࢖ͬͯ͘Ε͓ͯΓɺݱ৔ Ͱ௚઀ϑΟʔυόοΫΛड͚ΒΕΔར఺΋͋Δ 28
  29. 2016 • members: 5,500 / teams: 1,300 • Heroku =>

    AWS ECS (3݄) • PlantUML (10݄) • ElasticsearchԽ (11݄) • ͓·͚: ଣੴఠग़खज़ͰೖӃ (8݄) 29 (͜ͷลͰ20෼͙Β͍໨ඪ)
  30. esaΛࢧ͑Δؾ࣋ͪ(2016) • ʮϖʔδͷද͕ࣔ஗͍Αʯʮݕࡧ͕஗͍Αʯ • ʮਃ͠༁Ͷ͐ʯͱ͍͏ؾ࣋ͪ • ʮUMLਤΛॻ͖͍ͨͰ͢ʯ • ʮΑʔ͠ɺ΍Δ͔ʔʯͱ͍͏ؾ࣋ͪ •

    (ݸผͷਓ͔Βݸผͷ࣌ظʹෳ਺དྷΔϑΟʔυόοΫ͸༗ ༻ੑ͕ߴ͍) 30
  31. esaΛࢧ͑Δؾ࣋ͪ(2016) • ࠇࣈԽ • ͜ͷ౰࣌͸·ͩ2໊ମ੎Ͱɺ໾һใु΋͔ͳ Γ߇͑Ίʹ͍͍ͯͨͤ͠Ͱ΋͋Δ • ؾ࣋ͪʹଟগ༨༟͕ੜ·Εͨ 31

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

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

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

  35. Ҡߦޙͷߏ੒ 35

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

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

    ͑ͯ͞͠͠·͑͹ϦϦʔε͸؆୯ͩͬͨ 37
  38. ͓·͚: ଣੴͷఠग़खज़ͰೖӃ • ࣃҩऀͰ஬ࣃ͕ͳ͍͔ϨϯτήϯΛऔͬͨ࣌ʹଣӷથ ʹ1.5cmఔ౓ͷੴ͕ݟ͔ͭΓɺେֶපӃΛ঺հ͞ΕΔ • 8݄຤ʹશ਎ຑਲԼͷखज़Ͱଣӷથ͔ΒੴΛऔͬͯ΋ Β͍ɺ3ധ4೔ͰແࣄୀӃ • खज़த͸Կ͔͋ͬͯ΋ରԠͰ͖ͳ͍ͷͰɺೖӃલʹো

    ֐࣌ͷࣗಈ෮چػߏ΍ChatOpsͷ੔උΛؤுͬͨ 38
  39. 2017 • members: 10,000 / teams: 1,700 • @ppworks join

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

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

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

    • taea: σβΠϯௐ੔ɺΞΧσϛοΫϓϥϯ 42
  43. 2018 • members: 16,000 / teams: 2,200 • ʁ •

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

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

    ※ݸਓͷݟղͰ͢
  46. ·ͱΊ 46

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

    ϏεΛҭ͍͖͍ͯͯͨ 47