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

レガシーシステムの再構築。システム設計からプロジェクト運用まで赤裸々に

5b3bf11c665ecc0ff5f39e773b45662a?s=47 Genki Sato
November 29, 2018

 レガシーシステムの再構築。システム設計からプロジェクト運用まで赤裸々に

レガシーシステムの再構築。システム設計からプロジェクト運用まで赤裸々に

5b3bf11c665ecc0ff5f39e773b45662a?s=128

Genki Sato

November 29, 2018
Tweet

Transcript

  1. ϨΨγʔγεςϜͷ࠶ߏங γεςϜઃܭ͔ΒϓϩδΣΫτӡ༻·Ͱ੺དʑʹ גࣜձࣾϠϓϦ
 5FDI-FBEࠤ౻ݯل

  2. גࣜձࣾϠϓϦ w εϚϗΞϓϦΛϒϥ΢βͰ؆୯ʹ։ൃɾ੍࡞Ͱ͖Δʮ:BQQMJʯΛӡӦ w ೥݄ઃཱɺࣾһ਺໊ऑ !2

  3. "HFOEB :BQQMJͱ͸Ͳ͏͍ͬͨαʔϏε͔ γεςϜߏ੒ ՝୊఺ʢٕज़తෛ࠴ʣ ՝୊ͷղফΛ໨ࢦͨ͠ϓϩδΣΫτͷऔΓ૊Έ !3

  4. :BQQMJͱ͸ !4

  5. ඇΤϯδχΞ͕ ϒϥ΢βͷΈͰΞϓϦΛ ։ൃɾӡ༻Ͱ͖ΔϓϥοτϑΥʔϜ l:PVS"QQMJ͋ͳͨͷΞϓϦz !5

  6. ‣ ௨ৗJ04΍"OESPJEͱ͍ͬͨΞϓϦΛ࡞੒͢Δʹ͸ w ࣗࣾͰΤϯδχΞΛ๊͑Δ w ֎෦ͷձࣾʹൃ஫͢Δ ‎খ͍͞վमͰ͋ͬͯ΋खଓ͖͕൥ࡶͰೲ඼·Ͱʹ͕͔͔࣌ؒΔ w ཁ݅ఆٛॻ΍࢓༷ॻΛॻ͍ͨΓߋ৽͝ͱʹೲ඼νΣοΫͨ͠Γ ‣

    ಛʹඇ*5ܥاۀʹͱͬͯ͸͍ͣΕ΋ϋʔυϧ͕ߴ͔ͬͨ !6
  7. ‣ εΫϥον։ൃͱൺ΂ͯ୹͍ظؒͰΞϓϦ͕ߏஙͰ͖·͢ w ઐ೚ͷ੍࡞νʔϜ͕σβΠϯ΍ೖߘ࡞ۀΛ͓ख఻͍͢Δέʔε΋ w σβΠϯͷࣗ༝౓ʹ͸ͩ͜Θ͍ͬͯΔͷͰ඼࣭ͷߴ͍ΞϓϦ͕࡞Ε·͢ ‣ $.4ʢΞϓϦɾίϯςϯπ؅ཧը໘ʣ্ͷϒϥ΢βૢ࡞͚ͩͰҰਓͰ΋ߏஙͱӡ༻͕ Ͱ͖·͢ w

    ཁ݅ఆٛॻɾ࢓༷ॻ͔Βղ์ ‣ ίϯςϯπͷߋ৽͸৹ࠪΛ͢Δ͜ͱͳ͘ϦΞϧλΠϜʹߦ͑·͢ ‣ ओཁ,1*ͷτϥοΫ͕Ͱ͖·͢ !7
  8. ಋೖاۀࣾ !8

  9. !9 Fast growth We are growing at the rate of

    T2D3, as we successfully penetrate traditional enterprises and other non-IT enterprises. Efficient growth We’ve taken only USD 7.6M of capital to-date. About 1/3 is still sitting in our bank. Our revenue has grown close to 1,000x or over 2x the money burnt. Note: T2D3 is the benchmark growth rate for SaaS unicorns, where your MRR 
 (monthly recurring revenue) grows at 3x twice and 2x three times. Growing fast (T2D3) and efficient
  10. γεςϜߏ੒ !10

  11. ‣ $.4ܥ౷ w ΫϥΠΞϯτ͕ೖߘ࡞ۀΛߦ͏ w ࠓճ͸͢΂ͯ͜ͷܥ౷ͷ͓࿩Ͱ͢ ‣ /BUJWFܥ౷ w ΤϯυϢʔβ͕ͨͨ͘"1*Λड͚Δ

    w खલͷQSPYZͰੵۃతʹDBDIF͍ͯ͠Δ ‣ #BDLFOEܥ౷ w 1VTI഑৴ͳͲϔϏʔͳλεΫΛड͚࣋ͭ w Ұ෦੾Γग़͞ΕͨαʔϏεͷ࣮૷΋͍࣋ͬͯΔ !11
  12. !12 main with SQLite native with SQLite native with SQLite

    Instance Instance Instance Instance proxy proxy proxy DB Instance DB instance read replica Instance Instance Instance Instance Instance Instance $.4ར༻ऀ ΤϯυϢʔβ QSPYZ DBDIF BQQ $.4 BQQ OBUJWF CBDLFOE CMS Client Mobile client ˞؆ུԽͨ͠ߏ੒ਤͰ͢
 ˞هࡌ͍ͯ͠ͳ͍ܥ౷΋͋Γ·͢
  13. ‣ ϑϩϯτ w 1)1ͷίʔυͷதʹK2VFSZͰ࣮૷ w 6*෦෼͸ϑϩϯτνʔϜɺϩδοΫ෦෼͸αʔόνʔϜ ‣ αʔόαΠυ w ϑϨʔϜϫʔΫΛ࢖Θͳ͍ɺੜͷ1)1Ͱ࣮૷

    !13
  14. ‣ ετϨʔδ͸"VSPSB.Z42-ͱ42-JUFͷϋΠϒϦου w ϢʔβσʔλͳͲ͸"VSPSB w ΞϓϦͷϚελ৘ใ͸42-JUF w ΋ͱ΋ͱ͸͢΂ͯ42-JUF͕ͩͬͨαʔϏε֦େʹ൐͍"VSPSB΁Ҡߦ !14

  15. ‣ ͍͔ʹ΋ϨΨγʔͬΆ͍ʁ ‣ 42-JUF͸͋Γ͑ͳ͍ͷͰ͸ʁ !15

  16. ‣ 42-JUF͸ϚϧνςφϯτͷৼΔ෣͍Λߟ͑Δͱ౎߹ͷΑ͍෦෼΋͋Δ !16

  17. ‣ ςφϯτʹΞϓϦ w ςφϯτ͝ͱʹͭͷ42-JUFϑΝΠϧʹͳ͍ͬͯΔ ‣ ςφϯτ͝ͱͷεφοϓγϣοτ͕༰қ w ΞϓϦ୲౰ऀ͕͍ͭͰ΋ΞϓϦͷίϯςϯπΛؙ͝ͱอଘɾ੾Γ໭͠Ͱ͖Δػೳ w ੾Γ໭͠ͷͨΊʹߋ৽ͨ͠෦෼͚ͩखͰ໭͢ͷ͸ͱͯ΋ਏ͍

    w ͜ͷػೳ͕͋Ε͹ϫϯΫϦοΫͰಛఆͷόʔδϣϯ΁੾Γ໭ͤΔ w ؆୯ʹ੾Γ໭ͤΔ͔Βؾܰʹߋ৽Ͱ͖Δ w ։ൃऀ͸ϑΝΠϧίϐʔͰ࣮૷Ͱ͖Δ !17
  18. ‣ ͱ͸͍͑՝୊ײ΋ w εέʔϧΞ΢τ͕೉͍͠ w ࣮σʔλ͸΄ͱΜͲ+40/؅ཧ w ࣮૷ͷৄࡉΛΈͳ͍ͱ+40/εΩʔϚ͕Θ͔Βͳ͍ w +40/εΩʔϚͷมߋʹ࡞ۀίετ͕͔͔Δ

    w σϓϩΠʹಠ࣮ࣗ૷͕ඞཁ !18
  19. ‣ 42-JUFͷ୅ସ͸Կ౓͔ٞ࿦͞Ε͕ͨࣾ಺Ͱ΋·ͩ݁࿦͸ग़͍ͯͳ͍ w ಛʹεφοϓγϣοτػೳΛ3%#ͰΧδϡΞϧʹ࣮ݱ͢Δͷ͕೉͍͠ w ,74΍/P42-ɺ(JUΛ࢖͏ͱ͍͏બ୒ࢶ΋ w ΋͔ͨ͠͠Β42-JUF͕ͦ͜࠷దઓུͳͷͰ͸ ‣ ୅ସʹ೰ΜͰ͍Δ͏ͪ͸ٕज़తෛ࠴Ͱ͸ͳ͍

    !19
  20. ϓϩμΫτͷ՝୊ !20

  21. None
  22. ‣ 6*ͷτϨϯυ͔ΒऔΓ࢒͞Ε͓ͯΓɺ࠷ઌ୺ͷΠϝʔδ͕΋ͪʹ͍͘ ‣ ΑΓઌਐతͳ6*ʹਐԽ͍ͤͨ͞ !22

  23. $.4࡮৽ !23

  24. ‣ ೥݄ɺϓϩδΣΫτ͕࢝ಈ ‣ ϑϩϯτͷ࡞Γ௚͠͸ඞਢɺͱ͍͏ͱ͜Ζ͔ΒҶͮΔࣜʹ w αʔόଆ΋͜ΕΛػʹੜͷ1)1Λଔۀ͍ͨ͠ w ಺෦ͷઃܭ΋ݟ௚ͯ͋͠ΒΏΔ࢓༷ʹରԠͰ͖ΔΑ͏ʹ͍ͨ͠ ‎શͱ͔ͬ͑͢ΔʢҰൃٯసΛૂ͏ʣ͜ͱʹ !24

  25. ‣ ٕज़ελοΫ w ΑΓॊೈͳ6*ΛఏڙͰ͖Δ3FBDUΛ࠾༻ w αʔόαΠυͷϑϨʔϜϫʔΫʹ-BSBWFMΛಋೖ w $.4ͷՄೳੑΛ࠷େԽͰ͖Δ಺෦ͷઃܭΛ%%%Ͱߟ͑௚ͨ͠ !25

  26. None
  27. ‣ ౰ॳͷૂ͍௨Γʹೖͬͨ w 6*ύʔπ͕৽͘͠ͳͬͨʂ w τϨϯυʹ΋௥͍͍͚ͭͨͷͰ͸ʂ ‣ Ͱ΋࣮͸͏·͍͔͘ͳ͔ͬͨ͜ͱ΋͋Δ !27

  28. ‣ ϑϩϯτଆͷٕज़తͳ࿩ w 3FBDUͰߏங͸͕ͨ͠ਖ਼௚ɺٕज़తʹѻ͍͖Εͳ͔ͬͨ w ࡞ۀޮ཰͕௿Լͯ͠͠·ͬͨ ‣ αʔόଆͷٕज़తͳ࿩ w গ਺ϝϯόʔ͕୲౰ͨ͜͠ͱ΋͋Γɺ࣮૷ํ਑͕पΓͷϝϯόʔͱΠϝʔ

    δͱဃ཭͕͋ͬͨ !28
  29. ‣ ϓϩδΣΫτਐߦͷ࿩ w ʮΑΓॊೈͳ࢓༷ʹରԠʯ͢Δ͜ͱΛߟ͍͑ͯͨΒऩू͕͔ͭͳ͘ͳͬ ͯ͠·ͬͨ w ผͷϓϩδΣΫτͷ৽ػೳͷΈ͕৽͍͠ΞʔΩςΫνϟͰ࣮૷͞Εઌʹ ϦϦʔεɺຊྲྀͷ࡮৽ϓϩδΣΫτ͸಴࠳ͯ͠͠·ͬͨ w ઌ΄Ͳ͓ݟͤͨ͠ը໘͸৽ػೳͷ΋ͷͰͨ͠

    !29
  30. ‣ 6*ɺٕज़ελοΫ͕৽چࠞࡏͯ͠͠·͏ঢ়گʹͳͬͯ͠·ͬͨ ‣ ٕज़બఆɺϓϩδΣΫτਐߦͷ྆໘ͰۤौΛຯΘͬͨ !30

  31. ͔͠͠զʑ͸ఘΊͳ͍ !31

  32. $.4࡮৽ɾϦϕϯδ !32

  33. ‣ ҰൃṢճ΁ͷνʔϜͷϞνϕʔγϣϯ͸͞ΒʹੵΈ্͕͍ͬͯͨ w 6*Λ࡮৽ɾ౷Ұ͍ͨ͠ w 6*͕ࠞࡏͯ͠͠·͍ͬͯΔ w 69ʹ΋ѱӨڹ w Ϧϕϯδ͍ͨ͠

    w αʔϏεͷ੒௕ͱͱ΋ʹ෾ग़͖ͯͨ͠৽ͨͳٕज़త՝୊ʹ΋ରԠ͍ͨ͠ ‣ ೥݄ɺϓϩδΣΫτ࢝ಈ !33
  34. ‣ ܦݧΛ౿·͑ͯϓϩδΣΫτͱͯ͠औΓ૊Μͩ͜ͱ w ΰʔϧΛݻఆͨ͠ w ݱߦ࢓༷Λਅͱͯͦ͠ΕҎ্ͷػೳ௥ՃΛ͠ͳ͍͜ͱʹͨ͠ w શһͰ࡮৽ϓϩδΣΫτʹऔΓ૊ΊΔମ੍Λ࡞ͬͨ w ৽ػೳ։ൃ͸ࢭΊͨ

    w ͱ͸͍͑Ұ੾ϦϦʔεΛ͠ͳ͍ͷ͸Ϗδωεతʹ೉͍͠ w ೔ʹͪΛܾΊͯػೳվળσʔͱ͠ɺ෦શମͰ޻਺ͷ഑෼Λ໌ࣔతʹߦͬͨ !34
  35. ‣ IUUQTXXXXBOUFEMZDPNDPNQBOJFTZBQQMJQPTU@BSUJDMFT !35

  36. ‣ ܦݧΛ౿·͑ͯϑϩϯτଆͰऔΓ૊Μͩ͜ͱ w ٕज़ݕূͷ࣌ؒΛ௕Ίʹͱͬͨ w ϓϩτλΠϓΛ࡞࣮ͬͯ૷ͷײ֮Λ௫Ή͜ͱʹͨ͠ ‣ ܦݧΛ౿·͑ͯαʔόଆͰऔΓ૊Μͩ͜ͱ w ܾΊͨ͜ͱɾߟ͑ͨ͜ͱʹ͍ͭͯγΣΞɾٞ࿦͢Δ৔Λઃ͚ͯօͰ֬ೝ

    ͢Δ͜ͱʹͨ͠ !36
  37. None
  38. ҆ఆͯ͠ϓϩδΣΫτʹऔΓ૊Ή͜ͱ͕Ͱ͖ΔΑ͏ʹͳͬͨʢ౰ࣾൺʣ ϓϩδΣΫτӡ༻ͷվળʹ੒ޭʂ !38

  39. ࡮৽ɾϦϕϯδͷٕज़બఆ !39

  40. ‣ બఆ࣌ʹڞ௨ͯ͠ؾΛ͚ͭͨϙΠϯτ w ݱঢ়ͷνʔϜߏ੒ɾϨϕϧײʹϚον͍ͯ͠Δ͜ͱ w ద੾ʹϨΠϠʔ෼ׂ͕͞Ε͍ͯͯɺ೉͗ͣ͢͠ɺ͔ͭ؆୯͗͢ͳ͍ w ࣍ʹ͘ΔΞʔΩςΫνϟʹ௥ै͠΍͍͢͜ͱ w ૊৫ͷ֦େʹ͍͍͚ͭͯΔΠϝʔδ͕࣋ͯΔ͜ͱ

    !40
  41. ‣ ϑϩϯτ w /VYU XJUI7VFY Λ࠾༻ w 3FBDUͱൺֱͯ͠ΧδϡΞϧʹ࢖͑ͨ w ϏδωεϩδοΫͱςϯϓϨʔτ͕෼ׂ͞Ε͍ͯͯݱঢ়ͷνʔϜߏ੒ͱ

    ͷ૬ੑ͕Α͔ͬͨ w ৄࡉ͸-5࿮Ͱʂ !41
  42. ‣ αʔόαΠυ w (PMBOHΛબ୒ w (PMBOHͷϝϞϦɾ$16ޮ཰ʹظ଴ͨ͠ w 1)1ΛQIQGQNͰӡ༻͓ͯ͠ΓΞϓϦέʔγϣϯαʔό͕ϝϞϦ ωοΫʹ͍ؕͬͯͨ w

    ͢Ͱʹখ͍͞ػೳͰࣾ಺ͷಋೖ࣮੷͕͋ͬͨ w ੩తղੳ͕ʢGPSNBUUFS MJOUFSʣ͕४උ͞Ε͓ͯΓ։ൃ͠΍͍͢ !42
  43. ‣ αʔόαΠυ w ϚΠΫϩαʔϏε͸·ͩૣ͍ͱߟ͑ಋೖ͠ͳ͍͜ͱʹͨ͠ w ΠϯϑϥΛؚΊͨαʔόαΠυΤϯδχΞ͕ਓऑ w αʔϏεͷ෼ׂͷ࢓ํ͸ͦΕ୯ମͰେ͖ͳςʔϚ w কདྷͷ૊৫ߏ଄ΛΈ͔ͯΒͰ΋஗͘ͳ͍

    w σΟϨΫτϦߏ੒͸ઓུత%%%Λҙࣝ͠ͳ͕ΒϨΠϠʔ෼ׂ !43
  44. ‣ Πϯϑϥ /FX  w "84'BSHBUFΛબ୒ w LTͷ͕͖࣍ͨͱͯ͠΋%PDLFSίϯςφͳΒେ͖͘͸֎Εͳͦ͞͏ w ετϨʔδʢ42-JUF

    "VSPSBʣ͕"84ʹ͋ΔͨΊ($1͸அ೦ w ٞ࿦͍ͯͨ͠ͱ͖ʹ'BSHBUFͷ೔ຊϦʔδϣϯ͕ϦϦʔε͞Ε࢖ͬͯΈ͔ͨͬͨ w 42-JUFΛͲ͏͢Δ͔໰୊͸͍ͬͨΜ୨্͛͢Δ͜ͱʹͨ͠ w ৽چͷ੾Γସ͕͑Մೳͳঢ়ଶͰҠߦ͢Δඞཁ΋͋ͬͨͨΊ w 42-JUFϑΝΠϧΛ͍࣋ͬͯΔαʔόʹΠϯλʔϑΣʔεͱͳΔαʔϏεΛߏங !44
  45. ‣ HFOFSBUF͞Εͨϑϩϯτίʔυ͸4 $MPVE'SPOUͰ഑৴ ‣ ϑϩϯτ͔ΒͷϦΫΤετ͸H31$8FC ‣ $.4BQQ ‣ ϑϩϯτ͔ΒͷϦΫΤετΛड͚औΔαʔϏε ‣

    FHSFTT JOHSFTTͱ΋ʹFOWPZΛܦ༝ͤ͞Δ ‣ 42-JUFXSBQQFSBQQ ‣ 42-JUFΛϥοϓͯ͠H31$ܦ༝Ͱॲཧ͢ΔαʔϏε !45 main with SQLite
 SQLite wrappter app $.4ར༻ऀ envoy CMS app Client ˞؆ུԽͨ͠ߏ੒ਤͰ͢
  46. ‣ ࣮ࡍʹऔΓ૊Έ࢝ΊͯΈ࣮ͨײ w ϓϩδΣΫτͷӡ༻΋ΞʔΩςΫνϟ΋εςοϓΞοϓͰ͖ͨ w νʔϜͷೲಘײΛৢ੒Ͱ͖ͨ͜ͱ΋େ͖͍ w ࣦഊΛྐʹͰ͖͍ͯΔ !46

  47. ௚ۙͰͨ՝୊ͱऔΓ૊Έ !47

  48. ‣ ։ൃΛਐΊ͍ͯ͘தͰ΋՝୊͸Ͱͯ͘Δ ‣ ෛ࠴ͷ࠶ൃ໌Λ͠ͳ͍ͨΊʹि࣍ͷৼΓฦΓͰͻͱͭͻͱͭ௵͢ !48

  49. None
  50. ‣ ٕज़ͷཧղϨϕϧ͕͔Έ߹Θͣٞ࿦ͷޮ཰͕ѱ͍͜ͱ͕ग़͖ͯͨ ‎ํ਑ΛͦΖ͑ɺڞ௨ݴޠΛ࡞͍ͬͯ͘ w ษڧձ΍ίʔυϦʔσΟϯάձ͸༗ޮ w ࠷ॳ͔Β޿͛͗ͣ͢ϋʔυϧΛ͋͛͗ͣ͢ w νʔϜΈΜͳͰ΍Δ !50

  51. None
  52. ‣ ਓʹΑͬͯόϥόϥͷ໋໊نଇ w 'JOE (FU 'FUDI  w %FMFUF 3FNPWF

     w 6TFST 6TFS-JTU  w 4DSPMM.FOV 4DSPMMNFOV !52
  53. None
  54. None
  55. ‣ ࣮ࡍʹ΍ͬͯΈΔͱਏ͍+40/ͷύʔε w +40/͕1)1ͷKTPO@FODPEFʢΦϓγϣϯͳ͠ʣͰ֨ೲ͞Ε͓ͯΓ(PMBOHͰղऍ͢Δͷ͕ਏ͍ w ࿈૝഑ྻ͕ۭͬΆʹͳΔͱ഑ྻʹͳΔ w \LFZWBMVF^ͷཁૉ͕ͳ͘ͳΔͱ<>ͱ+40/্Ͱදݱ͞ΕΔ w ܕͷఆ͕ٛҰͭʹఆ·Βͳ͍

    w 6ONBSTIBM͢Δ·ͰԿ͕ೖ͍ͬͯΔ͔Θ͔Βͳ͍ w +40/εΩʔϚͷϚΠάϨʔγϣϯΛߦ͍ͬͯΔՕॴ΋ ‎೰ΈΛڞ༗ͯ͠ਓபΛܾΊɺղܾͨ͠Βϊ΢ϋ΢Λڞ༗ͯ͠΋Β͏ !55
  56. None
  57. ‣ ޻ظ͕৳ͼͯ͠·͏໰୊ w ͜ͷखͷϓϩδΣΫτͰ͸࣮֬ʹى͜Δ͕Ϗδωεଆͱͷڞ௨ೝࣝͰ͸ ͳ͔ͬͨ ‎Ϗδωεͱͯ͠ଥڠͰ͖ΔϥΠϯͱ࣮ݱͰ͖ΔϥΠϯ͕Ͳ͜ͳͷ͔Λࣾ಺ Ͱڞ༗͠ɺޓ͍ͷཁٻΛཧղ͠߹͍ཁ݅Λ֬ೝ͠ଓ͚Δ͜ͱ͕େࣄ !57

  58. ·ͱΊ !58

  59. ‣ ϑοτϫʔΫͷ͍ܰߏ੒͕ͦ͜ड͚ೖΕΒΕΔαʔϏεʹͳΔඞਢ৚݅ w 1.'·Ͱ͸ͩ͜ΘΓ͗͢ͳ͍ w ചΕΔίʔυ͸ਖ਼ٛ !59

  60. ‣ ͍͢͝ϓϩμΫτΛ΋ͬͱ͍͢͝ϓϩμΫτʹ͢ΔͨΊʹ౤ࢿ͸ඞཁ w ҰճͰ੒ޭ͢Δͱ͸ݶΒͳ͍ʢ௅ઓ͸͓ૣΊʹʣ w ࣦഊ͸ྐʹ͢Δ w ෛ࠴ͷ༧๷΋ߟྀʹೖΕΔ ‣ ੒ޭ͍ͯ͠ΔϓϩμΫτͷϨΨγʔγεςϜͦ͜৽͍͜͠ͱʹ௅ઓ͢Δҙ

    ຯ͕͋Δ w θϩ͔Βߏங͢ΔΑΓٕज़తϋʔυϧ͕ߴ͍͕ɺ࿹͕໐Δ !60
  61. 5IBOLZPV
 8FSFIJSJOH !61 ΞϓϦͷςΫϊϩδʔΛ։์͠ɺ ੈͷதΛ΋ͬͱศརͰշదʹɻ