
MSAã¢ãŒããã¯ãã£ã§äœ¿çšãããã²ãŒããŠã§ã€ãã¿ãŒã³ã®å®è£
July
ãã®ã¬ãã¹ã³ã§ã¯ãyamlãæŽ»çšããŠã«ã¹ã¿ã Gateway APIãèšå®ããããã»ã¹ã«ã€ããŠèª¬æããŸãã
åçŽ
Go, Kafka, MSA
statefulãµãŒãã¹ã«å¯ŸããŠã©ã®ããã«ãµãŒããŒãæ§ç¯ããç¡åæ¢ãããã€ãé²è¡ãããã®ãããã¹ãŠããæãããŸãã
åè¬ç 437å
é£æåºŠ åçŽ
åè¬æé ç¡å¶é


åŠç¿ããåè¬è ã®ã¬ãã¥ãŒ
5.0
ssez
ORMã䜿çšãããšãã®æ¬ ç¹ã«ã€ããŠèšåããŠããããšãã¯ãã£ããããŸãããããã§ãæè¿ã®ã¯ãšãªãã¥ãŒãã³ã°æã«ãã®ã³ã°ããŠã¿ãŸããã ä»åãæ¥œããèŠãŠããŸãã goãæ £ããŠããªãã®ã§ã第1åŒŸã«æ¯ã¹ãŠé²åºŠãã¡ãã£ãšããã£ã§ãããããæžããŠããªïœã£ãŠãŸãéãæ¥œãã¿ããããŸããïŒ ç§ãã¡ã®äŒç€Ÿã¯ç§ãå«ããŠ2人ã ãåããŠããŠïŒç§ã¯ãã«ã¹ã¿ãã¯ãã²ãšãã¯ä»£è¡šã§ãããdevopsãŸã§é 匵ã£ãŠãã ãããð ïŒã©ãããŠãå°ããªãµãŒãã¹ãéå¶ããŠããã®ã§âŠåè¬ãå§ããŸããããåã³å匷ããæã®ããã«ãšãããã§ããã æè¿æªæ¥ã«ã€ããŠæ©ã¿ãå€ãã£ãã®ã§ããããã¯ãæ©ããããé ã空ã«ããŠå匷ããã®ãæé«ã®ããã§ããé 匵ãã°å¥ã®è¬çŸ©ã«è¡ããŸã:)
5.0
DAN
go langãæžãããµãŒããŒãèŠãããšãã§ããŠããã£ãã§ãã
5.0
rnxogud123
è¯ãè¬çŸ©ããããšãããããŸãã
Kafkaãéããçºè¡/賌èªãã¿ãŒã³
MySQLãéããããŒã¿ç®¡ç
WSSéä¿¡ã«ãã倧容éãã£ããTPSåŠç
ã€ãã³ãã¹ããªãŒãã³ã°ã«ãããµãŒããŒç®¡ç
æ¬è¬çŸ©ã§ã¯ã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ã§äœ¿çšããããã£ããTPSã«ã€ããŠãStatefulãªãµãŒãã¹ãã©ã®ããã«ç®¡çãããéçºãããã®ãã«ã€ããŠåŠã¶ããšãã§ããŸãã
ãã®è¬çŸ©ã¯2ã€ã®èšèªã䜿çšããŠããŸãã
Golangãåªå çã«äœ¿çšããŠãã¹ãŠå®è£ ããæ¹æ³ã«ã€ããŠåŠã³
ãã®åŸåè¬ãããæ¹ã®ããã«ãã銎æã¿ã®ããNode.JSã§KafkaãæŽ»çšããæ¹æ³ãªã©ãæ§ã ãªèšèªãéããŠè¬çŸ©ãæ§æããŸããã
ããã«Kafkaãéããçºè¡/賌èªãã¿ãŒã³ãMySQLãéããããŒã¿ç®¡çãªã©ã倿§ã§æ¢åã«çµéšããããšã®ãªãããŒãã§è¬çŸ©ãæ§æããŸããã
è¬çŸ©ãåè¬ãããšãçããã¯KafkaãMySQLã«å¯Ÿããæ·±ãçè§£ãšStatefulãªãµãŒãã¹ã«å¯ŸããZero-downtime DeploymentãåŠç¿ããããšãã§ããŸãã
çããïŒïŒåçŽã«MVCãService-Repositoryã®ãããªãµãŒããŒã®æ§é ã§ã¯ãªãããµãŒããŒã®åºæ¬åœ¢æ ã«ã€ããŠèããããšã¯ãããŸããïŒ
å®åã§ã¯ãµãŒããŒã®åœ¢æ ã«ãã£ãŠZero-downtime Deploymentãå®è¡ãããããããšãããçšåºŠã®retryã蚱容ããããæ±ºãŸããŸãã

