$30 off During Our Annual Pro Sale. View Details »

分かれたシステムをていねいにモノリスに集約する/Integrate decentralized systems to a monolith carefully

adorechic
August 30, 2018
18k

分かれたシステムをていねいにモノリスに集約する/Integrate decentralized systems to a monolith carefully

https://starttoday-tech.connpass.com/event/96477/

オウチーノではもともとサービスごとに異なる言語やFWを用いてシステムが分かれており、担当者もそれぞれ別々でした。そのため各サービスに精通した担当者が少なく、担当者は日々の運用で手一杯という状況下で、リプレイスもうまく進んではいませんでした。
そこでリプレイスよりも、分かれているシステムをひとつのモノリシックアプリケーションに集約することで、チームとしてよりワークすることをまずは目指しました。
一方で数多くのサービス機能を集約することは、そのモノリシックアプリケーションが急激に肥大化することも意味します。そこでモノリスにすることでの弊害をなるべく抑えつつ集約していく事例についてご紹介します。

adorechic

August 30, 2018
Tweet

Transcript

  1. ෼͔ΕͨγεςϜΛ
    ͍ͯͶ͍ʹ
    ϞϊϦεʹू໿͢Δ

    View Slide

  2. ࣗݾ঺հ
    w٢઒ਸྙ
    w Φ΢νʔϊऔక໾$50
    w *%BEPSFDIJD
    w όοΫΤϯυ԰
    w ࠃ಺େखϒϩάαʔϏε΍ϨγϐαʔϏεձࣾͷόοΫΤϯυ
    w .JDSPTFSWJDFT͓͡͞Μ΍ͬͯ·ͨ͠

    View Slide

  3. View Slide

  4. ෆಈ࢈ϙʔλϧαΠτ
    ˞چσβΠϯ

    View Slide

  5. ϦϓϨΠεதͰ͢ʂ

    View Slide

  6. ࠓ೔͓࿩͢Δ͜ͱ
    wͳͥϦϓϨΠε͢Δͷ͔
    wͲͷΑ͏ʹϦϓϨΠεΛ͍ͯ͠Δͷ͔
    w ૊৫ͱͯ͠ͷ޻෉
    w ΞʔΩςΫνϟͱͯ͠ͷ޻෉

    View Slide

  7. ࠓ೔͓࿩͠͠ͳ͍͜ͱ
    wར༻͍ͯ͠Δݸʑͷٕज़ͷৄࡉ
    wαʔϏε͝ͱͷৄࡉ
    wϦϓϨΠεʹؔ࿈͠ͳ͍෦෼ͷٕज़

    View Slide

  8. Φ΢νʔϊུྺ
    w೥גࣜձࣾϗʔϜΞυόΠβʔͱͯ͠ઃཱ
    w೥৽ஙϚϯγϣϯαΠτʮ)PNF1-";"ʯϦϦʔε
    w೥தݹαΠτʮ0VDDJOPʯϦϦʔε
    w೥௞ିαΠτʮ$BSJSVOPʯϦϦʔε
    w೥)PNF1-";"Λ0VDDJOPʹ౷߹
    w೥גࣜձࣾΦ΢νʔϊ΁มߋ
    w೥$BSJSVOPΛ0VDDJOP΁౷߹
    ΋ͱ΋ͱผʑͷαʔϏε
    ͋ͱ͔Β౷߹

    View Slide

  9. ೥ܦӦମ੍มߋ

    View Slide

  10. େ͖ͳํ਑มߋ
    w#FGPSF
    w ৽ن։ൃ΍େ͖Ίͷ։ൃ͸͢΂ͯ֎஫
    w ࣾ಺ͷ։ൃऀ͸ӡ༻ɾอकΛ୲౰
    w اըͱ։ൃऀ͕෼཭ͨ͠΢ΥʔλʔϑΥʔϧ

    View Slide

  11. େ͖ͳํ਑มߋ
    w"GUFS
    w ͢΂ͯ಺੡Խ
    w ৬छԣஅͷνʔϜʹΑΔϦʔϯ։ൃ
    w ϢʔβʔϑΝʔετ

    View Slide

  12. ͲΜͲΜαʔϏεΛ
    վળ͍ͯͧ͘͠ʂ

    View Slide

  13. ࠓͷγεςϜ͸
    ͋Μ·ΓखΛೖΕΒΕͳ͍
    Ͱ͢Αɾɾɾʁ

    View Slide

  14. खΛೖΕΒΕͳ͍γεςϜJT
    w౷߹͞Ε͍ͯΔ͕࣮ଶ͸෼͔ΕͨผʑͷγεςϜ
    w +BWB 4USVUT
    $PME'VTJPO 1)1 $BLF1)1
    FUD
    w 0SBDMF .Z42- "VSPSB
    w 1$൛ͱεϚϗ൛ɺόονͳͲશ෦ผʑͷγεςϜ
    w਺ʑͷผܥ౷ͷόον͕υϛϊ౗͠Ͱॲཧ͍ͯ͘͠
    wϦϙδτϦ؅ཧ͕ෆ׬શ
    w ຊ൪ͱϦϙδτϦͷιʔε͕ҧ͏ɺιʔε͕࢒ͬͯͳ͍όΠφϦFUD
    w୭΋શ༰Λ೺ѲͰ͖͍ͯͳ͍
    ݴޠ΋%#΋όϥόϥ

    View Slide

  15. ͳΒ͹ϦϓϨΠεͩʂ

    View Slide

  16. ଴ͬͨ

    View Slide

  17. ҋӢͳϦϓϨΠε͸ةݥ
    wԿ͕ਖ਼͍͠࢓༷͔Θ͔Βͳ͍
    wमਖ਼Օॴ͕ͲΜͲΜ૿͑Δ
    w͍ͭ·Ͱ΍ͬͯ΋ऴΘΒͳ͍

    View Slide

  18. ઴ਐతϦϓϨΠε
    wҰճͷมߋ͸খ͘͞
    w มߋ͕େ͖͍ͱਓྨʹ͸ίϯτϩʔϧͰ͖ͳ͍
    w ໨ࢦ͢ঢ়ଶʹ޲͔ͬͯ೔ʹ೔ʹྑ͍ͯ͘͘͠
    w૊৫ͷมԽʹॊೈʹ௥ਵ͢Δ
    w ඞཁͳ͍ͱ͜ΖͷҠ২ʹ࿑ྗΛ͔͚ͳ͍
    w ௕͔͚࣌ؒͯͨΒେํ਑͕มΘͬͯਫͷ๐Λආ͚Δ

    View Slide

  19. ໨ࢦ͢΂͖ঢ়ଶ
    wϢʔβʔʹՁ஋Λಧ͚ΒΕΔঢ়ଶ
    w ❌։ൃऀ͕γεςϜͷอक͹͔Γ͍ͯ͠Δ
    w ⭕։ൃऀ͕ػೳͷ௥ՃɾվળʹूதͰ͖͍ͯΔ

    View Slide

  20. ໰୊͸Ͳ͜ʹ͋Δʁ
    w❌ݴޠɾγεςϜ͕όϥόϥ
    w .JDSPTFSWJDFTͩͱී௨ͩ͠ɺ෼͔Ε͍ͯΔ͜ͱࣗମ͕໰୊Ͱ͸ͳͦ͞͏
    w❌υϛϊ౗͠ͳόον܈
    w όονҎ֎Ͱ΋վળͰ͖͍ͯͳ͍͔Β͜Ε΋ຊ࣭Ͱ͸ͳͦ͞͏
    w❌શ༰Λ೺ѲͰ͖͍ͯͳ͍
    w ଞͷձࣾͰ΋શମ೺Ѳͭͭ͠։ൃͯ͠Δਓ͹͔ΓͰ͸ͳ͍Ͱ͢ΑͶ

    View Slide

  21. ຊ౰ʹ෼அ͞Ε͍ͯͨ΋ͷ
    wγεςϜΑΓ΋։ൃऀͷ෼அ͕໰୊
    w جຊ֤γεςϜ໊ɺଟ໊ͯ͘ͷ୲౰ऀ
    w ҰਓͰݟ͍ͯΔͱվળ·Ͱख͕·ΘΒͳ͍
    w վળ͕Ͱ͖ͳ͍ͷͰ೺Ѳ΋ਐ·ͳ͍
    w ଞͷ։ൃऀ͔ΒͷΞυόΠε͕΋Β͑ͳ͍
    w ૊৫ͱͯ͠εΩϧΞοϓ͕ਐ·ͳ͍

    View Slide

  22. ϦϓϨΠεͷํ਑
    wϞϊϦεʹू໿͢Δ
    w ։ൃऀશһͰڞ௨ݴޠΛ࣋ͭ
    w ૬ޓʹϨϏϡʔ෼୲αϙʔτ͕͠΍͍͢ঢ়ଶʹ͢Δ
    wҠ২࡞ۀΑΓ΋৽ن։ൃΛॏࢹ
    w ϞϊϦε্ʹ࣮ݱ͍ͨ͠ػೳΛͲΜͲΜ։ൃ͢Δ
    w طଘػೳͰඞཁͳͱ͜Ζ͚ͩҠ২
    աڈ࢓༷ʹͱΒΘΕΔ
    ඞཁ͸ͳ͍

    View Slide

  23. طଘγεςϜͷอक͸
    Ͳ͏͢ΔΜͰ͔͢ɾɾɾʁ

    View Slide

  24. ౰൪੍
    wτΠϥʔʢࣾ಺༻ޠʣ
    w τΠϧΛย෇͚ΔਓɻҰिؒަ୅ɻ
    w ڧ੍తʹଐਓੑΛݮΒ͢ɻ஌ݟΛڞ༗͢Δɻ
    wબ୒੍
    w ։ൃऀ͸Φϯίʔϧ͔τΠϥʔΛબ୒Ͱ͖Δ

    View Slide

  25. Ұ೥ޙͲ͏ͳ͔ͬͨ

    View Slide

  26. View Slide

  27. Ұ೥ޙ
    wϝΠϯαΠτ੾Γସ͑
    w PVDDJOPKQʢطଘγεςϜʣ͔ΒPVDDJOPDPNʢ৽ϞϊϦεʣ΁
    w΄΅શһͷϝΠϯλεΫ͕৽ϞϊϦεʹؔ͢Δ΋ͷ
    w ։ൃऀ͸ΈΜͳେମ3BJMT3FBDUॻ͍ͯΔ
    wچγεςϜ͸ʢݮΓͭͭ͋Δ͕ʣ·ͩશવ࢒͍ͬͯΔ
    w τΠϥʔͰͳΜͱ͔·Θ͍ͤͯΔ
    w؅ཧը໘ؚΊͯαʔϏε͕ϞϊϦεʹಉډ

    View Slide

  28. αʔϏε͕ϞϊϦεʹಉډ

    View Slide

  29. ਏ͘ͳΒͳ͍Α͏ͳ޻෉

    View Slide


  30. ॊೈʹελοΫΛ૊Έ߹ΘͤΔ

    View Slide

  31. αʔϏεಛੑʹԠͯ͡ελοΫͷߏ੒Λม͑Δ
    wϕʔε͸3FBDU3BJMT
    w 41" 3FBDU3FEVYTBHBSFBDUSPVUFS

    "1* 3BJMT
    443 IZQFSOPWB

    w 3BJMT)BNM෦෼తʹ3FBDU3FEVY PSૉͷ
    3FBDU

    w 3BJMT)BNMK2VFSZ

    View Slide


  32. αʔϏεؒͷಠཱੑΛҡ࣋͢Δ

    View Slide

  33. /BNFTQBDFͷ෼཭
    wDPOTUSBJOUTTVCEPNBJO͸࢖͍ͬͯͳ͍
    w OBNFTQBDF͕૿͑Δͱ3"*-4@&/7ͱυϝΠϯͷ૊Έ߹Θͤͷ؅ཧ͕
    ൥ࡶʹͳΔ
    w αϒυϝΠϯͰͳ͍΋ͷ΋͋Δ
    w ಛఆͷυϝΠϯͰ͚ͩ༗ޮԽ͍ͨ͠΋ͷ͸ΧελϜDPOTUSBJOUTΛར༻
    w.PVOUBCMF&OHJOFʹ΋͍ͯ͠ͳ͍
    w &OHJOFϕʔείʔυ΁ͷࢀর͕ൃੜ͢ΔͱΧΦεʹͳΔ

    View Slide

  34. /BNFTQBDF෼཭ΛҰݩ؅ཧ
    XXXPVDDJOPKQBSUJDMF
    XXXPVDDJOPKQDPOTPMF
    NBSLFUPVDDJOPDPNNBSLFU
    DPOTPMFPVDDJOPKQDPOTPMF
    {
    'www.o-uccino.jp' => %i(front article),
    'market.o-uccino.com' => %i(market),
    ...
    }
    &$4Ϋϥελʔ͸ಛੑʹԠͯ͡छྨ
    w ෆಛఆଟ਺ͷެ։ΞΫηε
    w ࣾ֎Ϣʔβʔ͕࢖͏؅ཧը໘ܥ
    w ࣾ಺؅ཧը໘ܥ
    υϝΠϯ͝ͱʹ୲౰ͷ
    ΫϥελʹׂΓৼΔ
    υϝΠϯͱOBNFTQBDFͷ
    ϚοϐϯάΛ؅ཧ

    View Slide

  35. /BNFTQBDFؒΛૄ݁߹ʹ͢Δ
    &EJUPS
    &EJUPS$SFEFOUJBM
    4UB⒎6TFS&EJUPS
    4UB⒎6TFS (4VJUF
    "SUJDMFOBNFTQBDF 4UB⒎DPOTPMFOBNFTQBDF
    ֤OBNFTQBDFʹ*OEFOUJpFSΛ࣋ͭ
    ൚༻తͳ6TFS͸࡞Βͳ͍
    *EFOUJpFSͱ$SFEFOUJBM͸෼཭
    4UB⒎ೝূ͍ͨ͠৔߹
    ผOBNFTQBDFʹϦμΠϨΫτͯ͠ҕৡ
    ௚઀(4VJUFೝূͨ͠Γ%#ࢀর͠ͳ͍

    View Slide


  36. چγεςϜ΁ͷΞμϓλ

    View Slide

  37. αʔϏε্੹຿͕ಉ͡΋ͷΛ·ͱΊΔ
    FTUBUF
    /FX&TUBUF&TUBUF
    6TFE&TUBUF&TUBUF
    /FX&TUBUF#VLLFO
    6TFE&TUBUF#VLLFO
    &TUBUF'PSNBU
    ڞ௨ΠϯλʔϑΣΠε

    ৽ஙɾதݹͱ΋
    Ծ૝ϞσϧΛ௨ͯ͡
    ಉ͡ΠϯλʔϑΣΠεͰࢀর
    ಉ͡෺݅৘ใͰ΋
    ผ%#ͳͷͰςʔϒϧߏ੒΍
    ΧϥϜ໊ͳͲ͸શ͘ҟͳΔ
    ෳ਺ςʔϒϧࢀর͢Δ৔߹΋
    Ξμϓλ૚͕ٵऩ͢Δ
    কདྷతʹετϨʔδ૚Λ͜͜ʹد͍ͤͯ͘

    View Slide


  38. ฒߦ࡞ۀͷࣄނ๷ࢭ

    View Slide

  39. /BNFTQBDFؒͷಉ࣌࡞ۀʹΑΔࣄނΛ๷͙
    Ϛʔδ
    ςετ
    ηΩϡϦςΟνΣοΫ
    Ϗϧυ
    εςʔδϯά΁ࣗಈσϓϩΠ
    εςʔδϯά&&ςετ
    %PDLFSʹϦϦʔεϏϧυλά
    34QFD+FTU
    #SBLFNBOOQNBVEJU
    BTTFUDPNQJMFEPDLFSCVJME
    &&Λύε͍ͯ͠ͳ͍ͱ
    QSPEVDUJPOσϓϩΠͰ͖ͳ͍
    σϓϩΠ͸4MBDL͔ΒίϚϯυ࣮ߦ
    SJEHFQPMFͰεΩʔϚʹ
    ࠩ෼͕͋Ε͹σϓϩΠͰ͖ͳ͍

    View Slide

  40. ·ͱΊ
    wϦϓϨΠε͸ܭըతʹ
    w ղܾ͢΂͖՝୊Λ໌֬ʹ͢Δ
    w͋͑ͯϞϊϦεʹ͢Δͱ͍͏બ୒ࢶ
    w γεςϜ͕໨ࢦ͢΂͖࢟ͱ՝୊ΛνʔϜͷڞ௨ೝࣝʹ͢Δ
    wϞϊϦεͷσϝϦοτΛܰݮ͢Δ޻෉

    View Slide

  41. 8FSFIJSJOH
    ࣍ͷΦ΢νʔϊΛ͍ͬ͠ΐʹ࡞Γ·ͤΜ͔
    SFDSVJU!PVDDJOPKQ
    IUUQTDPSQPSBUFPVDDJOPKQSFDSVJU

    View Slide