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

メルカリ、巨大モノリスにおける複雑性をリリース9年目にしてどう解決するか

 メルカリ、巨大モノリスにおける複雑性をリリース9年目にしてどう解決するか

巨大なPHP製モノリスアプリケーションにおいて、マイクロサービス化というアプローチでは上手く解決できなかった問題を、アプローチを変えて解こうとしています。何をどのように進めているのか、具体例を交えてお話します。

A39aa58efae45cf64f3989edc45e7a51?s=128

Yuta Adachi

April 10, 2022
Tweet

More Decks by Yuta Adachi

Other Decks in Programming

Transcript

  1. ̂ 䝯䝹䜹䝸䚸ᕧ኱䝰䝜䝸䝇䛻䛚䛡䜛」㞧ᛶ䜢 䝸䝸䞊䝇̊ᖺ┠䛻䛧䛶䛹䛖ゎỴ䛩䜛䛛 ãƹƱó͸ėóĐŁŇ ¤O¤Ğƛ͸góŇĹŇ͸̃́̃̃

  2. ̃ 㻿㼛㼒㼠㼣㼍㼞㼑㻌㻱㼚㼓㼕㼚㼑㼑㼞䈊 㼀㼞㼍㼚㼟㼍㼏㼠㼕㼛㼚㻌㼀㼑㼍㼙㻘㻌㻹㼑㼞㼏㼍㼞㼕㻌㻶㻼䈊 㼅㼡㼠㼍㻌㻭㼐㼍㼏㼔㼕䈊

  3. ̄ ½ƛóŪƣóĐƱŇŵŪ͸½ĞóŨ䛾⤂௓ 䝖䝢䝑䜽 ᕧ኱䝰䝜䝸䝇͸͔͸ྲྀᘬ䝗䝯䜲䞁䛾ㄢ㢟 ㄢ㢟ゎỴ䛾䛯䜑䛾ྲྀ䜚⤌䜏 䜎䛸䜑 ́̃ ́̄ ́̅ ́̂

  4. ̅ ½ƛóŪƣóĐƱŇŵŪ͸½ĞóŨ䛾⤂௓

  5. ̆ ½ƛóŪƣóĐƱŇŵŪ͸½ĞóŨ Ɣ 䛂ྲྀᘬ䛃䛾䝣䝻䞊 Ɣ 䛂ྲྀᘬ䛃䜢䝃䝫䞊䝖䛩䜛ᶵ⬟ ż ྲྀᘬ䝯䝑䝉䞊䝆 ż 䜻䝱䞁䝉䝹⏦ㄳ

    ½ƛóŪƣóĐƱŇŵŪ䠄ྲྀᘬ䠅䝗䝯䜲䞁䛸䛿 ၟရ㉎ධ Ⓨ㏦ ホ౯ ྲྀᘬ᏶஢
  6. ̇ ½ƛóŪƣóĐƱŇŵŪ͸½ĞóŨ 㛵㐃䛩䜛䝗䝯䜲䞁䠄䝏䞊䝮䠅 ྲྀᘬ 䠄Ỵ῭䠅 0HUSD\ ၟရ 㓄㏦ ఍ィ ㏻▱

    䜽䞊䝫䞁
  7. ̈ ½ƛóŪƣóĐƱŇŵŪ͸½ĞóŨ Ɣ ⌧ᅾ䛾䝏䞊䝮䛿̃́̃̂ᖺ̂́᭶Ⓨ㊊ Ɣ ̊ྡయไ ż -ŪĹŇŪĞĞƛŇŪĹ͸tóŪóĹĞƛ ż ¤ƛŵėƹĐƱ͸tóŪóĹĞƛ͸͟͸̃ྡ

    ż ½ĞĐŁ͸jĞóė ż ¯ŵĸƱǒóƛĞ͸-ŪĹŇŪĞĞƛ͸͙óĐśĞŪė͚͸͟͸̆ྡ͸ 䝯䞁䝞䞊
  8. ̉ 䝗䝯䜲䞁▱㆑䛾㞟✚ Ɣ ┠ⓗ ż 䝗䝯䜲䞁▱㆑䜔᪤Ꮡ䛾䝁䞊䝗䝧䞊䝇䛾⌮ゎ䜢῝䜑䜛 ż 䝗䜻䝳䝯䞁䝖䜔㘓⏬䜢䜸䞁䝪䞊䝕䜱䞁䜾䛾䝁䞁䝔䞁䝒䛸䛧䛶฼⏝ Ɣ ෆᐜ

    ż ฼⏝䝅䝘䝸䜸͸͔͸䜰䜴䝖䜹䝮 ż ౫Ꮡ䛩䜛䝬䜲䜽䝻䝃䞊䝡䝇䜔䝔䞊䝤䝹䠄§Ä%䛾ศᯒ䠅 ż 䝇䝹䞊䝥䝑䝖͸͔͸㞀ᐖ᫬䛾䝴䞊䝄䞊ᙳ㡪 䜶䞁䝗䝫䜲䞁䝖㍯ㄞ఍
  9. ̊ ᕧ኱䝰䝜䝸䝇͸͔͸ྲྀᘬ䝗䝯䜲䞁䛾ㄢ㢟

  10. ̂́ ྲྀᘬ䝗䝯䜲䞁䛿」㞧䛺ᕧ኱䝰䝜䝸䝇䛾୰ Ɣ 䝯䝹䜹䝸䛾๰ᴗᮇ䛛䜙౑䜟䜜䛶䛔䜛䝁䞊䝗䝧䞊䝇䚸༢୍䛾䝸䝫䝆䝖䝸 Ɣ ࿘㎶䛾䝗䝯䜲䞁䛸䛾ቃ⏺䛜䛺䛟䚸‐↛୍య䛸䛧䛶䛔䜛 䝁䞊䝗䝧䞊䝇 ၟရ 㓄㏦ ྲྀᘬ

    Ỵ῭ ྲྀᘬ ㏻▱ 䜽䞊䝫䞁 ྲྀᘬ ఍ィ
  11. ̂̂ ᕧ኱䝰䝜䝸䝇͸͔͸ྲྀᘬ䝗䝯䜲䞁䛾ㄢ㢟 ㄢ㢟 Ɣ ᑠ䛥䛺ኚ᭦䛷䜒䝸䝸䞊䝇䛻᫬㛫䛜䛛䛛䜛 Ɣ ኚ᭦䛾ᙳ㡪⠊ᅖ䛾ㄪᰝ䛻䜒᫬㛫䛜䛛䛛䜛 ζ͸䝡䝆䝛䝇䛾ኚ໬䜔せồ䛻᪩䛟ᑐᛂ䛩䜛䛯䜑䚸䝯䞁䝔䝘䞁䝇ᛶ䜔ᣑᙇᛶ䜢ྥୖ䛥䛫䛯 䛔

  12. ̂̃ ྲྀᘬ䝗䝯䜲䞁䛾ㄢ㢟 ͇̂ ቃ⏺䛾䛺䛔䝰䝜䝸䝇䛻䛚䛡䜛䝗䝯䜲䞁㛫䛾」㞧䛺౫Ꮡ㛵ಀ ͇̃ ྲྀᘬ䝗䝯䜲䞁⮬య䛾ᕧ኱䛥 ཎᅉ 䜶䞁䝗䝫䜲䞁䝖 䠄O½½¤䠅 ̆́

    䝔䞊䝤䝹 䠄tǘ¯¦j䠅 ̈́ࠥ
  13. ̂̄ ㄢ㢟ゎỴ䛾䛯䜑䛾ྲྀ䜚⤌䜏 ᡓ␎䛸ᡓ⾡

  14. ̂̅ Ɣ 䝰䝆䝳䝷䞊䝰䝜䝸䝇䜈䛾⛣⾜ ż ༢୍䛾䝕䝥䝻䜲䝴䝙䝑䝖䜢䜻䞊䝥 ż 䝗䝯䜲䞁㛫䛾ቃ⏺䜢ᐃ⩏䛧䚸䝰䝆䝳䞊䝹䠄䝁䞁䝫䞊䝛䞁䝖䠅䛻ศ๭ ㄢ㢟ゎỴ䛾䛯䜑䛾ྲྀ䜚⤌䜏 ᡓ␎ ၟရ

    㓄㏦ ྲྀᘬ Ỵ῭ ྲྀ ᘬ ㏻▱ 䜽䞊䝫䞁 ྲྀ ᘬ ఍ ィ ྲྀᘬ ၟရ ఍ィ 㓄㏦ ㏻▱ 䜽䞊䝫䞁
  15. ̂̆ 䝰䝆䝳䝷䞊䝰䝜䝸䝇䛻⛣⾜䛩䜛ᡓ⾡ 䚉 䝁䞁䝫䞊䝛䞁䝖㛫䛾ቃ⏺䜢ᐃ⩏ 䚉 ୙ṇ䛺ቃ⏺㉺䛘䜢᳨ฟ䛩䜛䝒䞊䝹䠄౛ ͇͸%͸䛾┤᥋ཧ↷䠅 ͇̂͸౫Ꮡ㛵ಀ䛾ศᯒ͸͔͸ᐃ㔞໬ #,QWHUQDO 7UDQVDFWLRQXSGDWH

    6KLSSLQJ&RQWUROOHU XSGDWH6WDWXV jŵĹŇƣƱŇĐƣ͸ŵŨƘŵŪĞŪƱ ½ƛóŪƣóĐƱŇŵŪ͸ŵŨƘŵŪĞŪƱ
  16. ̂̇ ͇̂ ౫Ꮡ㛵ಀ䛾ศᯒ͸͔͸ᐃ㔞໬ Ɣ ÝŁóƱ ż 䝁䞁䝫䞊䝛䞁䝖䛾ቃ⏺䜢䜎䛯䛠䝁䞊䝗䜢᳨▱䛩䜛䝒䞊䝹 Ɣ Oŵǒ ż

    䜽䝷䝇䛤䛸䛻䜰䝜䝔䞊䝅䝵䞁䛷ୗグ䛾஧䛴䜢ᣦᐃ䛧䚸ቃ⏺䜢ᐃ⩏ Ŷ ᡤᒓ䛩䜛䝁䞁䝫䞊䝛䞁䝖͸͙ϋƘóĐśóĹĞ͸½ƛóŪƣóĐƱŇŵŪ͚ Ŷ 䜰䜽䝉䝇ಟ㣭͸͙ϋóƘŇ͸ŵƛ͸ϋŇŪƱĞƛŪóş͚ %ŵŨóŇŪ͸ŵƹŪėóƛǘ͸ÜŇŵşóƱŇŵŪ͸%ĞƱĞĐƱŇŵŪ
  17. ̂̈ ͇̂ ౛͸͟͸౫Ꮡ㛵ಀ䛾ศᯒ

  18. ̂̉ ͇̂ ౫Ꮡ㛵ಀ䛾ศᯒ͸͔͸ᐃ㔞໬ Ɣ §ĞĸĞƛĞŪĐĞ ż ¯ŁŵƘŇĸǘ͸䛾͸ÝĞėĹĞ͸䜢ཧ⪃䛻ᐇ⿦ Ɣ Oŵǒ ż

    㟼ⓗゎᯒ Ŷ ėĞƘŁƘĞŪė͉͸ŁƱƱƘƣ͉͔͔ĹŇƱŁƹď͇ĐŵŨ͔ŨŇŁóĞƹ͔ėĞƘŁƘĞŪė͸ Ŷ ¤O¤͟¤óƛƣĞƛ͉͸ŁƱƱƘƣ͉͔͔ĹŇƱŁƹď͇ĐŵŨ͔ŪŇśŇĐ͔¤O¤͟¤óƛƣĞƛ͸ ཧ⪃᝟ሗ
  19. ̂̊ 䝰䝆䝳䝷䞊䝰䝜䝸䝇䛻⛣⾜䛩䜛ᡓ⾡ 䚉 %➼䛾௦䜟䜚䛻¤U䜢ᐇ⿦䛧䚸䝁䞁䝫䞊䝛䞁䝖እ䛛䜙䛾┤᥋ཧ↷䜢ᅇ㑊 䚉 ༢୍䛾䝕䝥䝻䜲䝴䝙䝑䝖䛺䛾䛷䚸 ¤U䝞䞊䝆䝵䞁䜔஫᥮ᛶ䜢Ẽ䛻䛩䜛ᚲせ䛜䛺䛔 ͇̃͸䝁䞁䝫䞊䝛䞁䝖㛫䛾䜔䜚䛸䜚䛻౑⏝䛩䜛¤U䛾ᥦ౪ #$3, 8SGDWH7UDQVDFWLRQ6WDWXV

    6KLSSLQJ&RQWUROOHU XSGDWH6WDWXV ½ƛóŪƣóĐƱŇŵŪ͸ŵŨƘŵŪĞŪƱ #,QWHUQDO 7UDQVDFWLRQXSGDWH jŵĹŇƣƱŇĐƣ͸ŵŨƘŵŪĞŪƱ
  20. ̃́ ͇̃͸䝁䞁䝫䞊䝛䞁䝖㛫䛾䜔䜚䛸䜚䛻౑⏝䛩䜛¤U Ɣ ᐇ⿦᪉ἲ ż ¤O¤䛾䝯䝋䝑䝗䛸䛧䛶ᐇ⿦ ż ¦¯䠄ŵŨŨóŪė͸¦ƹĞƛǘ͸¯ĞƘóƛóƱŇŵŪ䠅䝇䝍䜲䝹 Ɣ 䜲䞁䝍䞊䝣䜵䞊䝇

    ż %½䠄%óƱó͸½ƛóŪƣĸĞƛ͸ďŘĞĐƱ䠅 Ŷ እ㒊䝁䞁䝫䞊䝛䞁䝖䛛䜙䜸䝤䝆䜵䜽䝖䛾≧ែ䜢ኚ᭦䛷䛝䛺䛔䜘䛖䛻 Ŷ ྲྀᘬ䝗䝯䜲䞁ෆ䛾䝻䝆䝑䜽䜢እ㒊䛻᫹䛥䛺䛔䜘䛖䛻 ᪉㔪
  21. ̃̂ ͇̃͸䝁䞁䝫䞊䝛䞁䝖㛫䛾䜔䜚䛸䜚䛻౑⏝䛩䜛¤U ྡ๓✵㛫 7UDQVDFWLRQ $3, 6KLSSLQJ &RPPDQG 3URFHVVRU &RPPDQG 4XHU\

    4XHU\ 3URFHVVRU 5HDG0RGHO &KHFNRXW 0HVVDJH
  22. ̃̃ 䝰䝆䝳䝷䞊䝰䝜䝸䝇䛻⛣⾜䛩䜛ᡓ⾡ 䚉 ྲྀᘬ䜢ᢅ䛖䝁䞁䝫䞊䝛䞁䝖䛿ᕧ኱䚸䝃䝤䝁䞁䝫䞊䝛䞁䝖༢఩䛷䝏䞊䝮䜢ᵓᡂ䛷䛝䜛䜘䛖䛻 ͇̄͸䝃䝤䝁䞁䝫䞊䝛䞁䝖䛻ศ๭ ½ƛóŪƣóĐƱŇŵŪ͸ŵŨƘŵŪĞŪƱ /LIHF\FOH 0DQDJHPHQW 6KLSSLQJ $FFRXQWLQJ

    &KHFNRXW 0HVVDJH 5HYLHZ
  23. ̃̄ 䝰䝆䝳䝷䞊䝰䝜䝸䝇䛻⛣⾜䛩䜛ᡓ⾡ /RJLVWLFV &RPSRQHQW ½ƛóŪƣóĐƱŇŵŪ͸ŵŨƘŵŪĞŪƱ /LIHF\FOH 0DQDJHPHQW 6KLSSLQJ $3, $FFRXQWLQJ

    $FFRXQWLQJ &RPSRQHQW $3, &KHFNRXW +773 &OLHQW $SS 0HUSD\
  24. ̃̅ ౫Ꮡ㛵ಀ䛾ศᯒ͸͔͸ᐃ㔞໬ ྛྲྀ䜚⤌䜏䛾≧ἣ 䝁䞁䝫䞊䝛䞁䝖㛫䛾䜔䜚䛸䜚䛻౑⏝䛩䜛¤U 䝃䝤䝁䞁䝫䞊䝛䞁䝖ศ๭ ́̃ ́̄ ́̂ ᏶஢ 㐍⾜୰

    㐍⾜୰
  25. ̃̆ ྛྲྀ䜚⤌䜏䛾≧ἣ Ɣ ෆ〇䝒䞊䝹䜢฼⏝䛧䛯౫Ꮡ㛵ಀ䛾᳨▱͸ό͸ᐃ㔞໬ ż ౫Ꮡ㛵ಀ䛾ศ㞳䛜䛹䜜䛟䜙䛔㐍ᤖ䛧䛶䛔䜛䛛ศ䛛䜛 ż ᆅ㐨䛺సᴗ䜢⥆䛡䜛䝰䝏䝧䞊䝅䝵䞁䜢ಖ䛶䛶䛔䜛 Ɣ ౫Ꮡ㛵ಀ䛾ศ㞳䛸䝃䝤䝁䞁䝫䞊䝛䞁䝖ศ๭タィ䛾ྠ᫬㐍⾜

    ż ⌮᝿ⓗ䛺≧ែ䜢䜲䝯䞊䝆䛧䛺䛜䜙䝸䝣䜯䜽䝍䝸䞁䜾䛷䛝䜛 䛖䜎䛟䛔䛳䛶䛔䜛䛣䛸
  26. ̃̇ ྛྲྀ䜚⤌䜏䛾≧ἣ Ɣ 䝍䝇䜽䛾౫Ꮡ㛵ಀ䜢ᩚ⌮䛫䛪䛻䝸䝣䜯䜽䝍䝸䞁䜾䜢㐍䜑䛶䛧䜎䛳䛯 ż 䝁䞊䝗䛾ὶ䜜䜔ᚠ⎔ⓗ䛺౫Ꮡ䜢⢭ᰝ䛧䛺䛔䜎䜎䝍䝇䜽䛻╔ᡭ䛧䚸ኚ᭦సᴗ 䛾䝁䞁䝣䝸䜽䝖䜔䝤䝻䝑䜽䛜㢖Ⓨ 䛖䜎䛟䛔䛛䛺䛛䛳䛯䛣䛸

  27. ̃̈ 䜎䛸䜑

  28. ̃̉ Ɣ ᕧ኱䛺¤O¤䛾䝰䝜䝸䝇䜢䛂䝰䝆䝳䝷䞊䝰䝜䝸䝇䛃䛻⛣⾜䛥䛫䛶䛔䜛 ż ౫Ꮡ㛵ಀ䛾ศᯒ͸͔͸ᐃ㔞໬ ż 䝁䞁䝫䞊䝛䞁䝖ศ๭ ż 䛂ྲྀᘬ䛃䛿䛥䜙䛻䝃䝤䝁䞁䝫䞊䝛䞁䝖䛻ศ๭ Ɣ

    䛂§ŵďƹƣƱ͸FŵƹŪėóƱŇŵŪ͸ĸŵƛ͸¯ƘĞĞė䛃䛸䛔䛖䝥䝻䝆䜵䜽䝖䛾୰䛾ྲྀ䜚⤌䜏 ż 䝥䝻䝆䜵䜽䝖≉タ䝨䞊䝆 䜎䛸䜑