çãããéçºãããµãŒããŒã¯ããã®2ã€ã®æŠå¿µã®ãã¡1ã€ãå¿ ãé©çšãããŠéçºãå§ãŸããŸãã

äžè¬çãªHTTPãµãŒããŒãèããŠããã ããã°ãšæããŸãã
ç¶æ ãä¿æããªããããæ¡åŒµã«éåžžã«æå©ã§ãããçãããäžè¬çã«ãµãŒããŒãéçºãããªã
åºæ¬çã«StatelessãªãµãŒããŒã§æ§æãããŸãã
æã代衚çãªãµãŒããŒã®åœ¢æ ã ãšèŠãŠããã ããã°ãšæããŸãã
ãªããªãè§Šããããšã®ãªããµãŒããŒã®åœ¢æ ã§ãã
ãã®ãããªãµãŒããŒã®æ§é ã§ã¯ãwsãããã³ã«ã掻çšããŠéçºãé²ããã
ç¶æ ãç¶æãããããæ¡åŒµã«ã¯éåžžã«äžå©ã§ãããã³ãã¯ã·ã§ã³ãç¶æããããããªãœãŒã¹ã®ç¯çŽã«åœ¹ç«ã¡ãŸãã
ãã®è¬çŸ©ã§äž»ã«æ±ããµãŒããŒã®åœ¢æ ã§ãã

ãã®è¬çŸ©ã¯ç°¡åã«ã¯æ¥ããããšã®ã§ããªãè¬çŸ©ã ãšæèšã§ããŸãã
2ã€ã®åœ¢æ ã®ãµãŒããŒéçºãéããŠãçããã¯MySQLãSocketãæŽ»çšãã倧容éãã£ããTPSã«å¯ŸããåŠçãšãKafkaãæŽ»çšããZero-downtime Deploymentãã©ã®ããã«åäœã§ããã®ãã«ã€ããŠåŠç¿ããããšãã§ããŸãã
å ã»ã©ã®ç޹仿ã§ãç§ã¯é »ç¹ã«ãã®çšèªã䜿çšããŸããã
çŽèš³ãããšãç¡äžæãããã€ãæå³ããŸãã
çããã¯ã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ã§çªç¶ãµã€ãã䜿ããªããªã£ãããäžæãããçµéšã¯ãããŸããïŒ
ãŠãŒã¶ãŒåŽã§ã¯ããããã€ãé²è¡ããŠããã®ããããŠããªãã®ããåãããªãã»ã©ããµã€ãã«åœ±é¿ãäžããã«ãããã€ãé²è¡ããããšãZero-downtime DeploymentãšèšããŸãã
ãã®æ¹åŒã¯StatelessãªãµãŒãã¹ã§ã¯éåžžã«ç°¡åã«å®è£
ã§ããŸãã
ãããããµãŒããŒã®ç¶æ ãç¶æããStatefulãªãµãŒãã¹ã§ã¯éåžžã«é£ãããå€ãã®ãªãœãŒã¹ãæ¶è²»ããäœæ¥ã§ãã
ãã®è¬çŸ©ã§ã¯StatefulãªãµãŒãã¹ã«å¯ŸããŠKafkaãæŽ»çšããZero-downtime Deploymentãå®è£ ããæ¹æ³ã«ã€ããŠæ±ããŸãã
Kafkaã¯ã€ãã³ãé§ååStreamããŒã«ãšããŠããããªãã·ã¥/ãµãã¹ã¯ã©ã€ããã¿ãŒã³ã䜿çšããéã«éåžžã«é »ç¹ã«äœ¿ããããµãŒãã¹ã§ãã
å®éã«LinkedInã§éçºããå°å ¥ãããµãŒãã¹ã§ãããæ§ã ãªäŒæ¥ãKafkaãå°å ¥ããŠã€ãã³ãã«å¯Ÿããã¡ãã»ãŒãžã®æå€±ãªãããŒã¿ãåŠçããŠããŸãã
åè¬çã®çãããæãéèŠèŠãã¹ãç¹ã¯ããã«ã©ã¯ãã倿°ã®å€§äŒæ¥ã§ã¯Kafkaãå¿ é ã§äœ¿çšããŠããããã倧ãã«åœ¹ç«ã€ã¯ãã§ãã
ãã®è¬çŸ©ã§ã¯ãèªãlocalç°å¢ã«Kafkaç°å¢ãèšå®åã³æ§ç¯ããæ¹æ³ã«ã€ããŠãäŒãããå®éã«äœ¿çšããæ¹æ³ãŸã§ãäŒãããŠããŸãã
Kafkaã«é¢ããå 容ã¯ãå®éã®LinkedInã®éçºè ã§ããGwen Shapiraã®Kafka: The Definitive Guideã®å 容ãåºã«ã«ãªãã¥ã©ã ãæ§æãããŸããã
kafkaã®configç°å¢èšå®ããã³Brokerãzookeeperã®èµ·åãŸã§æ±ããŸãããããéããŠçããã¯å®éã«KafkaãæŽ»çšãããµãŒãã¹ãéçºããæ¹æ³ãšæ³šæç¹ã«ã€ããŠåŠã¶ããšãã§ããŸãã

