ã¢ãžã¥ã©ã¢ããªã¹ã«ç§»è¡ããçç± â ãã€ã¯ããµãŒãã¹ã®èªåŸæ§ãšã¢ããªã¹ã®äžè²«æ§ãäž¡ç«ãããã¢ãœãã¥ãŒã®åãçµã¿
å€§èŠæš¡ãªãœãããŠã§ã¢éçºã«ãããŠã¢ããªã·ãã¯ããã€ã¯ããµãŒãã¹ããšããã¢ãŒããã¯ãã£ã®è°è«ããããŸãããè¿å¹Žã¯ç¬¬3ã®éžæè¢ãšããŠã¢ãžã¥ã©ã¢ããªã¹ã話é¡ã«ãªã£ãŠããŸãããã£ãããã€ã¯ããµãŒãã¹åã«èµãåããªããçŸåšã¯ã¢ãžã¥ã©ã¢ããªã¹ã«åãçµãã¢ãœãã¥ãŒã®èãæ¹ãé²ãæ¹ã«ã€ããŠãVPoEã®å Œå¹³å€§è³ïŒdisc99ïŒããã«ããå¯çš¿ã§ãã
ã¢ãœãã¥ãŒã§ã¯ãçŸåšã®äºæ¥ç¶æ³ã«ãããããŠããããšãéå»ã®çµç·¯ãããã¢ãžã¥ã©ã¢ããªã¹ãäžå¿ãšããã¢ãŒããã¯ãã£ãæ¡çšããŠããŸãã ä»åã¯ããªããã®éžæãããã©ã®ããã«å®çŸããŠãããã玹ä»ããŸãã
èšäºã®ååã§ã¯ãã¢ãœãã¥ãŒãæäŸããäºæ¥ããã¢ãŒããã¯ãã£ã«å¯Ÿããèãæ¹ãéçºçµç¹ã®æ©ã¿ãªã©ã説æããŸãã äžç€ä»¥éã¯ãã¢ãœãã¥ãŒã«ãããã¢ãžã¥ã©ã¢ããªã¹ãžã®åãçµã¿ã®è©³çްã«ã€ããŠè§£èª¬ããŸãã
- ã¢ãœãã¥ãŒã®äºæ¥ã®ç¹åŸŽãšãããŸã§ã®æ©ã¿
- ã¢ããªã¹ãšãã€ã¯ããµãŒãã¹ã®ç¹åŸŽããããŠã¢ãžã¥ã©ã¢ããªã¹
- ã¢ãžã¥ã©ã¢ããªã¹ã®ç¹åŸŽ â ã¢ããªã¹ããã³ãã€ã¯ããµãŒãã¹ãšã®æ¯èŒ
- çµç¹ãšã¢ãŒããã¯ãã£ã®é©åæ§
- ã¢ãœãã¥ãŒã«ãããã¢ãžã¥ã©ã¢ããªã¹ãžã®ã¢ãŒããã¯ãã£å€æŽ
- ã¢ãžã¥ã©ã¢ããªã¹ãç¶æããããã®ã«ãŒã«èšå®
- modulesããã±ãŒãžã®æ§é ãšèšèš
- sharedããã±ãŒãžã®äœ¿ãã©ãã
- ããã±ãŒãžéã®äŸåé¢ä¿
- protobufã«ããå ¬éã€ã³ã¿ãã§ãŒã¹
- ã¢ãžã¥ãŒã«éã®åæã¢ã¯ã»ã¹
- ã¢ãžã¥ãŒã«éã®éåæã¢ã¯ã»ã¹
- ã¢ãžã¥ãŒã«å ã®äŸåæ¹åã®ç®¡ç
- äŸå€çã«å ±æããŠããã¢ãžã¥ãŒã«
- ã¢ãžã¥ã©ã¢ããªã¹ã®æ¬ ç¹ãžã®å¯Ÿå¿
- DBã®åé¢ã«é¢ããèå¯
- ã¢ãžã¥ã©ã¢ããªã¹ãéçšããŠã¿ãŠ
ã¢ãœãã¥ãŒã®äºæ¥ã®ç¹åŸŽãšãããŸã§ã®æ©ã¿
ã¢ãœãã¥ãŒæ ªåŒäŒç€Ÿã§ã¯ã倧ããåããŠ2ã€ã®äºæ¥ãéå¶ããŠããŸãã
1ã€ã¯äžè¬ã®å©çšè ã«åããŠãéã³ã®äºçŽãµã€ããã¢ãœãã¥ãŒ!ããªã©ãéå¶ãããµãŒãã¹ECäºæ¥ã§ãããã1ã€ã¯ãã¬ãžã£ãŒäºæ¥è ã«é»åãã±ããã»äºçŽç®¡çãµãŒãã¹ããŠã©ã«ã¿ããªã©ãæäŸããSaaSäºæ¥ã§ãã
ã€ã¡ãŒãžãšããŠã¯ã楜倩ãAmazonã®ãããªã¢ãŒã«åECäºæ¥ãšãShopifyã®ãããªD2Cäºæ¥ã®äž¡é¢ã1瀟ã§éå¶ããŠããç¶æ ã§ãã ä»ã«ãã䞻軞ã®äºæ¥ã§å¹ã£ãã¢ã»ãããèç©ããããŒã¿ãçãããããŸããŸãªåšèŸºäºæ¥ããµãŒãã¹ãå€éšé£æºãå±éããŠããŸãã
ããããã®äºæ¥ã§æ¥åå 容ãåãåããŠãŒã¶ãŒã¯ç°ãªããŸãããæ±ããã¹ã¿ããŒã¿ã¯åããã®ãããŒã¹ã«ããŠããŸãã ãã®ããã衚åãã¯ããããã®äºæ¥ãç¬ç«ããŠåããŠããããã«èŠããŸãããè£åŽã§ã¯æ å ±ãå ±æã»é£æºããŠäºæ¥ãå±éããŠããŸãã
äžã®äžã«è€æ°ã®äºæ¥ãå±éããäŒæ¥ã¯æ°å€ãååšããŸãããããããåŒç€Ÿãšåãããã«ããã¬ããžãããŒã¿ã瀟å ã§æšªå±éãã€ã€ãµãŒãã¹ãæäŸããå Žåãå€ãã®ã§ã¯ãªãã§ããããã
å€åãç¶ããç°å¢ã»éçºçµç¹ã»ã¢ãŒããã¯ãã£
ã¢ãœãã¥ãŒã§ç«ã¡äžããããŸããŸãªäºæ¥ã«ã¯ãæ±ã«ãªããã®ãããã°ãå¥äºæ¥ãšçµ±åããããçµäºãããµãŒãã¹ããããŸãã æ°åã³ãããŠã€ã«ã¹ã®æµè¡ã®ããã«å€éšç°å¢ãäžç¬ã«ããŠå€ãã£ãããM&Aãªã©ãå éšèŠå ã«ãã£ãŠçµç¹ãæè¡èŠçŽ ãçæéã§å€§å¹ ã«å€åããããšããããŸãã
ããããå€åã«é©å¿ãç¶ããªããäºæ¥ãæé·ãããã«ã¯ãéçºçµç¹ãšã¢ãŒããã¯ãã£ã®é¢ä¿æ§ãé©åãªç¶æ ã«ä¿ã€å¿ èŠããããŸãã ã³ã³ãŠã§ã€ã®æ³åã瀺ãããã«ãçµç¹ãšã¢ãŒããã¯ãã£ã¯å¯æ¥ã«é¢ä¿ããããã§ãã
ããããããã§æ³šç®ããªããã°ãããªãã®ã¯ãäž¡è ã®ã©ã€ããµã€ã¯ã«ã®éãã§ãã çµç¹ãããŒã é 眮ã¯ããã®æ°ã«ãªãã°äŒç€Ÿã®æ¹é次第ã§ç¿æ¥ãã倿Žã§ããŸãã ãããã¢ãŒããã¯ãã£ãã·ã¹ãã ã¯ãçµç¹ã®ããã«ãã倿Žããããšãå°é£ã§ãã
ãã®èª²é¡ã解決ããã«ã¯ãäœããã®æ¹æ³ã§ã¢ãŒããã¯ãã£ãã·ã¹ãã ã®å€æŽå®¹ææ§ãé«ããããšãå¿ èŠã«ãªã£ãŠããŸãã å€åã®æ¿ããåžå Žç°å¢ãäºæ¥ç¶æ³ã®äžã§ãæè¡çãªå¶çŽã«ããæé·ãéåããããšã¯é¿ããªããã°ãªããŸããã ãŸããäºæ¥ãçµç¹ã®æé·ã«å¯ŸããŠçŽ æ©ãã·ã¹ãã ãé©çšãããããšãããã®éçšã§çºçããæè¡çè² åµããªãã¡ã¯ã¿ãªã³ã°ã»ãªãã¬ã€ã¹ã§ããããšãéèŠãªèŠçŽ ã«ãªã£ãŠããŸãã
ã¢ãœãã¥ãŒã®ã¢ãŒããã¯ãã£ã®å€é·ãšããããåŠãã ããš
åæ²ã®æ å ±ãèžãŸããŠããããŸã§ã¢ãœãã¥ãŒãã©ã®ãããªã¢ãŒããã¯ãã£ãéžãã§ããã®ãããããŠããããã©ã®ãããªã¢ãŒããã¯ãã£ãç®æããŠããã®ãã解説ããŸãã
ã¢ãœãã¥ãŒã®ã·ã¹ãã ã¯ãã¢ããªã¹ãªã¢ãŒããã¯ãã£ããå§ãŸããŸããã äŒç€Ÿãæé·ããã«äŒŽãæ°èŠäºæ¥ãç«ã¡äžããéã«ã¯ãã·ã¹ãã ãæ°èŠæ§ç¯ããŠããŸããã ãã®éžæã«ãã£ãŠãäºæ¥ãããŒã ãã·ã¹ãã ãç¬ç«æ§ãä¿ã¡ãèªåŸèªèµ°ã§ããã®ã§ãã ãã®çµæãè€æ°ã®ãµãŒãã¹ãäºæ¥ã®æ±ãšããŠæé·ããŸããã
ãããã£ãææãšçµç¹æ¡å€§ã«äŒŽããããã¢ãžãªãã£ãäžããŠèªå·±çµç¹åãé²ããããã2017幎ãããããã€ã¯ããµãŒãã¹åãžãšèµãåããŸããã ãã®ã¢ãŒããã¯ãã£å€æŽã«ã¯ãåœæã®ãã€ã¯ããµãŒãã¹ã®æµè¡ã圱é¿ããŠããŸãã ãã€ã¯ããµãŒãã¹åã¯ãçŽ æ©ããµãŒãã¹ã®ç«ã¡äžãããçæçãªæé·ã«ã¯å¹æçã§ããã
ããããé·æçãªèгç¹ã§èŠããšèª²é¡ãæ®ããŸããã ãµã€ãåã®ä¿é²ããå šäœæé©åã®é£æåºŠã®äžæãçµç¹äœå¶ãšã®ã¢ã³ãããããªãŒããŒããããªã©ã®åé¡ãå€ã çºçããããšã«ãªã£ãã®ã§ãã
ç§ãã¡ãã¢ããªã¹ãšãã€ã¯ããµãŒãã¹ã®éçšãçµéšããŠåŠãã ããšã¯ãã©ã®ããã«éçŽãšåæ£ãã³ã³ãããŒã«ããããéèŠããšããããšã§ããã ãã®è©³çްã¯ãããã€ã¯ããµãŒãã¹ã«ãã£ãŠèµ·ãã£ããµã€ãåã«å¯Ÿããåãçµã¿ããšããŠåŒç€Ÿã®ããã¯ããã°ã«ãŸãšããŠããŸãããèå³ããã°ã芧ãã ããã
ããããã®ã¢ãœãã¥ãŒãç®æãå§¿ãšã¢ãŒããã¯ãã£ã®éžæ
äºæ¥äŒç€Ÿã«ãããŠäºæ¥ã®æé·ã¯ãã¡ããéèŠã§ããããã®ããã«ã¯ãããã¯ããçµç¹ããããŠé¢ããäžäººäžäººã®ã¡ã³ããŒã®æé·ãéèŠã§ãã
ãããç°å¢ãçµç¹ãå€åãç¶ããäžã§ãåãããæ£è§£ãåãã£ãŠããããšã¯ãã£ãã«ãããŸããã æé·ãç¶ããã«ã¯ããã£ã¬ã³ãžãç¹°ãè¿ãããšãã§ããç°å¢ãäœããPDCAã®ãµã€ã¯ã«ã®äžã§æ£è§£ãèŠã€ããŠããå¿ èŠããããŸãã ãã®ãµã€ã¯ã«ãå®çŸããã«ã¯ãçµç¹ãæ¡å€§ããŠãããããã®ããŒã ãå¿ èŠä»¥äžã®ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããæ¯æãããšãªããèªåŸèªèµ°ã§ããç¶æ ãéèŠã§ãã
ãŸãçµç¹ãæ¡å€§ããŠããåã ã®éçºè ã«ã¯äŒæ¥ã®æ¯è»ã®ãããªç¶æ ã«ãªã£ãŠã»ãããããŸããã åºãé åã«é¢ãã£ãŠèœåãæå€§åããã€ãããŒã·ã§ã³ãèµ·ãããããµãŒãã¹ãäœãå€ãããã§ããã ãã®å€§ããªæš©éãšè£éããå šãŠã®ã¡ã³ããŒã«äžããããšèããŠããŸãã
äžæ¹ãã¢ãœãã¥ãŒã®ã·ã¹ãã çãªç¹åŸŽãšããŠãäºæ¥ãå€è§åããŠããµãŒãã¹éã§ããŒã¿ã®å ±æã»é£æºãå€ããšããããšããããŸããã
ããããçµéšãèžãŸããŠããããç®æãå§¿ãèãããšããã€ã¯ããµãŒãã¹ã®èªåŸæ§ãšãã¢ããªã¹ã®äžè²«æ§ãå šäœé©çšã®ã¹ããŒããšããåæ¹ã®ã¡ãªãããåãå ¥ããããšãçæ³ã§ããã ãã®ããæåãªã¢ãŒããã¯ãã£åè£ãšããŠãäž¡æ¹ã®ã¡ãªãããçããããšãã§ããã¢ãžã¥ã©ã¢ããªã¹ãæãããŸããã
ããã§ç§ãã¡ã¯ãã¢ãžã¥ã©ã¢ããªã¹ãžã®åãçµã¿ã2020幎ããã«å§ããã®ã§ãã
ã¢ããªã¹ãšãã€ã¯ããµãŒãã¹ã®ç¹åŸŽããããŠã¢ãžã¥ã©ã¢ããªã¹
ã¢ãœãã¥ãŒã«ãããã¢ãžã¥ã©ã¢ããªã¹ãžã®åãçµã¿ã®åã«ãã¢ããªã¹ããã€ã¯ããµãŒãã¹ããããŠã¢ãžã¥ã©ã¢ããªã¹ã«ã¯ããããã©ã®ãããªç¹åŸŽãããã®ãã«ã€ããŠãè§ŠããŠããæ¹ãããã§ãããã ã¢ãœãã¥ãŒã®è©±ãããã£ããé¢ããŠãäžè¬è«ãšããŠã¢ãŒããã¯ãã£ã®è§£èª¬ãããŠãããŸãã
ã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ã®ã¡ãªãã
ã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ïŒä»¥éãã¢ããªã¹ïŒã¯ãä»ã®éžæè¢ãšæ¯ã¹ãŠå®è£ ãç°¡åãªã¢ãŒããã¯ãã£ã§ãã éçºã«ãã¬ãŒã ã¯ãŒã¯ãå©çšããæå³çã«ã·ã¹ãã ãåé¢ããã¢ãŒããã¯ãã£ãé©çšããªããã°ãã¢ããªã¹ãªæ§æã«ãªãããšããããããŸãã
嵿¥åœåã®ã¢ãœãã¥ãŒãããã ã£ãããã«ãã»ãšãã©ã®ãµãŒãã¹ã§ã¯éçºã®åæãã§ãŒãºã«ãããŠãå°äººæ°ã®éçºè ã ãããããžã§ã¯ãã«é¢äžããŸãã ãããŠãçæéã§ã·ã¹ãã ãæ§ç¯ããããšãéèŠã§ãããäºæ¥ãšããŠå®å®ãããŸã§ã«å€ãã®ç Žå£ç倿Žãç¹°ãè¿ãããšãå€ãã§ãããã
ã¢ããªã¹ã¯ãããã£ããå°äººæ°ã§çŽ æ©ãå€§èŠæš¡ãªå€æŽãç¹°ãè¿ãéçºã¹ã¿ã€ã«ã®å Žåã«ãéåžžã«æåãªéžæè¢ã§ãã ãœãŒã¹ã³ãŒãã1ã€ã®ãªããžããªã«éçŽãããŸããããããã«å šäœãæ€çŽ¢ã§ããŸãã éçºç°å¢ã®æ§ç¯ã容æã§ããããµãŒãã¹å šäœã®çè§£ã»å€æŽãæå°éã®ãªãŒããŒãããã§è¡ããŸãã
ãã¹ãããããã€ãªã©ããåäžã®ã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠå®æœããã ãã§ãããDevOpsãªã©ã®äºæ¥æé·ã«çŽçµãã«ããäœæ¥ã®æéããæå°éã«ããããã§ãã ããŒã¿ããŒã¹ïŒä»¥äžãDBïŒãåäžã«ãªãããšãå€ããã·ã³ãã«ãªã¯ãšãªãŒã§å¿ èŠãªæ å ±ãæ±ãããšãã§ããŸãã
ã¢ããªã¹ã®å€§ããªã¡ãªãããšããŠãAPIãä»ããéä¿¡ãå¿ èŠãšãããä»ã®ã³ã³ããŒãã³ããçŽæ¥åŒã³åºãããšãã§ããŸãã ããã«ãããAPIã®ããŒãžã§ã³ç®¡çãåŸæ¹äºææ§ããããã¯ãŒã¯ã®ãšã©ãŒãã³ããªã³ã°ãªã©ãæèããå¿ èŠããããŸããã ããŒã¿ã®äžè²«æ§ããDBã®ãã©ã³ã¶ã¯ã·ã§ã³ãªã©ã§å®¹æã«å®çŸã§ããŸãã
ã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ã®ãã¡ãªãã
ããŸããŸãªã¡ãªãããããã¢ããªã¹ã§ããã倧ããªæ¬ ç¹ã¯å šãŠãå¯çµåã«ãªãããšã§ãã
容æã«ã³ã³ããŒãã³ããåå©çšã§ããã¡ãªããã¯ããã®åé¢ãçµå床ãèªç¶ãšé«ããªã£ãŠããŸããã¡ãªããããããããŸãã ãã®ãããã¢ããªã±ãŒã·ã§ã³ãçµç¹ãã¹ã±ãŒã«ããŠãããšã1ã€ã®å€æŽã«ãã圱é¿ç¯å²ã倧ãããªããã©ã®ãããªå¯äœçšãçããããèŠéãã¥ãããªããŸãã çµæããœãŒã¹ã³ãŒãããŒã¹ã§å šãŠãçè§£ããå¿ èŠæ§ãé«ããªã£ãŠããŸããéçºé床ã®äœäžããã°çºçã®ãªã¹ã¯ãªã©ãæ¥éã«å¢å ããŸãã
ãããã課é¡ã¯ãæ©æ¢°çã«è§£æ±ºã§ãããã®ã°ããã§ã¯ãããŸããã è€æ°ã®ã¹ããŒã¯ãã«ããŒãæ å ±é£æºããªããã°ãããŸã解決ã§ããªã課é¡ãå€ãã§ãã ãã®ãããå¿ ç¶çã«ããŒã ãçµç¹éããŸããã ã³ãã¥ãã±ãŒã·ã§ã³ãå¢ããŸãããéå£çãªæææ±ºå®ãå¿ èŠãšããããèªåŸæ§ã®äœäžã«ãã€ãªãããŸãã
ãŸããã·ã¹ãã ãåäžã®ã¢ããªã±ãŒã·ã§ã³ãšããŠå®è¡ãããŠããããã屿çãªãã°ãè² è·ãå šäœã«æ³¢åãããããªããŸãã ãã£ã1æ©èœã®é害ãå šãµãŒãã¹ããŠã³ãåŒãèµ·ãããŠããŸããªã©ãå€§èŠæš¡é害ã«é¥ãããããªããŸãã
ãã€ã¯ããµãŒãã¹ã®ã¡ãªãã
ã¢ããªã¹ã®èª²é¡ã解決ããããã®éžæè¢ã«ããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ïŒä»¥éããã€ã¯ããµãŒãã¹ïŒããããŸãã ãã€ã¯ããµãŒãã¹ã§ã¯å°ããªã¢ããªã±ãŒã·ã§ã³ãç¬ç«ããŠéçºã»ãããã€ããAPIã«ãã£ãŠçžäºã®é£æºãè¡ãããšã§å調åäœããŸãã
1ã€1ã€ã®ã¢ããªã±ãŒã·ã§ã³ãã©ã³ã¿ã€ã ã¬ãã«ã§åé¢ãããŠãããããåã¢ããªã±ãŒã·ã§ã³ã§ä»»æã®æè¡ãå©çšå¯èœã§ãã å®çŸãããèŠä»¶ãéçºè ã®ã¹ãã«ãšããŒãºã«åãããŠãé©åãªæè¡éžå®ãè¡ããŸãïŒãã ããç¹å®äŒæ¥å ã®åéçºããŒã ã§ããŸãã«ããã©ãã©ãªæè¡éžå®ãããŠããŸããšåŠç¿ã³ã¹ããéçšã³ã¹ããå¢å€§ããŸãããå šç€Ÿæšªæçãªæè¡æœçã宿œããããŒãã«ãé«ããªããŸãã ãã®ããå®éã«ã¯ããã€ã¯ããµãŒãã¹åãæšé²ããŠããäŒæ¥ã§ãã£ãŠããæ¡çšããæè¡ã«äžå®ã®å¶çŽãèšããã±ãŒã¹ãå€ãã§ãã ã¢ãœãã¥ãŒãããã§ããïŒã
ãŸããåã¢ããªã±ãŒã·ã§ã³ãç¬ç«ããŠãããã€ã§ããã®ãå©ç¹ã§ãã APIãªã©å€éšã«å ¬éãããã€ã³ã¿ãã§ãŒã¹ã«å€æŽããªããã°ãä»ã®ã¢ããªã±ãŒã·ã§ã³ãžã®åœ±é¿ãæ°ã«ããããšãªããããã€ãå¯èœã§ãããç¹å®æ©èœã®é害ãå šäœã«æ³¢åããå¯èœæ§ãäœãã§ãã çæ³çã«ã¯DBãªã©ãåé¢ããããšã§ã倿Žã®åœ±é¿åºŠãæå°åããã¢ããªã±ãŒã·ã§ã³åäœã§æè»ã«ã¹ã±ãŒã«ã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãšããæç¢ºãªå¢çãã§ãäžããããšã«ãããå¿ ç¶çã«ççµåãªèšèšã匷å¶ããããšããåŸåããããŸãã çµæçã«ãããŒã ãçµç¹ã§èªåŸæ§ãé«ãŸããã¢ãžãªãã£ã®äžæãæåŸ ã§ããŸãã
ãã€ã¯ããµãŒãã¹ãã¯ããã¯ãããåœåã¯ãåç€Ÿãææ¢ãã§é©åãªæ§ç¯ã»éçšæ¹æ³ã暡玢ããŠããŸãããçŸåšã§ã¯ãã¬ããžããšã³ã·ã¹ãã ãåºã浞éããçµéšè ãå¢ããŠãããããæ§ç¯ã»éçšã®ã³ã¹ãã¯ä»¥åããå§åçã«äžãã£ãŠããŸãã
ãã€ã¯ããµãŒãã¹ã®ãã¡ãªãã
äžæ¹ã§ããã€ã¯ããµãŒãã¹ã«ç§»è¡ããããšã§çºçããåé¡ããããŸãã
APIã«ããéä¿¡ãè¡ããšããããã¯ãŒã¯ãçµç±ããããããã©ãŒãã³ã¹å£åãä¿¡é Œæ§ã®äœäžãçºçããéä¿¡ã®ãšã©ãŒãã³ããªã³ã°ãå¿ èŠã«ãªããŸãã APIéã®æŽåæ§ãæ ä¿ããå¿ èŠãããããããœãŒã¹ã³ãŒãäžã®é¢æ°åŒã³åºããšæ¯ã¹ãŠå§åçã«é«ãæè¡ãšé«ã³ã¹ããªäœæ¥ãæ±ããããŸãã
ãŸããDBãªã©ã®ãã©ã³ã¶ã¯ã·ã§ã³ã䜿ããªããããã¢ããªã±ãŒã·ã§ã³ã¬ã€ã€ãŒã§åæ£ãã©ã³ã¶ã¯ã·ã§ã³ãå®çŸããå¿ èŠæ§ããããDBãåé¢ããŠããå Žåã«ã¯å¿ èŠãªããŒã¿ãåç §ããã³ã¹ããé«ãŸããŸãã
åã¢ããªã±ãŒã·ã§ã³ã®ãããã€ãåå²ããããããäŸåé¢ä¿ãäºææ§ãæèãããªãªãŒã¹ããã¹ããè¡ãã«ã¯ããã€ãã©ã€ã³ã®äœã蟌ã¿ãã¢ãã¿ãªã³ã°ã®æ¡å ãªã©ã®DevOpsã®è² æ ãå¢ããŸãã
éçºçµç¹å šäœãšããŠäžå®ä»¥äžã®ãµãŒãã¹å質ãéçºå¹çãå®çŸããã«ã¯ãç¹å®ã®æ©èœãæäŸããã¢ããªã±ãŒã·ã§ã³ãã©ã€ãã©ãªããµãŒãã¹ã¡ãã·ã¥ã®å°å ¥ãªã©ãå¿ èŠã«ãªãããµãŒãã¹ã®äŸ¡å€ãžçŽçµããªãäœæ¥ã«èŠããæéãå¢ããåŸåã«ãããŸãã
å šäœã®ã¢ãŒããã¯ãã£ãçè§£ããé£æåºŠãé«ãŸããŸãã E2Eã®æ©èœã確èªããããã®ãéçºç°å¢ã®æ§ç¯ããããã°ãªã©ãé£ãããªããŸãã ç¹ã«ã¢ããªã±ãŒã·ã§ã³ããŸãããããªä¿®æ£ã¯ãä¿®æ£é£æåºŠãé«ãã ãã§ãªããè€æ°ã®ããŒã éã®åæããããã€äœæ¥ã®èª¿æŽãå¿ èŠãšãªããŸãã
ãããã®ãã¡ãªãããæå°åããã«ã¯ãèªåŸæ§ãé«ããããæé©ãªã¢ããªã±ãŒã·ã§ã³å¢çãèŠæ¥µããå¿ èŠããããŸãã ããããå€åããç°å¢ãäºæ¥ãçµç¹ã®äžã§é©åãªçããåºãã®ã¯çžåœãªé£æåºŠã§ãã ã¢ããªã±ãŒã·ã§ã³å¢çã誀ã£ãŠããŸããšãã¢ããªã¹ãšãã€ã¯ããµãŒãã¹ã®æªããšãåããããã忣ã¢ããªã¹ããšããã¢ã³ããã¿ãŒã³ã«é¥ããŸãã
ã¢ãžã¥ã©ã¢ããªã¹ïŒã¢ããªã¹ã®äžè²«æ§ïŒãã€ã¯ããµãŒãã¹ã®ã¢ãžã¥ãŒã«æ§
ã¢ãžã¥ã©ã¢ããªã¹ãšã¯ãã¢ããªã¹ã®ãããªäžè²«æ§ãšããã€ã¯ããµãŒãã¹ã®ãããªã¢ãžã¥ãŒã«æ§ãæã£ãã¢ãŒããã¯ãã£ã§ãã ãããã€ããã¢ããªã±ãŒã·ã§ã³ãšããŠã¯1ã€ã§ãããã·ã¹ãã å éšã¯è€æ°ã®ã¢ãžã¥ãŒã«ã«åå²ãããŠããŸãã
æåãªäºäŸãšããŠã¯ãECãã©ãããã©ãŒã ã®ShopifyãæããããŸãã ã¢ããªã¹ã ã£ãRuby on Railsã®ã¢ããªã±ãŒã·ã§ã³ãã¢ãžã¥ã©ã¢ããªã¹ã«ç§»è¡ãã2019幎æç¹ã§1,000人以äžã®éçºè ãè¿ éãã€ç¶ç¶çã«æ°æ©èœãæ§ç¯ã§ããç°å¢ïŒ»åç»ïŒœãæ¯ããŠããŸãã
ãŸããæžç±ãã¢ããªã¹ãããã€ã¯ããµãŒãã¹ãžãïŒ2020幎ããªã©ã€ãªãŒã»ãžã£ãã³ïŒã§ã¯ã以äžã®ããã«ç޹ä»ãããŠããŸãã
ã¢ããªã¹ãã¢ãžã¥ãŒã«ã«åå²ããŠç¬ç«ããŠéçºã§ããããã«ããããšã§ããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®èª²é¡ã®å€ããåé¿ãã€ã€ãå€ãã®ã¡ãªãããæäŸã§ãããããã¯ãå€ãã®çµç¹ã«ãšã£ãŠã¹ã€ãŒãã¹ãããã«ãªãå¯èœæ§ãããã
æçµçã«ã¯ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã«ç§»è¡ããããšãç®çãšããŠã¢ããªã¹ãã¢ãžã¥ã©ãŒã¢ããªã¹ã«åè§£ãå§ãããã®ã®ãã¢ãžã¥ã©ãŒã¢ããªã¹ã§åé¡ã®ã»ãšãã©ã解決ã§ããããšãåãã£ããšãã話ãããããŸã§ã«è€æ°ã®ããŒã ããèããããšãããã
ã¢ãžã¥ã©ã¢ããªã¹ã®ç¹åŸŽ â ã¢ããªã¹ããã³ãã€ã¯ããµãŒãã¹ãšã®æ¯èŒ
ã¢ãžã¥ã©ã¢ããªã¹ã¯åªç§ãªã¢ãŒããã¯ãã£ã§ãããã¢ããªã¹ããã€ã¯ããµãŒãã¹ã®èª²é¡ãå šãŠè§£æ±ºããããã§ã¯ãããŸããã ãã®ãããã¢ãžã¥ã©ã¢ããªã¹ãæå¹æŽ»çšããã«ã¯ãã©ããã£ãç¹åŸŽãæã£ãŠããããçè§£ããå¿ èŠããããŸãã
éçºå®¹ææ§
1ã€1ã€ã®ã¢ããªã±ãŒã·ã§ã³ãã©ã³ã¿ã€ã ã¬ãã«ã§åé¢ããããã€ã¯ããµãŒãã¹ãšæ¯èŒãããšãã¢ãžã¥ã©ã¢ããªã¹ã¯åäžã®ã©ã³ã¿ã€ã ã§åäœãããããã¢ãžã¥ãŒã«éã®ã¢ã¯ã»ã¹ã§ã¯ã¢ããªã¹åæ§ã以äžã®ãããªã¡ãªããããããŸãã
- ãããã¯ãŒã¯ãå©çšããªãåçŽãªé¢æ°åŒã³åºã
- 察象ã¢ãžã¥ãŒã«ãåžžã«å©çšå¯èœ
- åŒã³åºãæã®éä¿¡ããªããããã»ãã¥ãªãã£ãªã©ã®èæ ®ãäžèŠ
- ã¢ãžã¥ãŒã«ãè¶ ãã倿ŽãäžåºŠã«å¯èœ
ãã€ã¯ããµãŒãã¹ã®å ŽåããœãŒã¹ã³ãŒãäžããããã¯ãŒã¯åŠçãæèãããããªåŠçãèšè¿°ããå Žåãå€ããREST APIãgRPCã®ãããªå°çšã®ãããã³ã«ãå©çšããå¿ èŠããããŸãã ãŸããåŒã³åºãå ã®ã¢ãžã¥ãŒã«ããããã¯ãŒã¯ãããŠã³ããå¯èœæ§ãã»ãã¥ãªãã£ãªã©ãèæ ®ãå¿ èŠãšãªããŸãã
ãã®ãããããããæºããããã®ã€ã³ãã©ãããã«ãŠã§ã¢ãªã©ãå¿ èŠãšãªãå Žåãå€ããè€é床ãé«ãŸãåŸåã«ãããŸãã è€é床ãé«ããšãä¿å®æ§ãå¯èªæ§ãå¯èŠ³æž¬æ§ãäœäžããé«ãã¹ãã«ã»ãããé«åºŠãªã€ã³ãã©ãç¶æããããã®ã«ã«ãã£ãŒãªã©ãå¿ èŠã«ãªããŸãã
ãŸããã¢ãžã¥ã©ã¢ããªã¹ã¯ã³ãŒãããŒã¹ãåäžã«ãªããããã·ã¹ãã å šäœã®ããŒã«ã«ç°å¢å®è¡ã容æã§ãã ãããŠãçŽ æ©ã倿Žããããã°ãããããã¢ãžã¥ãŒã«ããŸããã ãªãã¡ã¯ã¿ãªã³ã°ããããšãã£ãããšããIDEã®æ©èœã§å®å šã«å®æœã§ããŸãã E2Eãã¹ããªã©ã®ã·ã¹ãã å šäœã®åäœæ€èšŒããã¢ããªã¹åæ§ã«1ã€ã®ã¢ããªã±ãŒã·ã§ã³ãèµ·åããã ãã§å®æœã§ããŸãã
èªåŸæ§
ã¢ããªã¹ã¯å€ãã®å Žåãããããã®åŠçãå¯çµåã«ãªããæé·éçšã§å€æŽã³ã¹ããå¢å€§ããèªåŸæ§ãå€§å¹ ã«äžããŠããåŸåã«ãããŸãã ãã®ç¹åŸŽã¯ãçµç¹ãæ¡å€§ããŠããŒã ãèªåŸèªèµ°ããäžã§å€§ããªè¶³ãããšãªããŸãã
ã¢ãžã¥ã©ã¢ããªã¹ã§ã¯ãã€ã¯ããµãŒãã¹ãšåæ§ã«ãããŒã ãèªåŸããããã®è«ççãªå¢çãã¢ããªã±ãŒã·ã§ã³å ã§äœæããã¢ãžã¥ãŒã«ãšããŠåå²ããŸãã é©åã«ã¢ãžã¥ãŒã«åå²ããã°ãåããŒã ã®æ åœç®æãæç¢ºã«ãªãçµç¹ã®ã¡ã³ããŒãèªåŸçã«åããç¶æ ã«ãªããŸãã ããã«å ããŠãå¢çãå©çšããããšã§åœ±é¿ç¯å²ãæå°åã§ãããœãŒã¹ã³ãŒãä¿®æ£ã®ã³ã³ããªã¯ããåé¿ã§ããŸãïŒãã ãããã®ç¶æ ãå®çŸããã«ã¯ã¢ãžã¥ãŒã«å¢çãé©åã«å®ããå ±æéšåãã§ããã ãäœããªããšããèšèšäžã®æ³šæãå¿ èŠã«ãªããŸãïŒã
ãªãã·ã§ã³ã®éžæè¢ãšããŠããã©ã³ã¶ã¯ã·ã§ã³ãDBãªã©ãåé¢ããã°ããããªãèªåŸãä¿ãããšãã§ããŸãã ãŸãããã€ã¯ããµãŒãã¹ãšéããã¢ãžã¥ã©ã¢ããªã¹ã®å¢çã¯åäžã®ã³ãŒãããŒã¹ã«ååšãããã®ã§ãããããåå²ãããçŽãããšã容æã§ãã
äžæ¹ã§ããã€ã¯ããµãŒãã¹ã®ããã«åŒ·ãåé¢ã匷å¶ã§ããŸããããã®ããå¢çã®ç®¡çãææ§ã ãšãããããã®åŠçãå¯çµåãªç¶æ ãçã¿åºãå¯èœæ§ããããŸãã
ããã©ãŒãã³ã¹
ã¢ãžã¥ã©ã¢ããªã¹ã¯1ããã»ã¹ã1ã¹ã¬ããäžã®é¢æ°åŒã³åºãã§åŠçãå®çµããããããã€ã¯ããµãŒãã¹ãšæ¯ã¹ãŠããã©ãŒãã³ã¹ã¯éåžžã«é«ããªããŸãã
ãã€ã¯ããµãŒãã¹ã§ã¯ããããã¯ãŒã¯éä¿¡ãã·ãªã¢ã©ã€ãºãæå·åãªã©è€æ°ã®ãªãŒããŒããããçºçããã ãã§ãªãããããã¯ãŒã¯é害ãªã©ãå«ãããªãã©ã€åŠçããµãŒããããã¬ã€ã«ãŒãªã©ãå¿ èŠãšãªããŸãã
ã¢ããªã¹ãšæ¯èŒãããšãã¢ãžã¥ãŒã«ãåãããåããã©ãŒãã³ã¹é¢ã§ã¯ã¢ãžã¥ã©ã¢ããªã¹ã®æ¹ãäžå©ã«ãªããŸãããåäžã®ã©ã³ã¿ã€ã å ãªã®ã§æ¥µç«¯ã«ããã©ãŒãã³ã¹ãžã®åœ±é¿ãåºãå Žåã¯å°ãªãã§ãã
ãããã€
ãããã€ã«é¢ããŠã¯ã¢ããªã¹ãšåæ§ã§ãã ã·ã¹ãã å éšçã«ã¯ã¢ãžã¥ãŒã«åå²ãããŠããŠããããã±ãŒãžã³ã°åŸã¯åäžã®ã¢ããªã±ãŒã·ã§ã³ãšãªããããå®è¡ç°å¢ã«å®¹æã«å±éã§ããŸãã
å šãŠã®ã¢ãžã¥ãŒã«ãåæã«ãããã€ããããããåœç¶ãªãããã€ã¯ããµãŒãã¹ã®ããã«ã¢ãžã¥ãŒã«éã®äºææ§ãæèããããé«åºŠãªãããã€ãã€ãã©ã€ã³ãªã©ãäœã£ããããå¿ èŠã¯ãããŸããã
ãŸãããããã€äœæ¥ãäžåºŠã§å®äºãããããéçºè ããšãPull Requestããšã«ç°å¢ãäœããªã©ããã¹ãç°å¢ã®æ§ç¯ã容æã«ãªããŸãã çµæçã«ãDevOpsã®ãããªäºæ¥äŸ¡å€ã«çŽçµãã«ããæéãå€§å¹ ã«ççž®ã§ããŸãã
ã¹ã±ãŒã©ããªãã£
ã¢ãžã¥ã©ã¢ããªã¹ã§ã¯ãã¢ããªã¹åæ§ã«æ°Žå¹³ãŸãã¯åçŽã«ã¹ã±ãŒã«å¯èœã§ãã
ãã ããã©ã³ã¿ã€ã ã«ã¯å šãŠã®ã¢ãžã¥ãŒã«ãå±éãããããããã€ã¯ããµãŒãã¹ã®ããã«ç¹å®ã®ã¢ãžã¥ãŒã«ã®ã¿ã¹ã±ãŒã«ãããããšã¯å°é£ã§ãã
ãã€ã¯ããµãŒãã¹ã§ã¯ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã ããã¹ã±ãŒã«ãããããšãå¯èœãªããããªãœãŒã¹ã广çã«äœ¿çšå¯èœã§ãã
å¯çšæ§
ã¢ãžã¥ã©ã¢ããªã¹ã¯åäžã®ã©ã³ã¿ã€ã ã§å®è¡ãããããããã°ãæ··å ¥ããŠããããã©ã³ã¿ã€ã ã®ãªãœãŒã¹ã䜿ãæããã¢ãžã¥ãŒã«ããã£ããããå Žåã«ã¯ãã·ã¹ãã ã®å šäœé害ãžãšçºå±ãããããªããŸãã
ãã€ã¯ããµãŒãã¹ã§ã¯ã©ã³ã¿ã€ã ãåé¢ãããŠãããããäŸåã¢ãžã¥ãŒã«ããããããåãé¢ãã§ããããã«èšèšãããŠããã°ãé害ç¹ã屿åå¯èœã§ãã ãã ãæ³šæãå¿ èŠãªã®ã¯ãã€ã¯ããµãŒãã¹ã®äŸåèšèšã§ããã®èšèšã«ããŸã匷ãäŸåããŠããŸã£ãŠããç¶æ ã«ãªããšãããããã®ã¢ããªã±ãŒã·ã§ã³ã®çšŒåçãæãåããããŠããŸããåäžã®ã¢ããªã±ãŒã·ã§ã³ã®å¯çšæ§ããäžåã£ãŠããŸããŸãã
ã¢ãžã¥ã©ã¢ããªã¹ã§ãæ°Žå¹³ã¹ã±ãŒã«ãªã©ã«ããå¯çšæ§ãé«ããããšã¯ã§ããŸããããã€ã¯ããµãŒãã¹ã®ãããªæ©èœåäœã®åé¢ã¯å°é£ã§ãã
çµç¹ãšã¢ãŒããã¯ãã£ã®é©åæ§
ã¢ãŒããã¯ãã£ã®éžæã«ããã£ãŠã¯ãããããã®ç¹åŸŽãéçºçµç¹ã®èŠæš¡ãã¹ããŒãžãªã©ã«ãã£ãŠããã€ãèæ ®ãã¹ãããšããããŸãã
ããå°äººæ°ã§ã®éçºãä»®èšæ€èšŒãç¹°ãè¿ãã¿ã€ãã³ã°ã§ã¯ãã¹ããŒãã£ãŒã«ä¿®æ£ã§ããŠåŠçã®åå©çšãç Žå£ç倿Žã容æã§ãDevOpsãã€ã³ãã©ç®¡çãªã©ãåçŽãªã¢ããªã¹ã广çãªå¯èœæ§ãé«ãã§ãã
ããããéçºäººæ°ãããŒã ãããçšåºŠå¢ããŠããã¿ã€ãã³ã°ã§ã¯ãã¢ããªã¹ã¯ä¿®æ£ãããªããªãŒã®ã³ã³ããªã¯ããèªç¥è² è·ã®åäžãªã©ãçºçãããããªããŸãã ã¢ãžã¥ã©ã¢ããªã¹ã¯ãããã£ããèªåŸæ§ã圱é¿ç¯å²ã®å±æåã®éèŠæ§ãé«ãŸã£ãå Žåã«ã广çãªéžæè¢ã«ãªãããŸãã
ãŸãShopifyã®ããã«ãã¢ããªã¹ã®èª²é¡ã解決ããããã®ç§»è¡ãã¹ãšããŠéžæãããå ŽåããããŸãã ãã€ã¯ããµãŒãã¹ãžã®åãåºããã¢ãžã¥ãŒã«åäœã§ãããããªããããçµç¹ãã·ã¹ãã ã®ç¶æ ã«åãããŠæè»ãªå€æŽãããããã®ãç¹åŸŽã§ãã
æè¡çèªç±åºŠ
ã¢ãžã¥ã©ã¢ããªã¹ã¯åäžã®ã©ã³ã¿ã€ã ã§å®è¡ãããããããã€ã¯ããµãŒãã¹ã®ããã«ã¢ãžã¥ãŒã«ããšã«ä»»æã®èšèªããã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªãªã©ã䜿ãããšãå°é£ã§ãïŒè€æ°èšèªãå©çšã§ãããããªVMãªã©ãå©çšããã°äžéšç·©åã¯ã§ããŸãããããã§ãå¶çŽã¯å€ãã§ãïŒã
ç¹å®ã®èª²é¡ã«ç¹åããæè¡ãå¿ èŠãªå Žåããã®å¶çŽãåé¡ã«ãªãããšãããããŸãã ãŸããè¶ å€§æäŒæ¥ã®ããã«äººæãè±å¯ãªã±ãŒã¹ã«ãããŠã¯ãæè¡ã¹ã¿ãã¯ã®èªç±åºŠãé«ãããæ¹ãã€ãããŒã·ã§ã³ã«ã€ãªããããããªãå ŽåãååšããŸãã
ãããããã€ã¯ããµãŒãã¹åãé²ããŠããäŒæ¥ã§ãã£ãŠããå®éã«ã¯æè¡ã¹ã¿ãã¯ãç°å¢ãçµ±äžããŠãã¬ããžã®å ±æãããŠããããšãå€ãã§ãã èªç±åºŠãé«ããããšã«ã¯ã³ã¹ãããããããšãçè§£ããäžã§ãæè¡ãéžæããå¿ èŠããããŸãã
ã¢ãžã¥ãŒã«åå²ãšèªåŸæ§
ã¢ãžã¥ã©ã¢ããªã¹ã§ã¯ã¢ãžã¥ãŒã«æ§ãç¶æããããã«ãããã€ãéèŠãªèŠçŽ ããããŸãã ãŸãããã€ã¯ããµãŒãã¹ã®ããã«èªå·±å®çµããããžãã¹ãã¡ã€ã³ã«åãããã¢ãžã¥ãŒã«ãäœãããšãéèŠã§ãã
ã¢ããªã¹ãªã¢ãŒããã¯ãã£ã§ããå©çšãããã®ã¯ãUIãããžãã¹ããžãã¯ãããŒã¿ã¢ã¯ã»ã¹ãªã©æè¡çãªæ©èœãããšã«ããæ°Žå¹³æ¹åãžã®ã¢ãžã¥ãŒã«åå²ã§ãã ã¬ã€ã€ãŒãã¢ãŒããã¯ãã£ãã¯ãªãŒã³ã¢ãŒããã¯ãã£ããããµãŽãã«ã¢ãŒããã¯ãã£ãªã©ãåæ§ã«ã圹å²ã«ãã£ãŠæ°Žå¹³ã«åå²ãããŠããŸãã
ãããã£ãåå²ã®ã¡ãªããã¯ãããžãã¹ããžãã¯ãšæè¡èŠçŽ ãåãé¢ããæè¡ç倿Žã«å¯Ÿãã圱é¿ã責åãæç¢ºã«ããããããšã§ãã äžæ¹ã§ãããžãã¹çãªæ©èœè¿œå ã倿Žãããå Žåã«ã¯ãããããã®ã¢ãžã¥ãŒã«ã«è¿œå ã倿ŽãçºçããŸãã
å®éã®éçºã§ã¯ãæè¡çãªå€æŽããããžãã¹çãªå€æŽã®æ¹ãå§åçã«å€ãçºçããããããããã£ã倿Žãããããã®ã¢ãžã¥ãŒã«ã«åœ±é¿ãäžããŸãã è€æ°ã¢ãžã¥ãŒã«ã«åœ±é¿ãäžããã«åäžã®ã¢ãžã¥ãŒã«ã§ä¿®æ£ãå®çµããããããã¢ãžã¥ã©ã¢ããªã¹ã§ã¯å¿ èŠãªæè¡èŠçŽ ãåçŽæ¹åã«å šãŠå«ãã ã¢ãžã¥ãŒã«ãšããŠå®çŸ©ããŸãã
ãã®ããã«åå²ããããšã§ãåã¢ãžã¥ãŒã«ãããžãã¹ç倿Žã«å¯ŸããŠèªåŸçãªç¶æ ãç¶æããå®å®ãã倿Žãå¯èœã«ãªããŸãã
ã¢ãžã¥ãŒã«ã®ç¬ç«æ§ïŒé«åéãççµåïŒ
ã·ã¹ãã ãã¢ãžã¥ãŒã«ãšããŠåå²ããäžã§ãéèŠãªã®ãâç¬ç«æ§âã§ãã ãã®æ¡ä»¶ãæºããã«ã¯ãããã€ãã®èŠçŽ ããããŸãã
äŸåé¢ä¿ã®æ°
ããããã®ã¢ãžã¥ãŒã«ãå®å šã«ç¬ç«ãããã®ã¯çŸå®çã«äžå¯èœã§ãããäŸåé¢ä¿ã¯æå°éã«æããå¿ èŠããããŸãã 倿°ã®äŸåãçºçãããããªã¢ãžã¥ãŒã«ã¯ãããã ãç¬ç«æ§ãäœããªã£ãŠãããå€éšã®å€æŽã«åœ±é¿ãåãããäžããããããããªããŸãã
äŸåã®åŒ·ã
ã¢ãžã¥ãŒã«ã®ç¬ç«æ§ãç¶æããã«ã¯ãã¢ãžã¥ãŒã«éã®çµå床ãéèŠã«ãªããŸãã ã¢ãžã¥ãŒã«éã®åŒã³åºããé«é »åºŠã ã£ãããåæ¹åã§åŒã³åºããçºçããå Žåã«ã¯ãå¯çµåãªã¢ãžã¥ãŒã«ãšãªã£ãŠããå¯èœæ§ãé«ãã§ãã
ãããã£ãã¢ãžã¥ãŒã«ã¯åäœã§æ©èœãå®çµããã«ããã倿Žã®åœ±é¿åºŠã倧ãããªããŸãã ãã®ãããªã¢ãžã¥ãŒã«ã¯å¢çã誀ã£ãŠããå¯èœæ§ããããããã¢ãžã¥ãŒã«ã®ããŒãžãåãåºããªã©ãæ€èšããå¿ èŠããããŸãã
äŸåã¢ãžã¥ãŒã«ã®å®å®æ§
éçºãé²ããŠããéçšã§ãã¢ãžã¥ãŒã«ã®å€æŽã¯åžžã«çºçããŸãã 倿Žé »åºŠãå°ãªãã¢ãžã¥ãŒã«ãšæ¯ã¹ãŠã倿Žé »åºŠã®å€ãã¢ãžã¥ãŒã«ã«äŸåããä»ã®ã¢ãžã¥ãŒã«ã¯ãç¬ç«æ§ã®åœ±é¿ãåããå¯èœæ§ãé«ããªããŸãã ã€ãŸããäŸåå ã®ã¢ãžã¥ãŒã«ã«å€æŽãå ãããšãäŸåå ã®ã¢ãžã¥ãŒã«ã«ã倿Žããã¹ããå¿ èŠãšãªããŸãã
ã¢ãžã¥ãŒã«ã®å ¬éã€ã³ã¿ãã§ãŒã¹
ã¢ãžã¥ã©ã¢ããªã¹ã§ã¯ãã¢ãžã¥ãŒã«éã§ã®å¥çŽãšãªãå ¬éã€ã³ã¿ãã§ãŒã¹ãå¿ èŠã«ãªããŸãã ãã®å¥çŽãå®ããã«éçºããå Žåãã¢ãžã¥ã©ã¢ããªã¹ã¯æçµçã«ã¢ããªã¹ãšåæ§ã«1ã€ã®ã©ã³ã¿ã€ã ã«éçŽãããŸããããã¢ãžã¥ãŒã«å éšãžã®ã¢ã¯ã»ã¹ã容æã«å¯èœã«ãªããèªåŸæ§ãç¶æã§ããªããªããŸãã
ãã®ããåã¢ãžã¥ãŒã«ã§ã¯ããã®ãšã³ããªãŒãã€ã³ããšãªãå ¬éã€ã³ã¿ãã§ãŒã¹ãå®çŸ©ããŸãã ããã¯ããããã«ãã»ã«åã§ãããã¢ãžã¥ãŒã«ã§ã¯ãã®å®çŸ©ãå®å®ãããããšã§ãã€ã³ã¿ãã§ãŒã¹ãå€ãããªãéããå éšå€æŽãèªç±ã«è¡ãããšãå¯èœã§ãã
å ¬éã€ã³ã¿ãã§ãŒã¹ã«ã¯ããã€ãã®ãã¿ãŒã³ããããåçŽãªé¢æ°åŒã³åºãããREST APIãªã©ãå©çšããåæçãªãã®ãPub/Subãªã©ãå©çšããéåæã®ãã®ãªã©ãå«ãŸããŸãã
ã©ã®ã¢ãŒããã¯ãã£ãéžã¶ã®ã
ã¢ãžã¥ã©ã¢ããªã¹ãéã®åŒŸäžžãšããããšã¯ãªããã¢ããªã¹ããã€ã¯ããµãŒãã¹ãšæ¯ã¹ãŠãããŸããŸãªãã¬ãŒããªããååšããŸãã
ããããShopifyã»ã©ã®ãŠãŒã¶ãŒæ°ããã©ãã£ãã¯ãæ±ããŠãããµãŒãã¹ãã1,000人以äžã®èŠæš¡ã®éçºãå®çŸã§ããŠããããšãèãããšãã¢ããªã¹ã§ã®éçºã«èª²é¡ããããå®å šãªãã€ã¯ããµãŒãã¹ãžç§»è¡ãããªãŒããŒããããé«ããšèããäŒæ¥ã«ãšã£ãŠãã¢ãžã¥ã©ã¢ããªã¹ã¯æåãªéžæè¢ã«ãªããŸãã
ãŸããã¢ãžã¥ã©ã¢ããªã¹ããã€ã¯ããµãŒãã¹ãã®2å è«ã§èããå¿ èŠã¯ãªããé©åã«èåãããããšãå¯èœã§ãã å®éã«Shopifyã§ããäžéšã®ã¢ããªã±ãŒã·ã§ã³ã«é¢ããŠã¯ãã¢ãžã¥ã©ã¢ããªã¹ããåãé¢ããŠéçºããŠããäºäŸã玹ä»ãããŠããŸãã
ãããã®éžæè¢ãå®çžŸãéå»äœãäžããŠããè³ç£ãçãããã¢ãœãã¥ãŒã§ã¯ã¢ãžã¥ã©ã¢ããªã¹ãäžå¿ãšããã¢ãŒããã¯ãã£ã«åãçµãã§ããŸãã ããããã¯ãã¢ãœãã¥ãŒã§å ·äœçã«ã©ã®ãããªæ§æã§ã¢ãžã¥ã©ã¢ããªã¹ãå©çšããŠãããã玹ä»ããŸãã
ã¢ãœãã¥ãŒã«ãããã¢ãžã¥ã©ã¢ããªã¹ãžã®ã¢ãŒããã¯ãã£å€æŽ
ã¢ãœãã¥ãŒã§ã¯ããããŸã§ãã€ã¯ããµãŒãã¹åãé²ããŠããæŽå²ããããããããçšåºŠã¯ã¢ããªã±ãŒã·ã§ã³ãåé¢ãããç¶æ ãšãªã£ãŠããŸãã ãŸããã€ã¯ããµãŒãã¹ã®éçšãæ¯ãããããKubernetesã«ããå®è¡ç°å¢ããAPI Gatewayã«ããéçŽã¬ã€ã€ãŒãå©çšããŠããŸããã ãã®ãããã¢ãžã¥ã©ã¢ããªã¹åãè¡ãäžã§æå©ã«åãæè¡çåºç€ããããçšåºŠã¯ååšããŸãã
çŸåšãã¢ãžã¥ã©ã¢ããªã¹åãé²ããŠããã®ã¯ãäž»ã«API Gatewayã®ããã¯ãšã³ããšãªããã³ã¢ããžãã¯ãæ¯ããã¢ããªã±ãŒã·ã§ã³ã§ãã äžåºŠã«å šãŠãçµ±åããã®ã§ã¯ãªããç·©ããã«ã³ã¢æ©èœãã¢ãžã¥ã©ã¢ããªã¹ã®æ¹ã«éçŽããŠããæ¹åæ§ã§ãã¢ãŒããã¯ãã£å€æŽãé²ããŠããŸãã
ã¢ãœãã¥ãŒã®Webããã³ããšã³ãã¯SPAåãé²ãã§ãããããã¢ãžã¥ã©ã¢ããªã¹ã¢ããªã±ãŒã·ã§ã³ã§ã¯HTMLãªã©ã®ã¬ã³ããªã³ã°ãè¡ãããgRPCã§éä¿¡ããAPI Gatewayã§JSONãžãšå€æããŠããŸãã UIã«é¢ããéçŽåŠçãªã©ã¯ãAPI Gatewayãããã³ããšã³ãã§çŽæ¥è¡ãããšãå€ããªã£ãŠããŸãã
ã¢ãžã¥ã©ã¢ããªã¹å ã«éçŽçšã®UIã¬ã€ã€ãŒãæ§ç¯ããèšèšã¯çšããŠããŸããã ããããèšèšã«ããŠããŸããšãéå»ã«æ§ç¯ããŠãŸã ã¢ãŒããã¯ãã£å€æŽãè¡ã£ãŠããªãããã¯ãšã³ãã¢ããªã±ãŒã·ã§ã³ãªã©ãâã¢ãžã¥ã©ã¢ããªã¹å€âã®èŠçŽ ã«äŸåããéçŽç®æãç¹åšããããšã«ãªãããã§ãã
ã¢ãžã¥ãŒã«ã®èšèšãšæ§æ
ããããã¯ã¢ãœãã¥ãŒã®ã¢ãžã¥ã©ã¢ããªã¹ã®å éšæ§æã«ã€ããŠç޹ä»ããŠãããŸãã
ãŸããã¢ãžã¥ãŒã«ãã©ã®ããã«æ§æããŠãããã«ã€ããŠã§ãã ã¢ãœãã¥ãŒã§ã¯ã¡ã€ã³èšèªãšããŠJavaããã¬ãŒã ã¯ãŒã¯ãšããŠSpring Bootããã«ãããŒã«ãšããŠGradleãå©çšããŠããŸãã Javaã®å Žåãã¢ãžã¥ãŒã«ãäœãæ¹æ³ã«ã¯ããã€ãã®éžæè¢ããããŸãã
- Maven/Gradleã®ãã«ãã¢ãžã¥ãŒã«æ©èœ
- Java 9ã®ã¢ãžã¥ãŒã«ã·ã¹ãã ãå©çš
- ããã±ãŒãžã¬ãã«ã§é©åãªã«ãŒã«ãèšå®ãåå²
ã¢ãœãã¥ãŒã§ã¯ã3ã€ãã®ãããã±ãŒãžã¬ãã«ã§é©åãªã«ãŒã«ãèšå®ãåå²ããéžæããŠããŸãã
Gradleã®ãã«ãã¢ãžã¥ãŒã«æ©èœã¯ç€Ÿå ã§ãéå»ã«åºã䜿ãããŠããŸããã ã¢ãžã¥ãŒã«ã®ç®¡çãäŸåé¢ä¿ã®ã³ã³ãããŒã«ãªã©ãæšæºã§çµã¿èŸŒãŸããŠãããã䟿å©ã§ãã ãããããæ ã«ãå šäœãžã®åœ±é¿ãçè§£ããªããŸãŸã©ã€ãã©ãªã®è¿œå ãèšå®ãããŠããŸãã±ãŒã¹ãå¢å ããçµæçã«éçšã³ã¹ããé«ãŸãåŸåã«ãããŸããã
å ããŠãSpringã¯DIãAOPãªã©ã©ã³ã¿ã€ã ã§å®è¡ãããåŠçãå€ããããèšå®ã忣ãããšå®è¡æã«èµ·ããåé¡ãäºæž¬ãã¥ãããªãã誀ã£ãèšå®ã«ãã£ãŠå šäœãžã®åœ±é¿ãçããåé¡ãæ±ããŠããŸããã ã¢ãžã¥ã©ã¢ããªã¹ã§ã¯ã¢ãžã¥ãŒã«ãåå²ããŠãæçµçã«ã¯1ã€ã®ã©ã³ã¿ã€ã ã«éçŽããããããå šäœã«åœ±é¿ããèšå®ãé èœãããããæè¡ã¯ããªãã¹ãæ¡çšããããããŸããã
ãŸããJava 9ã®ã¢ãžã¥ãŒã«ã·ã¹ãã ãäŸåé¢ä¿ã®ã³ã³ãããŒã«ãšããŠã¯Gradleçžåœã®ããšãã§ããã¯ã©ã¹ã¬ãã«ã§äŸåã®ã³ã³ãããŒã«ãã§ãããšããã¡ãªããã¯ãããŸãããããã¯ãã©ã³ã¿ã€ã ã®åé¡ã解決ã§ããªãããèŠéããŸããã
ã«ãŒã«ããŒã¹ã«ããããã±ãŒãžã®åå²
åè¿°ã®èæ¯ãèžãŸããŠãæçµçã«ã¯Gradleã®ã·ã³ã°ã«ã¢ãžã¥ãŒã«ãçšããŠãããã±ãŒãžãã«ãŒã«ããŒã¹ã§åå²ããããšã«ããŸããã
ã«ãŒãã«ã¯ãmodulesãšsharedãšãã2ã€ã®ããã±ãŒãžãååšããŠããŸããmodulesé äžã«ã¯ãåå²ãããåã¢ãžã¥ãŒã«ãæ ŒçŽãããŠããŸãã ãã®ã¢ãžã¥ãŒã«ã¯ããã€ã¯ããµãŒãã¹ã§èšãã°1ã€ã®ãµãŒãã¹ã«ãªããããªæ§æã«ãªã£ãŠãããDDDïŒãã¡ã€ã³é§åèšèšïŒã®å¢çã¥ããããã³ã³ããã¹ããæèããŠããŸãã
sharedããã±ãŒãžã¯ããã€ã¯ããµãŒãã¹ã§å©çšããŠããæè¡çå ±éã¬ã€ã€ãŒããéçºããµããŒãããã³ã³ããŒãã³ããå®çŸ©ããŠããŸãã ãã®sharedããã±ãŒãžãè¥å€§åãããšã¢ããªã¹ãžå·»ãæ»ã£ãŠããŸããããã§ããã ãå©çšããªãããã«ããŠãåã¢ãžã¥ãŒã«ã«äŸåããåŠçã¯é 眮ããªãããã«ããŠããŸãã
ãŸãJavaã®å Žåãpublicã¡ãœããã¯ã¢ããªã±ãŒã·ã§ã³å ããèªç±ã«åç §ã§ããŠããŸããããåã¢ãžã¥ãŒã«ã®å ¬éã€ã³ã¿ãã§ãŒã¹ã«ã®ã¿ã¢ã¯ã»ã¹ãããå éšåŠçã«ã¯ã¢ã¯ã»ã¹ããªãããã«ããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³å šäœã«åœ±é¿ãããããªèšå®ã¯ãã«ãŒãã®ã¯ã©ã¹ã«äžæ¬ã§éçŽããŠããŸãã 1ãã¡ã€ã«ãããã®èšè¿°éã¯å¢ããŸãããåå²ãããŠã©ã³ã¿ã€ã ã§çµåãããããåé·ã§ãèŠéãã¯ãããªããšèããŠããŸãã
ArchUnitã«ããã«ãŒã«ã®æ€èšŒ
äžæ¹ããããã£ãã«ãŒã«ãéçºè å šå¡ãçè§£ããåžžã«æèããªããéçºããã®ã¯ããªãã³ã¹ããããããŸãã
ãã®ããã¢ãœãã¥ãŒã§ã¯ããããã£ãã«ãŒã«ãç¶æãããããArchUnitãå©çšããŠããŸãã ArchUnitã¯Javaã®ãœãŒã¹ã³ãŒããè§£æããé©åãªã«ãŒã«ãå®ã£ãŠãããããŠããããã¹ãã«ãã£ãŠæ€èšŒããŠãããŸãã
public class ArchitectureTest { String root = "com.asoview.modularmonolith"; String shared = "com.asoview.modularmonolith.shared"; String modules = "com.asoview.modularmonolith.modules"; JavaClasses CLASSES = new ClassFileImporter() .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) .importPackages(root); @Test void moduleããã±ãŒãžãå ¬éã€ã³ã¿ãã§ãŒã¹ä»¥å€ã®å€éšã®moduleã«äŸåããªãããš() { noClasses() .that().resideInAPackage(modules + "..") .should() .dependOnClassesThat(new DescribedPredicate<>("moduleããã±ãŒãžã«å¥moduleããã±ãŒãžã®äŸåãååšããã") { @Override public boolean apply(JavaClass clazz) { // ... return result; } }) .check(CLASSES); } @Test void moduleéã®åæçäŸåã¯åæ¹åã«ä¿ãããŠããããš() { // ... } // ... }
ãããã£ããã¹ããpre-commitãCIã§å®è¡ããããšã«ãããã·ã³ã°ã«ã¢ãžã¥ãŒã«ã§ãå šãŠã®éçºè ãé©åãªã«ãŒã«ãç¶æã§ããããšãä¿èšŒããŠããŸãã ãŸããJavaã®ãŠããããã¹ãã§ãããããGradleãJava 9ã®ã¢ãžã¥ãŒã«ãšæ¯ã¹ãŠãæè»ã§çްããªã«ãŒã«èšå®ãè¡ãããããšããããšããããŸãã
ãã®ä»ã«ããã·ã³ã°ã«ã¢ãžã¥ãŒã«ã§ãããããã¢ãžã¥ãŒã«ããŸããã§ãªãã¡ã¯ã¿ãªã³ã°ãªã©ãè¡ãå Žåã«ãç¹æ®ãªä»çµã¿ãæèããå¿ èŠã¯ãªããéåžžã®ããã±ãŒãžããŸããã ã³ãŒãä¿®æ£ã§å®çµããŸãã éã«ã«ãŒã«ãå€ããå Žåã¯ããŠããããã¹ãã倿Žããã ãã§æžããšããã¡ãªããããããŸãã
ã³ã³ãã€ã©ã¬ãã«ã§äŸåãå®çŸ©ã§ããªããšãã匱ç¹ã¯ãããŸãããSpringã§ã¯å®è¡æã«ãªãã¬ã¯ã·ã§ã³ã«ãã£ãŠè§£æ±ºãããé åãå€ããããçŸæç¹ã§ã¯ããŒã¿ã«ã§èŠãŠArchUnitã®æ©èœã§å¿ èŠååã ãšèããŠããŸãã
ã¢ãžã¥ã©ã¢ããªã¹ãç¶æããããã®ã«ãŒã«èšå®
ã¢ãžã¥ã©ã¢ããªã¹ã§ã¯ãäžå®ã®ã«ãŒã«ãããšã«ã¢ãžã¥ãŒã«ãç¶æããå¿ èŠããããŸãã ããã§ã¯ãã¢ãœãã¥ãŒã§ã©ã®ãããªã«ãŒã«ãèšå®ããŠãããã玹ä»ããŸãã
ãããã玹ä»ããèšå®ã¯ãåè¿°ããããã«å šãŠArchUnitã«ãã£ãŠã«ãŒã«å®çŸ©ãããŠããããã¹ãã«ãã£ãŠæŽåæ§ãä¿èšŒããŠããŸãã ãŸããåå²ããããã±ãŒãžã®è©³çްãã説æããŸãã
modulesããã±ãŒãžã®æ§é ãšèšèš
modulesããã±ãŒãžã¯ãåã¢ãžã¥ãŒã«ã®ã«ãŒãããã±ãŒãžã§ãã ãã®é äžã«ã¯ãããããã®ã¢ãžã¥ãŒã«ããšã«ç¬ç«ããããã±ãŒãžãçšæããŠãããçŸåšã¢ãœãã¥ãŒã§ã¯20çšåºŠã®ããã±ãŒãžïŒïŒã¢ãžã¥ãŒã«ïŒãååšããŠããŸãã ããããã®ã¢ãžã¥ãŒã«å ã§ã¯ãå°ããªã¢ããªã±ãŒã·ã§ã³ãäœããããã«ãªã£ãŠããŸãã
åã¢ãžã¥ãŒã«ã§ã¯ãçŸåšããã©ã«ãã®æ§é ãšããŠãã¬ã€ã€ãŒãã¢ãŒããã¯ãã£ïŒDIPãããŒã¹ã«ãCQRSãåãå ¥ããæ§æãæ¡çšããŠããŸãã ã¬ã€ã€ãŒãã¢ãŒããã¯ãã£ïŒDIPã«ããŠããçç±ã¯ãã¢ãœãã¥ãŒç€Ÿå ã§DDDã«åãçµãã§ãããã¡ã³ããŒã®å ±éèªèãæã¡ãããã£ãããã§ãã ãŸããCQRSã«é¢ããŠã¯ãã€ãã³ããœãŒã·ã³ã°ãå©çšãããããªé«åºŠãªèšèšã¯èŠæ±ããŠããããCommandãšQueryãåå²ããããšãåæãšããŠããŸãã
ãã®èšèšã«ã¯ããããŸã§DDDãã¬ã€ã€ãŒãã¢ãŒããã¯ãã£ãå©çšããŠããçµæãšããŠãç§ãã¡ãåŠãã ç¥èŠãåæ ãããŠããŸãã ãããã®ææ³ã«ã¯è©³çްãé èœããããšããã¡ãªããã¯ãããã®ã®ãèªã¿èŸŒã¿åŽã®ããã©ãŒãã³ã¹æèã®äœäžãèšèšã«ãããã³ã¹ãã®å¢å ãªã©ã®ãã¡ãªãããããããããã®ãã€ãã¹é¢ã軜èŠã§ããªããªã£ãŠããã®ã§ãã
ãã ãããããŸã§ãªãããªæ§æã«ããå¿ èŠããªãå Žåã«ã¯ãå¥ã®ã«ãŒã«ãå®çŸ©ããããšã§ãã¢ãžã¥ãŒã«å ã§ä»»æã®èšèšãéžæã§ããŸãã
ãŸããmoduleså ã®åã¢ãžã¥ãŒã«ã¯åºæ¬çã«ãã©ãããªé¢ä¿æ§ã«ãªã£ãŠãããShopifyã®äºäŸã§ç޹ä»ãããŠãããããªã¢ãžã¥ãŒã«å ã§ããã«åœ¹å²ãã°ã«ãŒãã³ã°ããé«åºŠãªèšèšã«ã¯ããŠããŸããã API Gatewayã§æ¢ã«UIã¬ã€ã€ãŒãæ§ç¯ã§ããŠããããšãšããããã£ãã¬ã€ã€ãŒèšèšã«å€±æãããšåŸããã®åŠç¿ã³ã¹ãã倿Žã³ã¹ããé«ãŸãããšãããçŸæç¹ã§ã¯ã·ã³ãã«ãªæ§æã«ããŠããŸãã
sharedããã±ãŒãžã®äœ¿ãã©ãã
sharedããã±ãŒãžã¯ãã¢ãžã¥ãŒã«å ã§å©çšããå ±éã³ã³ããŒãã³ããæ±ã£ãŠããŸãã å¯èœãªéããã®ããã±ãŒãžãå©çšããªãããšãæšå¥šããŠããŸãããã¢ãžã¥ã©ã¢ããªã¹ã®ç¹æ§äžãå ±æãå¿ èŠãªãã®ãååšããŸãã
äŸãã°ãã¢ãžã¥ã©ã¢ããªã¹ã§ãè² è·åæ£ã®ããã«æ°Žå¹³ã¹ã±ãŒã«ãè¡ããŸããããã®éã«DBã®ã³ãã¯ã·ã§ã³æ°ãªã©å€éšãªãœãŒã¹åŽã®éœåã§å¶çŽãçºçããå ŽåããããŸãã ãã®ãšãã¢ãžã¥ãŒã«å ã§èªç±ã«ã³ãã¯ã·ã§ã³ãæ¶è²»ããèšå®ã«ãªã£ãŠãããšããããšãããšãã«DBåŽã®ã³ãã¯ã·ã§ã³å¶éã«éããŠããŸããã¹ã±ãŒã«ã§ããªããªãåé¡ãçºçããŸãã ãã®ãããã¢ããªã±ãŒã·ã§ã³å šäœãšããŠèŠããšãã«é©åãªã³ãã¯ã·ã§ã³ç®¡çãã§ããŠããå¿ èŠããããŸãã
ãŸããã¢ãœãã¥ãŒã§ã¯ã¡ã€ã³ã®ã¯ã©ãŠããšããŠAWSãå©çšããŠããŸãããAWSã®APIã¯èªç±åºŠãããªãé«ããããã»ãã¥ãªãã£ãçµç¹çµ±å¶ã®èгç¹ããããçšåºŠã®ã«ãŒã«ãå®ãå¿ èŠãããå Žåã«ã䜿çšããŠããŸãã
ä»ã«ãåçš®ã®ã¢ãã¿ãªã³ã°ãªã©ãã¢ãžã¥ãŒã«å ã§å®è£ ãããšæãæŒããææ°ãå¢ããæè¡èŠçŽ ã«é¢ããŠã¯ãsharedããã±ãŒãžã«å®çŸ©ããŠããŸãã
ããã±ãŒãžéã®äŸåé¢ä¿
ã«ãŒãããã±ãŒãžã¯ãã¢ããªã±ãŒã·ã§ã³ã§å©çšããèšå®ãããããã£ããšã³ããªãŒãã€ã³ããšãªãã¯ã©ã¹ã®ã¿ã§æ§æããŠããŸãã èšå®ãããããã£ã¯å šäœã«é¢ãããã®ãå€ããããããã£ãç°å¢å€æ°ãªã©ã®å€éšããäžæ¬ã§èšå®ãããããšãå€ããããå ¥åç®æã¯äžç®æã«éå®ããå éšã§ã®åç §ã¯ã³ã³ãã€ã©ã®ãµããŒããåŸãããããã«ããŠããŸãã
ãããŸã§èª¬æããç¹æ§ãèžãŸããŠãããããã®ããã±ãŒãžã§ã¯äŸåæ¹åãéå®ããŠããŸãã ãŸããã«ãŒãããã±ãŒãžã§ã¯èšå®ãªã©ãå¿ èŠãšãªããããmodulesãsharedã«äŸåããå¿ èŠããããŸãã
sharedã¯ã«ãŒãã«äŸåããå¿ èŠã¯ãªãããŸãããžãã¹ããžãã¯ã§ããmodulesã«ãäŸåãã¹ãã§ã¯ãªããããå€éšãžäŸåããªãããã«ããŠããŸãã
modulesãã«ãŒãã«äŸåããå¿ èŠã¯ãããŸããããsharedã«äŸåããããšãããããããã®æ¹åã®äŸåã¯èš±å¯ããŠããŸãã ãŸããmoduleså ã§ã¯ç¬ç«æ§ãç¶æãããããpublicã¡ãœããã§ãã£ãŠããå ¬éã€ã³ã¿ãã§ãŒã¹ä»¥å€ã§çŽæ¥ã®åç §ã¯ã§ããªãããã«ããŠããŸãã
ãã®ä»ã«ããã¢ãžã¥ãŒã«å ã§ã¬ã€ã€ãŒãã¢ãŒããã¯ãã£ãCQRSãç¶æããã«ãŒã«ãå®çŸ©ããŠããŸãã
protobufã«ããå ¬éã€ã³ã¿ãã§ãŒã¹
ã¢ãžã¥ãŒã«éãççµåã«ä¿ã€ã«ã¯ãäŸåé¢ä¿ãæå°éã«æããå¿ èŠããããŸãã ã¢ãžã¥ã©ã¢ããªã¹ã§ã¯ããã€ã¯ããµãŒãã¹ã®å ¬éAPIãšåãããã«ãå€éšã¢ãžã¥ãŒã«ããã¢ã¯ã»ã¹ããããã®å ¬éã€ã³ã¿ãã§ãŒã¹ãå°çšã§å®çŸ©ããŸãã
ã¢ãœãã¥ãŒã§ã¯ããã€ã¯ããµãŒãã¹åããéã«ã¡ã€ã³ã®éä¿¡ãããã³ã«ãšããŠãgRPCãæ¡çšããŠããŸããã ã¢ãžã¥ã©ã¢ããªã¹ã®å ¬éã€ã³ã¿ãã§ãŒã¹ãšããŠãããã®è³ç£ãçãããŠProtocol BuffersïŒä»¥éãprotobufïŒãæ¡çšããŠããŸãã protobufã¯ç¹å®ã®èšèªã«äŸåããªãç¬èªã®IDLãæã¡ãå®çŸ©ããã³ãŒãçæãè¡ãããããçæãããã³ãŒãå ¬éã€ã³ã¿ãã§ãŒã¹ã®å®çŸ©ãšããŠå©çšããŠããŸãã
åçŽãªJavaã®ã³ãŒãã§å ¬éã€ã³ã¿ãã§ãŒã¹ãå®çŸ©ããã®ãšæ¯ã¹ããšæéãå¢ããŸãããäºåã«èšèªããããã³ã«ã«äŸåããªãå®çŸ©ãããããšã§ãå°æ¥çã«ã¢ãžã¥ãŒã«ããã€ã¯ããµãŒãã¹ã«åãåºããå Žåã«ããæå°éã®å€æŽã§åãæ¿ããå¯èœã«ãªããŸãã ãã®ãããçŸåšã¢ãžã¥ãŒã«éã§ã®ã¢ã¯ã»ã¹ãšããŠãåæã»éåæãååšããŸãããããããprotobufã«ãã£ãŠå®çŸ©ã»çæãããã³ãŒããå©çšããŠããŸãã
ã¢ãžã¥ãŒã«éã®åæã¢ã¯ã»ã¹
ã¢ãžã¥ãŒã«éã®åæã¢ã¯ã»ã¹ã«ã¯ãgRPCçšã®ServerãStubã³ãŒããå©çšããŠããŸãã
gRPC Javaã§ã¯ãServerãStubã®ãããªã¢ããªã±ãŒã·ã§ã³ã¬ã€ã€ãŒã®ã³ãŒããšå®éã®éä¿¡ãããã³ã«ã¯å®è£ äžåé¢ãããŠãããChannelã¯ã©ã¹ã®å®è£ ãåãæ¿ããããšã§ä»»æã®éä¿¡æ¹åŒãéžæã§ããŸãã
ã¢ãžã¥ã©ã¢ããªã¹ã§ã¯ããã€ã¯ããµãŒãã¹ã§ã¯ãããã¯ãŒã¯ãæãã éä¿¡ã ã£ããã®ããå éšã®é¢æ°åŒã³åºãã«ã§ããããšã倧ããªã¢ããã³ããŒãžã§ãã ãã®ããããã®éä¿¡ã¬ã€ã€ã®å®è£ ã§ã¯ãããã¯ãŒã¯ãè¿ãããçŽæ¥StubããServerã®ã³ãŒããåŒã³åºãåçŽãªChannelå®è£ ã«åãæ¿ããŠããŸãã
// çŽæ¥å€éšã¢ãžã¥ãŒã«ã®ã¡ãœãããåŒã³åºãããã®Channelå®è£ public class DirectChannel extends Channel { BindableService service; @Override public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(MethodDescriptor<RequestT, ResponseT> methodDescriptor, CallOptions callOptions) { return new ClientCall<>() { // ... @Override public void sendMessage(RequestT message) { StreamObserver<ResponseT> responseObserver = new StreamObserver<>() { // ... }; try { // ãããã¯ãŒã¯ãçµç±ããªãServiceã®ã¡ãœããåŒã³åºãã®å®è¡ String methodName = UPPER_CAMEL.to(LOWER_CAMEL, extractBareMethodName(methodDescriptor.getFullMethodName())); Method method = service.getClass().getMethod(methodName, message.getClass(), StreamObserver.class); method.invoke(service, message, responseObserver); } catch (Exception e) { // ... } } }; } // ... }
// å€éšã®ã¢ãžã¥ãŒã«åŒã³åºãåŠçãµã³ãã« public class OrderService { PaymentServiceGrpc.PaymentBlockingStub stub; OrderService(PaymentService paymentService) { // Channelã®å®è£ ãæå®(éåžžã¯DIã§è§£æ±ºãã) DirectChannel channel = new DirectChannel(paymentService); stub = PaymentServiceGrpc.newBlockingStub(channel); } void Payment() { try { // Channelã®å®è£ ã«äŸåããªãéåžžã®RPCåŒã³åºã Payment payment = stub.getPayment(PaymentRequest.newBuilder() .setName("123") .build()); // ... } catch (Exception e) { //... } } }
ãã®å®è£ ã«ãããã¢ãžã¥ã©ã¢ããªã¹å ã§ã¯åçŽãªé¢æ°åŒã³åºããå®çŸã§ããã ãã§ãªããå°æ¥çã«ã¢ãžã¥ãŒã«ããã€ã¯ããµãŒãã¹ã«åå²ããå Žåã«ããå ¬éã€ã³ã¿ãã§ãŒã¹ã¯åããŸãŸãChannelã®å®è£ ãåãæ¿ããã ãã§ãããã¯ãŒã¯è¶ãã®ã¢ã¯ã»ã¹ãå¯èœã«ãªããŸãã
ã¢ãžã¥ãŒã«éã®éåæã¢ã¯ã»ã¹
ã¢ãžã¥ãŒã«éã®éåæã¢ã¯ã»ã¹ã«ã¯ãSpringã®ApplicationEventãçšããåããprotobufã§å®çŸ©ããã¯ã©ã¹ããçæããJavaã®ã³ãŒããPayloadãšããŠå©çšããããã«ããŠããŸãã
// éåæã¢ãžã¥ãŒã«é飿ºçšã®ã€ã³ã¿ãã§ãŒã¹ public interface EventPublisher { <T extends GeneratedMessageV3> void publish(T event); }
// éåæã¢ãžã¥ãŒã«é飿ºçšã®å®è£ public class DirectEventPublisher implements EventPublisher { ApplicationEventPublisher applicationEventPublisher; @Override @Async public <T extends GeneratedMessageV3> void publish(T event) { applicationEventPublisher.publishEvent(event); } }
ããšããšãã€ã¯ããµãŒãã¹åãé²ããŠããããã«ã瀟å ã§Kinesisãšprotobufãå©çšããã¢ããªã±ãŒã·ã§ã³é飿ºçšã®EventBusãæ§ç¯ããŠããŸããã å ã»ã©è§£èª¬ããåæã¢ã¯ã»ã¹ã®ãã ããšåæ§ã«ãå°æ¥çã«ã¢ãžã¥ãŒã«ãåé¢ããéã«ã¯ãã¹ã ãŒãºã«ããããžã®åãæ¿ããã§ããããã«ããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³å ã«éãã°ãPub/Subã®é£æºãåæçã«ãè¡ããŸãããäžèšã®çç±ã«ããçŸæç¹ã§ã¯éåæã®ã¿ã®é£æºãããŠããŸãã
ã¢ãžã¥ãŒã«å ã®äŸåæ¹åã®ç®¡ç
ã¢ããªã¹ã®å€§ããªåé¡ãå¯çµåã«ãªãããšã§ããã
ã¢ãžã¥ã©ã¢ããªã¹ã«ãã£ãŠã¢ãžã¥ãŒã«åå²ããŠããè¿ãç¶æ ã«é¥ã£ãŠããŸãå ŽåããããŸãã ãã®åå ã¯çžäºåç §ã埪ç°åç §ã§ãã ãã®ç¶æ ã«ãªã£ãã¢ãžã¥ãŒã«å士ã¯å¯çµåã«ãªã£ãŠãããèŠãç®äžã¯åé¢ãããŠãããã®ã®ã宿 ãšããŠã¯1ã¢ãžã¥ãŒã«ã«ãªã£ãŠããŸã£ãŠããŸãã ãããã£ãã¢ãžã¥ãŒã«ã«å€æŽãå ããéã«ã¯ã圱é¿ç¯å²ã®èŠéããæªããªããçè§£ããªããã°ãªããªãé åãåºããããšã§èªç¥è² è·ãé«ãŸããã¢ãžã¥ãŒã«ã®èªåŸæ§ãäœäžããŠå€æŽã³ã¹ããå¢å ããŸãã
Shopifyã§ã¯ãããã®åé¡ã«å¯ŸããŠãã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ãäºåæ€ç¥ããããšã§å¯ŸåŠããŠããŸãã ã©ãããŠãçžäºã®äŸåãå¿ èŠã«ãªãå Žåã«ã¯ãPub/Subãå©çšãäŸåé¢ä¿ãé転ããæ¹æ³ããããŸãã
ããã¯Observerãã¿ãŒã³ãå©çšããæ¹æ³ã§ãã ã¢ãžã¥ãŒã«AããBãBããAã®åæ¹åã®äŸåããã£ãå ŽåãBããAã®åç §ãããã代ããã«Bããã¯åŠçã«åŸã£ãã€ãã³ããçºè¡ããAã¯ãã®ã€ãã³ãããµãã¹ã¯ã©ã€ãããŸãã ãã®æ§æã«ãããBã¯Aã®ååšãç¥ãå¿ èŠããªããäŸåãçºçããªããªãããåæ¹åäŸåãè§£æ¶ã§ããŸãã
ã¢ãœãã¥ãŒã§ãããã®ã¢ãããŒããåèã«åæåŠçã¯çžäºåç §ã埪ç°åç §ãçŠæ¢ããéåæã®Pub/Subã§ã®ã¿éæ¹åã®åç §ãå¯èœã«ããã«ãŒã«ãå®çŸ©ããŠããŸãã ãŸãããã®çºæ³ã¯DDDã®ãã¡ã€ã³ã€ãã³ããšã®çžæ§ããããããå¢çã¥ããããã³ã³ããã¹ããšããŠã¢ãžã¥ãŒã«éã®é£æºã«ãé©ããŠããŸãã
äŸå€çã«å ±æããŠããã¢ãžã¥ãŒã«
ã¢ãžã¥ã©ã¢ããªã¹ã«ãããŠãå ±æã¢ãžã¥ãŒã«ã¯ã¢ãžã¥ãŒã«éã®çµå床ãé«ããã¢ãžã¥ãŒã«ã®èªåŸæ§ãäœäžãããããããªãã¹ã䜿çšãé¿ããããã«ããŠããŸãã ãããããã®åæãããäžã§ããã¢ãœãã¥ãŒã§ã¯ä»¥äžã®ã¢ãžã¥ãŒã«ãå ±æã¢ãžã¥ãŒã«ãšããŠå®çŸ©ããŠããŸãã
- ã¢ãžã¥ãŒã«å ã®å ¬éã€ã³ã¿ãã§ãŒã¹ãžã®ã¢ã¯ã»ã¹ã¯ã©ã€ã¢ã³ã
- DBãªã©å€éšãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã¯ã©ã€ã¢ã³ã
- ãã©ã³ã¶ã¯ã·ã§ã³ãªã©ã¢ããªã±ãŒã·ã§ã³å ã§å ±éå¶åŸ¡ãå¿ èŠãªã³ã³ããŒãã³ã
- ã¢ããªã±ãŒã·ã§ã³ã®ã¢ãã¿ãªã³ã°
ãŸãå ±æã¢ãžã¥ãŒã«ã§ã¯ãããŸããããã¢ããªã±ãŒã·ã§ã³å šäœã«åã¶èšå®ãšããŠä»¥äžãå®çŸ©ããŠããŸãã
- AOPãå©çšããå ±éçãªãã®ã³ã°ããšã©ãŒãã³ããªã³ã°
- DIããã³ã³ããŒãã³ãã®ç®¡ç
- ã¢ããªã±ãŒã·ã§ã³å ã§å©çšããç°å¢å€æ°ã®ç®¡ç
ãããã¯ãããžãã¹èŠä»¶ã§å€æŽãããããšãã»ãŒãªããæè¡èŠä»¶ãšããŠçµ±äžãå¿ èŠã§ãããããå ±æã¢ãžã¥ãŒã«ãšããŠå®çŸ©ããŠããŸãã
ã¢ãžã¥ã©ã¢ããªã¹ã®æ¬ ç¹ãžã®å¯Ÿå¿
ãã€ã¯ããµãŒãã¹ãšæ¯èŒããã¢ãžã¥ã©ã¢ããªã¹ã®æ¬ ç¹ãšããŠãå éšçã«ãããåé¢ãããŠãæçµçã«ã¯åäžã®ã©ã³ã¿ã€ã ã§å®è¡ãããããšããããŸããã ãã®åé¡ã«å¯Ÿå¿ãããããã¢ãœãã¥ãŒã§è¡ã£ãŠããåãçµã¿ã玹ä»ããŸãã
å¯çšæ§ã®åé¢
çŸä»£çãªã¢ããªã±ãŒã·ã§ã³èšèšã®1ã€ãšããŠãåäžã®ãã€ããªã§ãã£ãŠãç°å¢å€æ°ãå©çšããŠèšå®ãåãæ¿ãããšãããã®ããããŸãã ã¢ãœãã¥ãŒã®ã¢ãžã¥ã©ã¢ããªã¹ã§ããç°å¢å€æ°ãå©çšããŠèµ·åæã«èšå®ãåãæ¿ããããããã«ããŠããŸãã ãã®èšå®ã«ã¯ãæ¬çªãéçºç°å¢çšã®èšå®ã ãã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ãæã€ç¹å®ã®æ©èœã®æå¹åãªã©ãå«ãŸããŸãã
# Spring Boot application.yml
asoview:
modules:
order:
event-handler:
enabled: true
# ...
payment:
cache:
enabled: false
# ...
point:
# ...
ããããå©çšããããšã§ãåäžã®ãã€ããªã§ãã£ãŠãèµ·åèšå®ã®åãæ¿ããå¯èœã«ãªãããã€ã¯ããµãŒãã¹ã®ããã«åæ©èœãå¥ã ã®ã¢ããªã±ãŒã·ã§ã³ãšããŠæ¯ãèãããšãã§ããŸãã ãŸããããŒã«ã«ãæ€èšŒç°å¢ãªã©ãå©äŸ¿æ§ãéçºã»éçšã³ã¹ãã®äœããªã©ãéèŠããç°å¢ã§ã¯ãåŸæ¥éãã¢ããªã¹ãªç¶æ ã§èµ·åãããŠäžéãã®æ€èšŒãå¯èœã§ãã
䌌ããããªä»çµã¿ãšããŠãGrafana Lokiã®Monolithic/Microservices modeãConsulã®Client/Server modeãååšããŸãã
ç¹ã«ã¢ãœãã¥ãŒã§ã¯ãäºæ¥æé·ã®éçšã§ã¢ããªã±ãŒã·ã§ã³ãåé¢ãããåäœãå€ããå¯èœæ§ãããã®ã§ãèµ·åã¢ãŒãã®ããã«å€§ããªãŠãŒã¹ã±ãŒã¹åãæ¿ãã®ãã©ã°ãçšæããã®ã§ã¯ãªããæ©èœåäœã§çްããæå¹åã§ããããã«ããŠãããå¿ èŠãªãšãã«å¿ èŠãªæ¹æ³ã§å©çšã§ããããã«ããŠããŸãã
çŸæç¹ã§ã¯ãAPIãšWorkerçšã®2ã©ã³ã¿ã€ã ã§èµ·åããããšã§ããªã¢ã«ã¿ã€ã åŠçãšããã¯ãšã³ãåŠçãšããç¹æ§ã®éãåŠçãåäžã®ãœãŒã¹ã»ãã€ããªã§å®çŸããŠããŸãã ä»ã«ããé«ãã©ãã£ãã¯ãæ³å®ãããã¯ãŒã¯ããŒãããé«å¯çšæ§ãéèŠèŠã§å€éšããã®åœ±é¿ãåé¢ãããæ©èœåé¢ãªã©ãæ³å®ããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³åå²ã®æ§ç¯ãšæ³šæç¹
ã¢ãœãã¥ãŒã§ã¯ãã€ã¯ããµãŒãã¹åãè¡ã£ãéã«ãã¢ããªã±ãŒã·ã§ã³å®è¡ã®ããã«Kubernetesã®ç°å¢ãæ§ç¯ã»æŽåããŠããŸããã ãã®æè¡åºç€ããããããDeploymentãšããŠåãé¢ããAPI Gatewayã§ã«ãŒãã£ã³ã°ããããšã§ãå¯çšæ§ã®åé¢ãããã¢ããªã±ãŒã·ã§ã³ãçŽ æ©ãæ§ç¯ã§ããŸãã
ãããã£ãæ§æãçšãããšããã€ããªã®äžã«æ¬æ¥å¿ èŠãªãåŠçãèšå®ãå«ãŸããããšã«ãªãããã培åºãããªãœãŒã¹ãããã©ãŒãã³ã¹ã®æé©åã¯é£ãããªããŸãã ã§ããããã€ã¯ããµãŒãã¹åããå Žåãšæ¯èŒãããšãéçºå¹çããããªãå šäœæé©ãè¡ãããããªããããååãã€ãããšèããŠããŸãã
泚æç¹ãšããŠã¯ãã¢ããªã±ãŒã·ã§ã³åå²ãããšããããšã¯ãèµ·åèšå®ã§åãæ¿ãããããšã¯ãã颿°åŒã³åºããããããã¯ãŒã¯è¶ãã®éä¿¡ãžãšå€ãããšããããšã§ãã ã€ãŸãããã€ã¯ããµãŒãã¹ã§ã®èª²é¡ããŸãçãŸããããšã«ãªããããããã蚱容ããŠã§ãåå²ãé²ããã¹ããªã®ãã®å€æãå¿ èŠã«ãªããŸãã
ãŸããç¹å®ã®ã¢ãžã¥ãŒã«ã«ãã£ãŠå šäœã®ãªãœãŒã¹ã䜿ãæããå±éºæ§ããããåäžã®ã©ã³ã¿ã€ã ã§èµ·åããŠããã¢ããªã±ãŒã·ã§ã³ã圱é¿ãåããå¯èœæ§ããããŸãã ãããã£ãåé¡ã«å¯Ÿå¿ãããããä»åŸã¯ãã«ã¯ããããå°å ¥ããŠå®è¡ã¹ã¬ãããªã©ã«ã¢ãžã¥ãŒã«åäœã§å¶çŽããããç¹å®ã®ã¢ãžã¥ãŒã«ã®åœ±é¿ã§ã¢ããªã±ãŒã·ã§ã³å šäœã®ãªãœãŒã¹ãæ¯æžããªãããã«å¯ŸåŠããäºå®ã§ãã
倿Žãšãããã€ã®ã³ã³ããªã¯ã
ã¢ãžã¥ã©ã¢ããªã¹åããããšã§ããã€ã¯ããµãŒãã¹åæ§ã«ã¢ãžã¥ãŒã«ãççµåãªç¶æ ã«ãªã£ãããšãããè€æ°ã®ã¡ã³ããŒãåç³»çµ±ã®æ©èœéçºãããªãéãã¯ã³ã³ããªã¯ããçºçãã«ãããªããŸããã ãŸããç°å¢å€æ°ã«ããã©ã³ã¿ã€ã åé¢ãå¯èœã«ããããšã«ãã£ãŠããããã€ã®æè»æ§ãå¢ããŠããŸãã
ãããã€ã«é¢é£ããæè¡çèŠçŽ ã«ã€ããŠãè§Šãããšãã¢ãœãã¥ãŒã§ã¯CIã«CircleCIããCDã«Argo CDãå©çšããŠããŸãã Argo CDã®syncPolicyãçµã¿åãããããšã§ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã¯CIãããªã¬ãŒã«èªåã§ãªãªãŒã¹ããä¿®æ£å 容ããªãªãŒã¹ã¿ã€ãã³ã°ãªã©ã«å¶çŽã®ããæ©èœã¯æåæ¿èªã«ãããããã€ãè¡ãããšãã§ããŸãã
ãªãªãŒã¹å¶çŽãåé¿ããããããŒã ãèªåŸçã«åãããã«ç¹å®ã®æ©èœã ããçŽ æ©ãåãé¢ããããšãã£ãããšãå¯èœã«ãªã£ãŠããŸãã
ããã°ã©ãã³ã°èšèªãã©ã€ãã©ãªã®ããŒãžã§ã³ã¢ãã
ã¢ãžã¥ã©ã¢ããªã¹ã§ã¯ãããã°ã©ãã³ã°èšèªãã©ã€ãã©ãªã®ããŒãžã§ã³ã¢ãããè¡ãå Žåã«ã¯ãµãŒãã¹å šäœã«åœ±é¿ããã±ãŒã¹ãå€ãããããã£ãæœçã«ãããªãã®ã³ã¹ããæããã®ã¯äºå®ã§ãã
ãã ããããããããŒãžã§ã³ã¢ãããªã©ã®å¯Ÿå¿ã¯ãå šç€Ÿæšªæã§å®æœãããæœçã§ããå Žåãå€ãã§ãã ãã®ããããã€ã¯ããµãŒãã¹ã®ããã«åé¢ãããã¢ããªã±ãŒã·ã§ã³ã1ã€1ã€ããŒãžã§ã³ã¢ããããŠæ€èšŒããããããããŒã¿ã«ã§èŠãå Žåã«ã¯ã¢ãžã¥ã©ã¢ããªã¹ã®æ¹ãå§åçã«äœã³ã¹ãã§ããŒãžã§ã³ã¢ããã宿œã§ãããšèããŠããŸãã
DBã®åé¢ã«é¢ããèå¯
ãã€ã¯ããµãŒãã¹ã§ã¯ããµãŒãã¹ããšã«DBãåé¢ããæ¹ãæãŸãããå ±æDBã«ããã®ã¯ã¢ã³ããã¿ãŒã³ã ãšãããŠããŸãã ãããšåæ§ã«ãèªåŸæ§ãã¹ã±ãŒã©ããªãã£ãèãããšãã¢ãžã¥ã©ã¢ããªã¹ã§ãDBã®åé¢ã¯æå¹ãªéžæè¢ã§ãã ãŸããDBãäºåã«åé¢ããŠããããšã§ãåŸãããã€ã¯ããµãŒãã¹ãžåãæ¿ããå Žåã®ç§»è¡ã³ã¹ããäžããããšãã§ããŸãã
äžæ¹ã§ãDBãåé¢ããããšã§çãããã¡ãªããããããŸãã ã¢ãžã¥ãŒã«å¢çã«åœ±é¿ãããããªãªãã¡ã¯ã¿ãªã³ã°ãã¢ãžã¥ãŒã«ããŸããã ããŒã¿ã®çµåããã©ã³ã¶ã¯ã·ã§ã³ãªã©ã®ç®¡çãé«ã³ã¹ããšãªã£ãŠããŸãã®ã§ãã ã¡ãªããã»ãã¡ãªããã倩秀ã«ãããŠãäœãéèŠããããèããäžã§æ¹éãæ±ºããå¿ èŠããããŸãã
ã¢ãœãã¥ãŒã§ã¯ä»ã®ãšãããããšããšãã€ã¯ããµãŒãã¹åããŠããç®æä»¥å€ã«é¢ããŠã¯ãDBã«å€§ããªå€æŽãå ããŠããŸããã DBã®éçšæ¹æ³ãã¢ãžã¥ãŒã«å¢çãèŠçŽãå¯èœæ§ãèãããšãå ·äœçã«åé¡ãé¡åšåããŠããªã段éã§ç©çã¬ãã«ã§ã®DBåé¢ãæ¥ããšãçµæçã«éçšã³ã¹ããé«ããªã£ãŠããŸãå¯èœæ§ãããããã§ãã
ä»åŸã¯ãç©çã¬ãã«ã§ã®DBåé¢ã§ã¯ãªããè«çã¬ãã«ã§ã¹ããŒããåå²ããæ¹åã§æ€èšããŠããŸãã è«çã¬ãã«ã§åé¢ããŠããã°ãå°æ¥çã«ç©çã¬ãã«ã®å颿ã®ã³ã¹ããäžããããšãå¯èœã§ãã
ãã®ä»ã«ãããããã£ãåææ¡ä»¶ãèžãŸããåŸæ¥ã®RDBã ãã§ãªãNewSQLãªã©ãçšããããšã§ãDBåŽã§ã¹ã±ãŒã©ããªãã£ãåäžã§ãããããªéžæè¢ãæ€èšãé²ããŠããŸãã
ã¢ãžã¥ã©ã¢ããªã¹ãéçšããŠã¿ãŠ
ã¢ãžã¥ã©ã¢ããªã¹ã®éçšãå§ãŸã£ãŠ1幎以äžããã¡ãŸãããçŸåšãŸã§ã¯ãªãã£ã«ã«ãªåé¡ã¯çºçããŠããŸããã éçºã»éçšãå¹ççãªäœå¶ãå®çŸã§ããŠããŸãã
æªã ã«ã³ã³ããã¹ãå¢çã«è¿·ããããªã¢ãžã¥ãŒã«ãååšããŠããã®ã§ããããããããããã¢ãžã¥ãŒã«ã®åå²ã«å€±æããŠãããªãã¡ã¯ã¿ãªã³ã°ã®ç¯å²å ã§å®¹æã«åŸæ»ãã§ããããšã¯éåžžã«å€§ããªå©ç¹ã§ãã
以åã¯åã¢ããªã±ãŒã·ã§ã³ã§èšå®ãç°ãªãç®æããããéçºç°å¢ã®æ§ç¯ã«ãèŠåŽããŠããŸããããããããåé¡ãçºçããããšããªããªããŸããã è€æ°ã®æ©èœã暪æããŠã®ãã¹ããªã©ã宿œãããããªã£ãŠããŸãã
ãŸããã¢ãžã¥ãŒã«å¢çãæç¢ºã«ãªããåéçºããŒã ã§æ åœã¢ãžã¥ãŒã«ã決ãŸã£ãŠããããšããããã€ã¯ããµãŒãã¹åæ§ãäœãèªç¥è² è·ã§éçºãçŽ æ©ããèªåŸããŠè¡ãããšãã§ããŠããŸãã ããã ãã§ã¯ãªãããœãŒã¹ã³ãŒããå šäœèŠæž¡ãããã³ãŒã倿Žããããã°ããããã容æã«ã§ãããããéçºè ãæãã°ããåºãç¯å²ã«é¢ãããããªãã£ã¬ã³ãžãå¯èœã§ãã
ä»åŸã®å±æ
ä»åŸãã¢ãœãã¥ãŒã§ã¯ãã¢ãžã¥ã©ã¢ããªã¹ãäžå¿ãšããŠã¢ãŒããã¯ãã£ãæé·ãããŠããäºå®ã§ãã
äžæ¹ã§ãå šãŠã®ã·ã¹ãã ãå®å šã«ã¢ãžã¥ã©ã¢ããªã¹ã«çµ±åããããšããŠããããã§ããããŸããã èªèšŒãéç¥ãªã©ãåããããã€ã¯ããµãŒãã¹ãšããŠåé¢ããæ¹ãè²»çšå¯Ÿå¹æãé«ãæ©èœãååšããŸãããã¢ãžã¥ã©ã¢ããªã¹ãžã®ç§»è¡ãé£ããæ¢åã®æè¡çè³ç£ãªã©ãååšããŸãã
ãŸããã®å ãã¢ãžã¥ã©ã¢ããªã¹ããåé¢ãããã¢ããªã±ãŒã·ã§ã³ãåºãŠããããšãèããããŸãã ããã«ãã«ãªã¢ãŒãã»ãã«ãã¬ãã¯ã¹ãžã®ã·ãããšãã£ãæä»£ã®å€åã«åãããŠã忣ããåãæ¹ã§ãæé·ãç¶ããã¢ãŒããã¯ãã£ã®ããæ¹ãèããå¿ èŠããããŸãã
ãã®ããå°æ¥çã«ã¯ãã¢ãžã¥ã©ã¢ããªã¹ãäžå¿ã«æ®ãã€ã€ããã®åšããç¬ç«ããè€æ°ã®ãã€ã¯ããµãŒãã¹ãåãå·»ããææç³»ã®ãããªã¢ãŒããã¯ãã£ã«é²åããŠããã®ã§ã¯ãªãããšæ³å®ããŠããŸãã
ã¢ãœãã¥ãŒã§ã¯ãã€ã¯ããµãŒãã¹åããããããåŸããããã¬ããžãè³ç£ãçããã€ã€ãã¢ãžã¥ã©ã¢ããªã¹åã«åãçµãã§ããŸãã ãã®èšäºããã¢ããªã¹ããã®ç§»è¡ã«æ©ãã§ããæ¹ã ãã§ã¯ãªãããã€ã¯ããµãŒãã¹ã«èª²é¡ãæããŠããæ¹ã«ãåèã«ãªãã°å¹žãã§ãã
ç·šéïŒäžè æŽ
å¶äœïŒã¯ãŠãªç·šééš