socketéä¿¡ã«é¢ããããŒã¿ç®¡çåã³ãã£ããã«ãŒã ã«é¢ããããŒã¿ç®¡çãããµãŒãã¹æ§ç¯ã«é©ããMySQLãæŽ»çšããŠç®¡çããæ¹æ³ã«ã€ããŠåŠç¿ããORDER BYãPagingãªã©ã®ã¯ãšãªãçŽæ¥äœæããªããããµãŒããŒãæ§ç¯ããæ¹æ³ãåŠã¶ããšãã§ããŸãã

åã«1ã€ã®ãµãŒããŒãæ§ç¯ããã®ã§ã¯ãªããæ§ã ãªãµãŒããŒãæ§æãããããã®ãµãŒããŒã管çããControllerãµãŒããŒãæ§ç¯ãããªã©ãå€ãã®ãµãŒããŒäœæ¥ãéããŠLoad Balancerã鿥çã«çµéšããããšãã§ããKafkaã®Pub/Sub ModelingãæŽ»çšãããµãŒããŒéã®éä¿¡æ¹æ³ã«ã€ããŠçµéšããããšãã§ããŸãã


ããŒã«ã«ç°å¢ã§ã®Kafkaèµ·åæ¹æ³

MySQLãéãããã£ããã«ãŒã åã³ãã£ããããŒã¿ç®¡ç

websocketséä¿¡ãéããDBããŒã¿ã®åãæ±ã

Node.jsãGoãæŽ»çšããKafka掻çšåã³ãµãŒããŒç®¡ç
ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã³ããŒãžã§ã³(OS)ïŒWindowsãmacOSãLinuxãªã©ããã¹ãŠã®OSãå¯èœã§ãã
PCã¹ããã¯: ã€ã³ã¿ãŒãããæ¥ç¶ãå¯èœãªåºæ¬ã¹ããã¯ã®PC
å¿ ãç¡æã§å ¬éãããŠããåç»ãã確èªãã ãã!! çããããã®è¬çŸ©ã§åŠã¶ããšãã§ããå®éã«å®è£ ãããµãŒãã¹ã«é¢ããæ å ±ãå«ãŸããŠããŸãã
ãã®è¬åº§ã¯ååã®1匟è¬åº§ã«ç¶ãã远å çãªãµãŒãã¹æ§ç¯åã³ããŒã¿ç®¡çãšé åžã«ã€ããŠæ±ãè¬åº§ã§ãã
ã§ãã®ã§ãååã®è¬çŸ©ãåºã«è¬çŸ©ãç¶ããŠé²è¡ãããŸãã
ç°¡åã«ååã®è¬çŸ©ã§æ±ã£ããœãŒã¹ã³ãŒãã®èª¬æã¯è¡ãããŸãããåããŠèãæ¹ã¯éåžžã«æžæãå¯èœæ§ããããŸãã
ã§ãã®ã§ãããwsséä¿¡ããã£ãããµãŒããŒã«é¢ããç¥èããªãå Žåã¯ããã®è¬çŸ©ãå ã«åè¬ããŠããã ããã°ãè¬çŸ©ãåããäžã§å€§ããªå°é£ã¯ãªããšæããŸãã
ãã®è¬çŸ©ã®ç®æšã¯FEéçºã§ã¯ãªããws protocolã«é¢ããZero-downtime Deploymentã¢ãŒããã¯ãã£åã³ãµãŒããŒéçºãäžå¿ãšããŠããŸãã
ãªããªããç§ã¯FEãå°éãšããéçºè ã§ã¯ãªããBEãå°éãšããéçºè ã ããã§ãããã®ãããFEéçºã«ãããŠèª€ã£ãç¥èãäŒããæžå¿µããããããFEéçºã¯åäžãµãŒããŒã«å¯ŸããAPIåŠçã®ã¿é²è¡ããŠããŸãã
ã§ãã®ã§ã远å çãªZero-downtime Deploymentã®ããã®React State管çã¯è¬çŸ©ã§ã¯è¡ããŸããããã®éšåã¯è¬çŸ©ã§ãç¶ç¶çã«èšåããŠãããŸãã®ã§ããåèããã ããã°å¹žãã§ãã
åŠç¿å¯Ÿè±¡ã¯
誰ã§ãããïŒ
ãããªãã·ã¥/ãµãã¹ã¯ã©ã€ããã¿ãŒã³ã«èå³ãããæ¹
ã¹ããªãŒãã³ã°ãã©ãããã©ãŒã æ§ç¯ã«èå³ã®ããæ¹
ãã£ããããŒã¿ç®¡çã«ã€ããŠæ°ã«ãªãæ¹
ç¡é£ãªéçºæ¹åŒã§ã¯ãªããæ°ãããŠé¢çœãéçºãããŠã¿ããæ¹
MySQLãKafkaãå®åè ããåŠã³ããæ¹
åæç¥èã
å¿
èŠã§ããããïŒ
Golang [ è¬çŸ©ã®åºæ¬èšèªã§ããç¥ããªããŠã倧äžå€«ã§ãã ]
Node.js [åè¬çã®ããã®èšèªã§ããç¥ããªããŠã倧äžå€«ã§ãã]
3,872
åè¬ç
196
åè¬ã¬ãã¥ãŒ
88
åç
4.4
è¬åº§è©äŸ¡
15
è¬åº§
èªå·±ç޹ä»
éå°æ»åºèº«ã§ãçŸåšã¯æ¿æ©ïŒãã³ã®ã§ïŒã§ãã©ãããã©ãŒã ãµãŒããŒã®éçºãæ åœããŠããŸãã
ãµãŒããŒã®æé©åãæ§ã ãªã¯ãšãªãã¥ãŒãã³ã°ã奜ã¿ãç°¡åãªæ©èœãçããã«åãããããããã€è¿ éã«ãäŒãã§ããããåªããŠããŸãã
çµæŽ
[å] ãµã³ãããã¯ã¹ ãããã¯ãã§ãŒã³éçºè
[å] ãã¯ãœã³åäŒç€Ÿ ããã¯ãšã³ãéçºè
[å] æ¿æ©ïŒãã³ã®ã§ïŒå€§äŒæ¥ãã©ãããã©ãŒã ãµãŒããŒéçºè
[çŸ] æ¿æ©(ãã³ã®ã§)芪äŒç€ŸãµãŒããŒéçºè
å šäœ
31ä»¶ â (3æé 46å)
è¬åº§è³æïŒãããããããïŒ:
å šäœ
16ä»¶
4.4
16ä»¶ã®åè¬ã¬ãã¥ãŒ
åè¬ã¬ãã¥ãŒ 4
â
å¹³åè©äŸ¡ 5.0
5
ä»åã®è¬çŸ©ã第1匟ã«ç¶ããæçã«ããèŠãŸããã
2匟ã¯ããå°ãã¢ãŒããã¯ãã£ãªéšåãæ±ã£ãã®ã«æçã ã£ãã®ãããããŸãããã è¯ãè©äŸ¡ããããšãããããŸãïŒ
åè¬ã¬ãã¥ãŒ 11
â
å¹³åè©äŸ¡ 5.0
åè¬ã¬ãã¥ãŒ 9
â
å¹³åè©äŸ¡ 5.0
5
ORMã䜿çšãããšãã®æ¬ ç¹ã«ã€ããŠèšåããŠããããšãã¯ãã£ããããŸãããããã§ãæè¿ã®ã¯ãšãªãã¥ãŒãã³ã°æã«ãã®ã³ã°ããŠã¿ãŸããã ä»åãæ¥œããèŠãŠããŸãã goãæ £ããŠããªãã®ã§ã第1åŒŸã«æ¯ã¹ãŠé²åºŠãã¡ãã£ãšããã£ã§ãããããæžããŠããªïœã£ãŠãŸãéãæ¥œãã¿ããããŸããïŒ ç§ãã¡ã®äŒç€Ÿã¯ç§ãå«ããŠ2人ã ãåããŠããŠïŒç§ã¯ãã«ã¹ã¿ãã¯ãã²ãšãã¯ä»£è¡šã§ãããdevopsãŸã§é 匵ã£ãŠãã ãããð ïŒã©ãããŠãå°ããªãµãŒãã¹ãéå¶ããŠããã®ã§âŠåè¬ãå§ããŸããããåã³å匷ããæã®ããã«ãšãããã§ããã æè¿æªæ¥ã«ã€ããŠæ©ã¿ãå€ãã£ãã®ã§ããããã¯ãæ©ããããé ã空ã«ããŠå匷ããã®ãæé«ã®ããã§ããé 匵ãã°å¥ã®è¬çŸ©ã«è¡ããŸã:)
2人éçºãšããæ¬åœã«ç°¡åã§ã¯ãããŸãããå¿æŽããŸãïŒ ã©ãããç°¡åã«è§Šããããªãæ§ã ãªæŠå¿µãæäŸããŠããã ããªãããèŠæ¹ãåºããããšæããŸãããã ããããããè¬çŸ©ãããããæºåããã®ã§ããã圹ã«ç«ã£ããšæãããšãŠãå¬ããã§ããã åžžã«å®åã«å¯Ÿããçããè¡ãã®ã¯è¯ãå§¿ã®ããã§ããèªæ ¢ããããã¯äœãå§¿å¢ã§åãçµãã®ãç§ã¯æ£ãããšæããŸã ç§ãããã§ããã ã è¬çŸ©å 容ã®ã»ããæ©ã¿ã®ããéšåã質åããããŸããããæ°è»œã«è³ªåããŠãã ããããã®èããããªãããã«äººéçãªäººãªã®ã§ã ã ããããäŒè©±ããªãããäºãã«è§£æ±ºããŠããã®ããããšæããŸãã è¬çŸ©èããŠãããŠããããšãïŒ
åè¬ã¬ãã¥ãŒ 3
â
å¹³åè©äŸ¡ 5.0
5
1ç·šãš2ç·šãšãèŠãŸããããã£ãããµãŒããŒã®æ§æãããçšåºŠçè§£ã§ããããäžè¬çã«è§Šããããªã話é¡ã§æ§æãããè¯ãè¬çŸ©ã ãšæããŸãã
身äœãç¥ããªããšããâŠãããããè¯ãè¬çŸ©ã§ãè¿äºããããŸãïŒ
åè¬ã¬ãã¥ãŒ 5
â
å¹³åè©äŸ¡ 4.6
ç¥èå ±æè ã®ä»ã®è¬åº§ãèŠãŠã¿ãŸãããïŒ
åãåéã®ä»ã®è¬åº§ãèŠãŠã¿ãŸãããïŒ