ããã«ã¡ã¯ïŒç§ã®ååã¯ã€ãŽãŒã«ã»ãã©ãžã³ã§ããããªããªãŒã¯ã©ãã®ããžã¹ãã£ã¯ã¹ããŒã ã®ããŒã ãªãŒããŒã§ããã¢ãŒããã¯ãã£ãæ§ç¯ããã³å€æããæ¹æ³ãšããããéçºããã»ã¹ã«ã©ã®ããã«åœ±é¿ãããã説æããããšæããŸãã
çŸåšãDelivery ClubïŒããã³ããŒãããã¯åžå Žå šäœïŒã¯éåžžã«æ¥éã«æé·ããŠãããæè¡ããŒã ã«ãšã£ãŠéåžžã«å€ãã®èª²é¡ãçã¿åºããŠããŸããããã¯ã次ã®2ã€ã®æãéèŠãªåºæºã§èŠçŽã§ããŸãã
- ãã©ãããã©ãŒã ã®ãã¹ãŠã®éšåã®é«ãå®å®æ§ãšå¯çšæ§ã確ä¿ããå¿ èŠããããŸãã
- åæã«ãæ°æ©èœã®éçºã®ããŒã¹ãéãããŠãã ããã
ãããã®2ã€ã®åé¡ã¯çžäºã«æä»çã§ããããã«æãããŸãããã©ãããã©ãŒã ãå€æããŠãå®äºãããŸã§æ°ããå€æŽãã§ããã ãå°ãªãããããšããããã·ã¹ãã ãå€§å¹ ã«å€æŽããã«æ°ããæ©èœãè¿ éã«éçºããŸãã
ããããïŒãããŸã§ã®ãšããïŒäž¡æ¹ãšãæåããŠããŸãããããã©ã®ããã«è¡ããã«ã€ããŠã¯ãããã«èª¬æããŸãã
ãŸãããã©ãããã©ãŒã ã«ã€ããŠèª¬æããŸãã絶ããå¢å€§ããããŒã¿éããµãŒãã¹ã«é©çšããåºæºãããã³ãã®éçšã§çŽé¢ããåé¡ãèæ ®ããŠããã©ãããã©ãŒã ãã©ã®ããã«å€æãããã«ã€ããŠèª¬æããŸãã
次ã«ããã©ãããã©ãŒã ã®å€æŽãšç«¶åããããšãªããã·ã¹ãã ãäžå¿ èŠã«å£åãããããšãªããæ©èœãæäŸãããšããåé¡ãã©ã®ããã«è§£æ±ºããããå ±æããŸãã ãã©ãããã©ãŒã ããå§ããŸãããã
åãã¯äžæ岩ããããŸãã
Delivery Clubã³ãŒãã®æåã®è¡ã¯11幎åã«äœæããããã®ã§ããã®ãžã£ã³ã«ã®æé«ã®äŒçµ±ã§ã¯ãã¢ãŒããã¯ãã£ã¯PHPã®ã¢ããªã¹ã§ãããã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ã®å€å žçãªåé¡ã«çŽé¢ãããŸã§ã7幎éãããã¯ãŸããŸãå€ãã®æ©èœã§æºããããŠããŸããã
æåã¯ãå®å šã«æºè¶³ããŠããŸãããä¿å®ããã¹ããããã³å±éãç°¡åã§ããããããŠã圌ã¯åé¡ãªãåæè² è·ã«å¯ŸåŠããŸãããããããéåžžã®å Žåãšåæ§ã«ãããæç¹ã§ãã¢ããªã¹ãéåžžã«å±éºãªããã«ããã¯ã«ãªãã»ã©ã®æé·çã«éããŸããã
- ã¢ããªã¹ã®é害ãåé¡ã¯ããã¹ãŠã®ããã»ã¹ã«å®å šã«åœ±é¿ããŸãã
- ã¢ããªã¹ã¯ãå€æŽã§ããªãç¹å®ã®ã¹ã¿ãã¯ã«ãã£ãããšçµã³ä»ããããŠããŸãã
- éçºããŒã ã®æé·ãèæ ®ãããšãå€æŽãå ããããšãé£ãããªããŸããã³ã³ããŒãã³ãã®æ¥ç¶æ§ãé«ããããæ©èœãè¿ éã«æäŸã§ããŸããã
- ã¢ããªã¹ã¯æè»ã«ã¹ã±ãŒãªã³ã°ã§ããŸããã
ããã¯ç§ãã¡ãïŒé©ãã®ïŒãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã«å°ããŸãã-ãã®é·æãšçæã«ã€ããŠå€ãã®ããšãèšãããæžãããŠããŸãããäž»ãªããšã¯ããããç§ãã¡ã®äž»ãªåé¡ã®1ã€ã解決ããã·ã¹ãã å šäœã®æ倧ã®å¯çšæ§ãšé害èæ§ãéæã§ããããã«ããããšã§ãããã®èšäºã§ã¯ããã«ã€ããŠè©³ãã説æããŸãããã代ããã«ãã©ã®ããã«å®è¡ããã®ãããããŠãã®çç±ãäŸãæããŠèª¬æããŸãã
ç§ãã¡ã®äž»ãªåé¡ã¯ãã¢ããªã¹ã³ãŒãããŒã¹ã®ãµã€ãºãšãã®äžã®ããŒã ã®äžååãªå°éç¥èã§ããïŒãã©ãããã©ãŒã ã¯ç§ãã¡ãå€ããšåŒãã§ãããã®ã§ãïŒããã¡ãããæåã¯åé¡ãå®å šã«è§£æ±ºããããã«ã¢ããªã¹ãåããã«ãããããã£ãã ãã§ãããããã1幎以äžãããããšããããŠããã§è¡ãããŠããå€æŽã®æ°ããããçµããããããšã¯æ±ºããŠã§ããªãããšã«ããã«æ°ã¥ããŸããã
ãããã£ãŠãç§ãã¡ã¯å¥ã®éãæ©ã¿ãŸãããããããã®ãŸãŸã«ããŠãæ®ãã®ãµãŒãã¹ãã¢ããªã¹ã®åšãã«æ§ç¯ããããšã«ããŸãããããã¯ã泚æåŠçããžãã¯ãšããŒã¿ãã¹ã¿ãŒã®äž»èŠãªãã€ã³ãã§ããç¶ããŸãããä»ã®ãµãŒãã¹ã®ããŒã¿ã®ã¹ããªãŒãã³ã°ãéå§ããŸãã
ãšã³ã·ã¹ãã
Andrey Evsyukovãç§ãã¡ã®ããŒã ã«é¢ããèšäºã§è¿°ã¹ãããã«ããã¡ã€ã³é åã®äž»ãªé åã§ããRïŒDãããžã¹ãã£ã¯ã¹ãã³ã³ã·ã¥ãŒããŒããã³ããŒãå éšããã©ãããã©ãŒã ã«çŠç¹ãåœãŠãŸããããããã®é åå ã§ããµãŒãã¹ãæ©èœããäž»ãªãã¡ã€ã³é åã¯ãã§ã«éäžããŠããŸããããšãã°ãããžã¹ãã£ã¯ã¹ã®å Žåããããã¯å® é 䟿æ¥è ãšæ³šæã§ããããã³ããŒã®å Žåã¯ã¬ã¹ãã©ã³ãšåœ¹è·ã§ãã
次ã«ãããé«ãã¬ãã«ã«äžæãããã©ãããã©ãŒã ãäžå¿ã«ãµãŒãã¹ã®ãšã³ã·ã¹ãã ãæ§ç¯ããå¿ èŠããããŸãã泚æåŠçãäžå¿ã§ãããããŒã¿ãã¹ã¿ãŒã§ãããæ®ãã®ãµãŒãã¹ã¯ãã®åšãã«æ§ç¯ãããŸããåæã«ãæ¹åæ§ãèªåŸçã«ããããšãéèŠã§ããäžéšã倱æããŠããæ®ãã¯æ©èœãç¶ããŸãã
äœè² è·ã§ã¯ãå¿ èŠãªãšã³ã·ã¹ãã ã®æ§ç¯ã¯éåžžã«ç°¡åã§ããåŠçããã»ã¹ãšããŒã¿ã®ä¿åãããã³çŽ¹ä»ãµãŒãã¹ãå¿ èŠã«å¿ããŠãããã«é©çšãããŸãã
äœè² è·ãåæèŠæ±ããã¹ãŠãããŸãæ©èœããŸãã
æåã®æ®µéã§ã¯ããŸãã«ãããå®è¡ããŸãããã»ãšãã©ã®ãµãŒãã¹ã¯ãåæHTTPèŠæ±ã§çžäºã«éä¿¡ããŸãããäžå®ã®è² è·ã®äžã§ã¯ãããã¯èš±å®¹ãããŸãããããããžã§ã¯ããšãµãŒãã¹ã®æ°ãå¢ããã»ã©ãåé¡ã¯å€§ãããªããŸããã
é«è² è·ãåæèŠæ±ïŒå®å šã«ç°ãªããã¡ã€ã³ã®ãŠãŒã¶ãŒïŒå® é 䟿æ¥è ïŒã§ããã誰ããèŠããã§ããŸãã
æ瀺å ã§ãµãŒãã¹ãèªåŸåããããšã¯ããã«å°é£ã§ããããšãã°ãããžã¹ãã£ã¯ã¹ã®è² è·ãå¢å ããŠããã·ã¹ãã ã®ä»ã®éšåã«åœ±é¿ãäžããããšã¯ãããŸãããåæèŠæ±ãããã€ãã£ãŠããããã¯è§£æ±ºã§ããªãåé¡ã§ããæããã«ãåæèŠæ±ãç Žæ£ããŠéåæéä¿¡ã«ç§»è¡ããå¿ èŠããããŸããã
ããŒã¿ãã¹
ãããã£ãŠãåæã¢ãŒãã§ããŒã¿ã«ã¢ã¯ã»ã¹ãããšããå€ãã®ããã«ããã¯ãçºçããŸããããããã®å Žæã¯ãè² è·ã®å¢å ãšããç¹ã§éåžžã«å±éºã§ããã
ãããäŸã§ããããªããªãŒã¯ã©ããéããŠå°ãªããšãäžåºŠæ³šæãã人ã¯ãå® é 䟿æ¥è ã泚æãåãåã£ãåŸãã«ãŒãã衚瀺ãããããšãç¥ã£ãŠããŸãããã®äžã§ãããªãã¯ãªã¢ã«ã¿ã€ã ã§å® é 䟿ã®åãã远跡ããããšãã§ããŸãããã®æ©èœã«ã¯ãããã€ãã®ãã€ã¯ããµãŒãã¹ãå«ãŸããŸããäž»ãªãã®ã¯æ¬¡ã®ãšããã§ãã
mobile-gateway
ããã¯ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®ããã³ããšã³ãã®ããã¯ãšã³ãã§ããcourier-tracker
ã座æšã®éåä¿¡ã®ããžãã¯ãæ ŒçŽããŸããlogistics-couriers
ãããã®åº§æšãæ ŒçŽããŸãããããã¯ãå® é 䟿ã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããéä¿¡ãããŸãã
å ã®ã¹ããŒã ã§ã¯ãããã¯ãã¹ãŠåæããŠæ©èœããŸããã1åã«1åã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããã®èŠæ±ã¯ã座æšã«ã¢ã¯ã»ã¹ããŠåä¿¡
mobile-gateway
ãããµãŒãã¹ã«éãããŸããããã¡ããããã®ã¹ããŒã ã§ã¯ãããã¯ããã»ã©åçŽã§ã¯ãããŸããã§ããããæçµçã«ã¯åçŽãªçµè«ã«èŠçŽãããŸããã¢ã¯ãã£ããªæ³šæãå€ãã»ã©ãåãåã£ã座æšã®èŠæ±ãå€ããªããŸãã
ç§ãã¡ã®æé·ã¯æã
äºæž¬äžå¯èœã§ããããããŠæãéèŠãªããšã«ããã®ãããªèšç»ã倱æããåã®æéã®åé¡ã§ããããã¯ãéåæçžäºäœçšã®ããã»ã¹ãããçŽãå¿
èŠãããããšãæå³ããŸããã€ãŸãã座æšã®èŠæ±ãå¯èœãªéãå®äŸ¡ã«ããããã§ãããããè¡ãã«ã¯ãããŒã¿ã¹ããªãŒã ãå€æããå¿
èŠããããŸããcourier-tracker
logistics-couriers
logistics-couriers
茞é
ãµãŒãã¹éã®éä¿¡ãå«ãããã§ã«RabbitMQã䜿çšããŠããŸããããããäž»èŠãªèŒžéã¢ãŒããšããŠããã§ã«å®çžŸã®ããããŒã«ã§ããApacheKafkaãæ¡çšããŸãããããã«ã€ããŠã¯å¥ã®è©³çŽ°ãªèšäºãæžããŸããããããã©ã®ããã«äœ¿çšãããã«ã€ããŠç°¡åã«èª¬æããããšæããŸãã
Kafkaããã©ã³ã¹ããŒããšããŠæåã«å®è£ ãå§ãããšããç§ãã¡ã¯ããããã®ãŸãŸã®åœ¢ã§äœ¿çšãããããŒã«ãŒã«çŽæ¥æ¥ç¶ããŠã¡ãã»ãŒãžãéä¿¡ããŸããããã®ã¢ãããŒãã«ãããæŠéã§ã«ãã«ããã°ãããã¹ããããããäž»èŠãªèŒžéã¢ãŒããšããŠäœ¿çšãç¶ãããã©ããã決å®ããããšãã§ããŸããã
ãã ãããã®ã¢ãããŒãã«ã¯é倧ãªæ¬ ç¹ããããŸããã¡ãã»ãŒãžã«ã¯å ¥åãšæ€èšŒããããŸããããããã¯ããã©ã®ã¡ãã»ãŒãžåœ¢åŒãèªã¿åã£ããã¯ããããŸããã
ããã«ãããããŒã¿ãæäŸãããµãŒãã¹ãšããŒã¿ãæ¶è²»ãããµãŒãã¹ã®éã§ãšã©ãŒãäžæŽåãçºçãããªã¹ã¯ãé«ãŸããŸãã
ãã®åé¡ã解決ããããã«ãã©ãããŒïŒGoã®ãã€ã¯ããµãŒãã¹ïŒãäœæããŸãããããã¯ãKafkaãAPIã®èåŸã«é ããŸããããã«ããã次ã®2ã€ã®å©ç¹ãè¿œå ãããŸããã
- éåä¿¡æã®ããŒã¿æ€èšŒãå®éããããã¯åãDTOã§ãããããäºæ³ãããããŒã¿ã®åœ¢åŒã«ã¯åžžã«èªä¿¡ããããŸãã
- ç§ãã¡ã®ãµãŒãã¹ãšãã®ãã©ã³ã¹ããŒãã®è¿ éãªçµ±åã
ãããã£ãŠãKafkaã§ã®äœæ¥ã¯ããµãŒãã¹ã«ãšã£ãŠå¯èœãªéãæœè±¡çãªãã®ã«ãªããŸããããããã¯ããã®ã©ãããŒã®ãããã¬ãã«APIã§ã®ã¿æ©èœããŸãã
äŸã«æ»ããŸããã
åæã€ã³ã¿ã©ã¯ã·ã§ã³ãã€ãã³ããã¹ã«è»¢éããã«ã¯ãããŒã¿ãããŒãå転ããå¿ èŠããããŸããèŠæ±ãããã®ã¯ãKafkaèªäœãçµç±ããå¿ èŠããããŸãããã®äŸã§ã¯ãå® é 䟿ã®åº§æšã«ã€ããŠèª¬æããŠããŸããããã§ã¯ãç¹å¥ãªãããã¯ãäœæãããµãŒãã¹ã«ãã£ãŠå® é 䟿æ¥è ããåãåã£ããšãã«ããããäœæããŸã
logistics-couriers
ã
ãµãŒãã¹
courier-tracker
ã¯ãå¿
èŠãªéãšæéã ã座æšãèç©ããå¿
èŠããããŸãããã®çµæããšã³ããã€ã³ãã¯å¯èœãªéãã·ã³ãã«ã«ãªããŸãããµãŒãã¹ããŒã¿ããŒã¹ããããŒã¿ãååŸããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã«æäŸããŸããããã«å¯Ÿããè² è·ã®å¢å ã¯ä»ãç§ãã¡ã«ãšã£ãŠå®å
šã§ãã
ãã®çµæãç¹å®ã®åé¡ã解決ããããšã«å ããŠãã¯ãŒãªãšã®å®éã®åº§æšãå«ãããŒã¿ãããã¯ãååŸããŸããããã¯ãã©ã®ãµãŒãã¹ã§ãç¬èªã®ç®çã«äœ¿çšã§ããŸãã
æçµçã«äžè²«æ§
ãã®äŸã§ã¯ãã¯ãŒãªãšã®åº§æšãåæãªãã·ã§ã³ãšæ¯èŒããŠåžžã«ææ°ã§ãããšã¯éããªãããšãé€ããŠããã¹ãŠãã¯ãŒã«ã«æ©èœããŸããéåæçžäºäœçšã«åºã¥ããŠæ§ç¯ãããã¢ãŒããã¯ãã£ã§ã¯ãä»»æã®æç¹ã§ã®ããŒã¿ã®é¢é£æ§ã«ã€ããŠçåãçããŸãããã ããåžžã«ææ°ã®ç¶æ ã«ä¿ã€å¿ èŠã®ããéèŠãªããŒã¿ã¯å€ããªãããããã®ã¹ããŒã ã¯çæ³çã§ããã·ã¹ãã ã®å¯çšæ§ã®ã¬ãã«ãäžããããã«ãäžéšã®æ å ±ã®é¢é£æ§ãç ç²ã«ããŸãããã ããæçµçã«ã¯ãã·ã¹ãã ã®ãã¹ãŠã®éšåã§ããã¹ãŠã®ããŒã¿ãé¢é£æ§ããããäžè²«æ§ãããïŒæçµçã«ã¯äžè²«æ§ãããïŒããšãä¿èšŒããŸãã
ãã®ããŒã¿ã®éæ£èŠåã¯ãé«è² è·ã®ã·ã¹ãã ãšãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®å Žåã«å¿ èŠã§ããåãµãŒãã¹èªäœããæ©èœããããã«å¿ èŠãªããŒã¿ã®ã¹ãã¬ãŒãžãä¿èšŒããŸããããšãã°ãç§ãã¡ã®ãã¡ã€ã³ã®äž»èŠãªãšã³ãã£ãã£ã®1ã€ã¯å® é 䟿ã§ããå€ãã®ãµãŒãã¹ã¯ããã䜿çšããŠåäœããŸããããããã¯ãã¹ãŠç°ãªãããŒã¿ã®ã»ãããå¿ èŠãšããŸãã誰ããå人ããŒã¿ãå¿ èŠãšãã誰ããåãã®ã¿ã€ãã«é¢ããæ å ±ã®ã¿ãå¿ èŠãšããŸãããã®ãã¡ã€ã³ã®ããŒã¿ãã¹ã¿ãŒã¯ãšã³ãã£ãã£å šäœãã¹ããªãŒã ã«çæãããµãŒãã¹ã¯å¿ èŠãªéšåãèç©ããŸãã
ãããã£ãŠããµãŒãã¹ãããŒã¿ãã¹ã¿ãŒã§ãããµãŒãã¹ãšãã®ããŒã¿ã䜿çšãããµãŒãã¹ã«æ確ã«åå²ããŸããå®éãããã¯é²åã®ã¢ãŒããã¯ãã£ããã®ãããã¬ã¹ã³ããŒã¹ã§ãããã¹ãŠã®ãã¹ãã¢ããã³ããïŒWebãµã€ããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ïŒããã®ããŒã¿ã®äœæè ããæ確ã«åé¢ããŸããã
éæ£èŠå
å¥ã®äŸïŒå® é 䟿æ¥è ã«çãçµã£ãéç¥ãè¡ãã¡ã«ããºã ããããŸãããããã¯ãã¢ããªã±ãŒã·ã§ã³ã§å® é 䟿æ¥è ã«å±ãã¡ãã»ãŒãžã§ããããã¯ãšã³ãåŽã«ã¯ããã®ãããªéç¥ãéä¿¡ããããã®åŒ·åãªAPIããããŸãããã®äžã§ãç¹å®ã®åºæºã«åŸã£ãŠç¹å®ã®å® é 䟿æ¥è ããå® é 䟿æ¥è ã®ã°ã«ãŒããŸã§ãéµéãã£ã«ã¿ãŒãæ§æã§ããŸãã
ãµãŒãã¹ã¯ãããã®éç¥ãæ åœããŸã
logistics-courier-notifications
ã圌ãéä¿¡èŠæ±ãåãåã£ãåŸã圌ã®ã¿ã¹ã¯ã¯ãã¿ãŒã²ããã«ããããããã®å®
é
䟿æ¥è
ãžã®ã¡ãã»ãŒãžãçæããããšã§ãããããè¡ãã«ã¯ã圌ã¯ãã¹ãŠã®ããªããªãŒã¯ã©ãã®å®
é
䟿æ¥è
ã«é¢ããå¿
èŠãªæ
å ±ãç¥ãå¿
èŠããããŸãããããŠããã®åé¡ã解決ããããã®2ã€ã®ãªãã·ã§ã³ããããŸãã
- ãµãŒãã¹åŽã«ãšã³ããã€ã³ããäœæããŸã-ã¯ãŒãªãšããŒã¿ãŠã£ã¶ãŒãïŒ
logistics-couriers
ïŒãéä¿¡ããããã£ãŒã«ãã«ãã£ãŠå¿ èŠãªã¯ãŒãªãšããã£ã«ã¿ãªã³ã°ããŠè¿ãããšãã§ããŸãã - å¿ èŠãªãã¹ãŠã®æ å ±ããµãŒãã¹ã«çŽæ¥ä¿åãã察å¿ãããããã¯ãããããæ¶è²»ããå°æ¥ãã£ã«ã¿ãªã³ã°ããå¿ èŠãããããŒã¿ãä¿åããŸãã
ã¡ãã»ãŒãžãçæããã¯ãŒãªãšããã£ã«ã¿ãªã³ã°ããããã®ããžãã¯ã®äžéšã¯ããŒãããããããã¯ã°ã©ãŠã³ãã§å®è¡ãããããããµãŒãã¹ã®ããŒãã«ã€ããŠã¯åé¡ãããŸãã
logistics-couriers
ãããããæåã®ãªãã·ã§ã³ãéžæãããšãäžé£ã®åé¡ã«çŽé¢ããŸãã
- ãµãŒãããŒãã£ã®ãµãŒãã¹ã§é«åºŠã«å°éåããããšã³ããã€ã³ãããµããŒãããå¿ èŠããããŸããããã¯ãããããç§ãã¡ã ããå¿ èŠãšããŸãã
- å¹ ãåºããããã£ã«ã¿ãŒãéžæãããšãHTTPå¿çã«åçŽã«é©åããªããã¹ãŠã®ã¯ãŒãªãšããµã³ãã«ã«å«ãŸãããããããŒãžããŒã·ã§ã³ãå®è£ ããå¿ èŠããããŸãïŒãµãŒãã¹ãããŒãªã³ã°ãããšãã«ãããç¹°ãè¿ãå¿ èŠããããŸãïŒã
æããã«ããµãŒãã¹èªäœã«ããŒã¿ãä¿åããããšããããŸãããèªåŸçãã€åé¢ããŠãã¹ãŠã®äœæ¥ãå®è¡ããã©ãã«ãã¢ã¯ã»ã¹ãããKafkaãããã¯ããå¿ èŠãªãã¹ãŠã®ããŒã¿ãããèªäœããèç©ããã ãã§ããåŸã§æ°ããå® é 䟿ã®äœæã«ã€ããŠã®ã¡ãã»ãŒãžãåãåããªã¹ã¯ããããããã¯äžéšã®éžæã«å«ãŸããŸãããããããéåæã¢ãŒããã¯ãã£ã®ãã®æ¬ ç¹ã¯é¿ããããŸããã
ãã®çµæããµãŒãã¹ãèšèšããããã®ããã€ãã®éèŠãªååãçå®ããŸããã
- ãµãŒãã¹ã«ã¯ç¹å®ã®è²¬ä»»ãå¿ èŠã§ããæ¬æ Œçãªæ©èœã®ããã«ãµãŒãã¹ããŸã å¿ èŠãªå Žåãããã¯èšèšäžã®èª€ãã§ããããããçµã¿åãããããã¢ãŒããã¯ãã£ãä¿®æ£ããå¿ èŠããããŸãã
- åæåŒã³åºããæ¹å€çã«èª¿ã¹ãŸããäžæ¹åã®ãµãŒãã¹ã®å Žåãããã¯èš±å®¹ãããŸãããç°ãªãæ¹åã®ãµãŒãã¹éã®éä¿¡ã®å Žåãããã¯èš±å®¹ãããŸããã
- äœãå ±æããŸããããããããã€ãã¹ãããµãŒãã¹ã®ããŒã¿ããŒã¹ã«ã¯ã¢ã¯ã»ã¹ããŸãããAPIãä»ãããã¹ãŠã®ãªã¯ãšã¹ãã
- ä»æ§ç¬¬äžããŸãããããã³ã«ã«ã€ããŠèª¬æããæ¿èªããŸãã
ãããã£ãŠãåãå ¥ããããŠããååãšã¢ãããŒãã«åŸã£ãŠã·ã¹ãã ãç¹°ãè¿ãå€æãããšã次ã®ã¢ãŒããã¯ãã£
ã«å°éããŸããããã§ã«ããªãã®æ°ã®ããŒã¿ã¹ããªãŒã ãæã€Kafkaã®åœ¢åŒã®ããŒã¿ãã¹ããã§ã«ãããŸãããæ¹åéã§åæèŠæ±ããããŸãã
ã¢ãŒããã¯ãã£ã®éçºèšç»
åé ã§ç³ãäžããŸããããã«ãããªããªãŒã¯ã©ãã¯æ¥éã«æé·ããŠãããèšå€§ãªæ°ã®æ°æ©èœããªãªãŒã¹ããŠããŸãããããŠãããã«å®éšãè¡ãïŒNikolay Arkhipovãããã«ã€ããŠè©³çŽ°ã«è©±ããŸããïŒã仮説ããã¹ãããŸããããããã¹ãŠã«ãããèšå€§ãªæ°ã®ããŒã¿ãœãŒã¹ãšããããã䜿çšããããã®ããã«å€ãã®ãªãã·ã§ã³ãçãŸããŸãããããŠãããŒã¿ãããŒã®æ£ãã管çãããã¯æ£ããæ§ç¯ããããã«éåžžã«éèŠã§ãããããç§ãã¡ã®ä»äºã§ãã
ä»åŸãããã¹ãŠã®Delivery ClubãµãŒãã¹ã«å¯ŸããŠéçºãããã¢ãããŒããå®è£ ãç¶ããŸããã€ãŸããããŒã¿ãã¹ã®åœ¢åŒã§ãã©ã³ã¹ããŒããåãããã©ãããã©ãŒã ã®åšãã«ãµãŒãã¹ãšã³ã·ã¹ãã ãæ§ç¯ããŸãã
äž»ãªã¿ã¹ã¯ã¯ãã·ã¹ãã å ã®ãã¹ãŠã®ãã¡ã€ã³ã«é¢ããæ å ±ãããŒã¿ãã¹ã«ç¢ºå®ã«æäŸãããããã«ããããšã§ããæ°ããããŒã¿ã䜿çšããæ°ãããµãŒãã¹ã®å Žåãããã¯åé¡ã§ã¯ãããŸããããµãŒãã¹ã®æºå段éã§ããã¡ã€ã³ããŒã¿ãKafkaã«ã¹ããªãŒãã³ã°ããå¿ èŠããããŸãã
ããããæ°ãããµãŒãã¹ã«å ããŠãã¡ã€ã³ãã¡ã€ã³ã§ãã泚æãšå® é 䟿ã«é¢ããããŒã¿ã䜿çšãã倧èŠæš¡ãªã¬ã¬ã·ãŒãµãŒãã¹ããããŸãããã®ããŒã¿ããçŸç¶ã®ãŸãŸãã¹ããªãŒãã³ã°ããããšã¯åé¡ããããŸããããã¯ãæ°åã®ããŒãã«ã«åæ£ããŠä¿åãããæ¯åãã¹ãŠã®å€æŽãçæããæçµãšã³ãã£ãã£ãæ§ç¯ããã®ã«éåžžã«ã³ã¹ãããããããã§ãã
ãã®ãããå€ããµãŒãã¹ã«ã¯Debeziumã䜿çšããããšã«ããŸããããbin-logã«åºã¥ããŠããŒãã«ããçŽæ¥æ å ±ãã¹ããªãŒãã³ã°ã§ããŸãããã®çµæãããŒãã«ã®çããŒã¿ã䜿çšããŠæ¢æã®ãããã¯ãååŸã§ããŸãããã ããå ã®åœ¢åŒã§ã®äœ¿çšã«ã¯é©ããŠããªããããã«ãã«ã¬ãã«ã®ãã©ã³ã¹ãä»ããŠãæ¶è²»è ãç解ã§ãã圢åŒã«å€æãããæ°ãããããã¯ã«ããã·ã¥ãããŸãããããã£ãŠãããŒãã«ããã®çããŒã¿ãå«ãäžé£ã®ãã©ã€ããŒããããã¯ããããããã¯äŸ¿å©ãªåœ¢åŒã«å€æãããæ¶è²»è ã䜿çšã§ããããã«ãããªãã¯ãããã¯ã«ãããŒããã£ã¹ããããŸãã
KafkaãããŸããŸãªçš®é¡ã®ãããã¯ã«æžã蟌ãããã®ãšã³ããªãã€ã³ããããã€ããããããããã«ãã¹ãã¬ãŒãžåŽã§åœ¹å²ããšã®ã¢ã¯ã»ã¹æš©ãå®è£ ããConfluentãä»ããŠããŒã¿ãã¹åŽã§ã¹ããŒãæ€èšŒãè¿œå ããŸãã
ããŒã¿ãã¹ããããã«é¢ããŠããµãŒãã¹ã¯å¿ èŠãªãããã¯ããã®ããŒã¿ãæ¶è²»ããŸãããããŠãç§ãã¡èªèº«ããã®ããŒã¿ãã·ã¹ãã ã«äœ¿çšããŸããããšãã°ãKafkaConnectãä»ããŠElasticSearchãŸãã¯DWHã«ã¹ããªãŒãã³ã°ããŸããåŸè ã®å Žåãããã»ã¹ã¯ããè€éã«ãªããŸãããã®äžã®æ å ±ããã¹ãŠã®äººãå©çšã§ããããã«ããã«ã¯ãå人ããŒã¿ããã¹ãŠåé€ããå¿ èŠããããŸãã
ãŸããã¢ããªã¹ã®åé¡ãæçµçã«è§£æ±ºããå¿ èŠããããŸããè¿ãå°æ¥ã«èããéèŠãªããã»ã¹ããŸã ãããŸããæè¿ã§ã¯ã泚æäœæã®æåã®æ®µéã§ãããã¹ã±ããã®äœæãåãåããæ¯æããåŠçããå¥ã®ãµãŒãã¹ããã§ã«å±éããŠããŸãã次ã«ããã®ããŒã¿ãã¢ããªã¹ã«éä¿¡ããŠããã«åŠçããŸããããŠãä»ã®ãã¹ãŠã®æäœã¯ãã¯ãåæãå¿ èŠãšããŸããã
ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠãã®ãªãã¡ã¯ã¿ãªã³ã°ãééçã«è¡ãæ¹æ³
ãã1ã€ã®äŸãã¬ã¹ãã©ã³ã®ã«ã¿ãã°ã«ã€ããŠèª¬æããŸããæããã«ãããã¯éåžžã«å¿ããå Žæã§ãããGoã®å¥ã®ãµãŒãã¹ã«ç§»åããããšã«ããŸãããéçºãã¹ããŒãã¢ããããããã«ããã€ã¯ã¢ãŠã§ã€ã2ã€ã®æ®µéã«åããŸããã
- ãŸãããµãŒãã¹å ã§ãã¢ããªã¹ã®ããŒã¹ã®ã¬ããªã«ã«çŽæ¥ç§»åããããããããŒã¿ãååŸããŸãã
- 次ã«ãDebeziumãä»ããŠå¿ èŠãªããŒã¿ã®ã¹ããªãŒãã³ã°ãéå§ãããµãŒãã¹èªäœã®ããŒã¿ããŒã¹ã«èç©ããŸãã
ãµãŒãã¹ã®æºåãæŽããšããµãŒãã¹ãçŸåšã®ã¯ãŒã¯ãããŒã«ééçã«çµ±åããæ¹æ³ãçåèŠãããŸãããã©ãã£ãã¯åå²ã¹ããŒã ã䜿çšããŸãããã¯ã©ã€ã¢ã³ãããã®ãã¹ãŠã®ãã©ãã£ãã¯ããµãŒãã¹
mobile-gateway
ã«éãããã¢ããªã¹ãšæ°ãããµãŒãã¹ã«åå²ãããŸãããæåã¯ãã¢ããªã¹ãä»ããŠãã¹ãŠã®ãã©ãã£ãã¯ãåŠçãç¶ããŸãããããããã®äžéšãæ°ãããµãŒãã¹ã«è€è£œãããããã®å¿çãæ¯èŒããŠãã¡ããªãã¯ã®äžäžèŽã«é¢ãããã°ãæžãçããŸãããããã«ãããæŠéæ¡ä»¶ã§ã®ãµãŒãã¹ã®ãã¹ãã®éææ§ã確ä¿ããŸããããã®åŸãæ°ãããµãŒãã¹ãã¢ããªã¹ãå®å
šã«çœ®ãæãããŸã§ãåŸã
ã«åãæ¿ããŠãã©ãã£ãã¯ãå¢ããã ãã§ããã
äžè¬çã«ãç§ãã¡ã¯éå¿çãªèšç»ãã¢ã€ãã¢ãããããæã£ãŠããŸããç§ãã¡ã¯ãããªãæŠç¥ã®éçºãå§ããã°ããã§ããããã®æçµçãªåœ¢ã¯æ確ã§ã¯ãªãããã¹ãŠãæåŸ ã©ããã«æ©èœãããã©ããã¯äžæã§ããå®è£ ããŠçµè«ãââåºããšããã«ãçµæã確å®ã«å ±æããŸãã
ããããã¹ãŠã®æŠå¿µã®å€æŽã«å ããŠãç§ãã¡ã¯ç©æ¥µçã«æ©èœãéçºãã補åã«æäŸãç¶ããŸãããããã«ã¯ã»ãšãã©ã®æéãããããŸããããã§ãæåã«èª¬æãã2çªç®ã®åé¡ã«ã€ããŠèª¬æããŸããéçºè ã®æ°ïŒ180人ïŒãèæ ®ãããšãæ°ãããµãŒãã¹ã®ã¢ãŒããã¯ãã£ãšå質ãæ€èšŒãããšããåé¡ãçºçããŸããæ°ãããã®ã¯ã·ã¹ãã ãå£åãããŠã¯ãªãããæåããæ£ããçµã¿èŸŒãŸããŠããå¿ èŠããããŸãããããããããç£æ¥èŠæš¡ã§å¶åŸ¡ããæ¹æ³ã¯ïŒ
建ç¯å§å¡äŒ
ãã®å¿ èŠæ§ã¯ããã«ã¯çããŸããã§ãããéçºããŒã ãå°ããã£ããšããã·ã¹ãã ãžã®å€æŽã¯ç°¡åã«å¶åŸ¡ã§ããŸããããããã人ãå€ããã°å€ãã»ã©ããããè¡ãã®ã¯é£ãããªããŸãã
ããã«ãããå®éã®åé¡ïŒäžé©åãªèšèšã®ããã«ãµãŒãã¹ãè² è·ã«èããããªãã£ãïŒãšæŠå¿µçãªåé¡ïŒãåæããŠããã«ç§»åããŸããããè² è·ãå°ãããïŒã®äž¡æ¹ãçºçããŸãã
ã»ãšãã©ã®åé¡ãããŒã ã¬ãã«ã§è§£æ±ºãããŠããããšã¯æããã§ããããããçŸåšã®ã·ã¹ãã ãžã®ããçš®ã®è€éãªçµ±åã«ã€ããŠè©±ããŠããå ŽåãããŒã ã¯åã«ååãªå°éç¥èãæã£ãŠããªãå¯èœæ§ããããŸãããããã£ãŠãç§ã¯ããããæ¹åããã®äººã ã®ããçš®ã®åäŒãäœãããã£ãã®ã§ããããã«å¯ŸããŠã建ç¯ã«ã€ããŠã®è³ªåãæã¡ã培åºçãªçããåŸãããšãã§ããŸããã
ããã§ãããŒã ãªãŒããŒããã£ã¬ã¯ã·ã§ã³ãªãŒããŒãCTOãå«ãã¢ãŒããã¯ãã£å§å¡äŒãèšç«ããŸãããç§ãã¡ã¯2é±éããšã«äŒåãéããã·ã¹ãã ã§èšç»ãããŠããäž»èŠãªå€æŽã«ã€ããŠè©±ãåãããç¹å®ã®åé¡ã解決ããŸãã
ãã®çµæã倧ããªå€æŽãå¶åŸ¡ããããšã§åé¡ã解決ããŸãããDeliveryClubã®ã³ãŒãã®å質ã«å¯Ÿããäžè¬çãªã¢ãããŒãã®åé¡ãæ®ã£ãŠããŸããããŸããŸãªããŒã ã®ã³ãŒããŸãã¯ãã¬ãŒã ã¯ãŒã¯ã®ç¹å®ã®åé¡ã¯ãããŸããŸãªæ¹æ³ã§è§£æ±ºã§ããŸããç§ãã¡ã¯Spotifyã¢ãã«ã§ã®ã«ãã«æ¥ãŸããïŒãããã¯ããã€ãã®æè¡ã«ç¡é¢å¿ã§ã¯ãªã人ã ã®çµåã§ããããšãã°ãã®ã«ãGoãPHPãFrontendããããŸãã
圌ãã¯çµ±äžãããããã°ã©ãã³ã°ã¹ã¿ã€ã«ãèšèšãšã¢ãŒããã¯ãã£ãžã®ã¢ãããŒããéçºãããšã³ãžãã¢ãªã³ã°æåã®åœ¢æãšç¶æãæ¯æŽããŸãæé«ã¬ãã«ã§ããŸããç¬èªã®ããã¯ãã°ãããããã®äžã§å éšããŒã«ãããšãã°ãã€ã¯ããµãŒãã¹çšã®Goãã³ãã¬ãŒããæ¹åããŸãã
補åã³ãŒã
倧ããªå€æŽã建ç¯å§å¡äŒãééããã®ã«ããã³ãŒãã®æåå šè¬ãç£èŠããŠãããšããäºå®ã«å ããŠãConfluenceã§ãã§ãã¯ãªã¹ããäœæãããšãããæ¬çªçšã®ãµãŒãã¹ãæºåããéèŠãªæ®µéããŸã ãããŸãããŸãããã§ãã¯ãªã¹ããäœæãããšãã«ãéçºè ã¯èªåã®æ±ºå®ãå床è©äŸ¡ããŸãã第äºã«ãããã¯éçšäžã®èŠä»¶ã§ããããã¯ãæ¬çªç°å¢ã§ã©ã®ãããªæ°ãããµãŒãã¹ã衚瀺ãããããç解ããå¿ èŠãããããã§ãã
ãã§ãã¯ãªã¹ãã¯éåžžââã次ã®ããšã瀺ããŠããŸãã
- ãµãŒãã¹ã«è²¬ä»»ããããŸãïŒããã¯éåžžããµãŒãã¹ã®æè¡ãªãŒããŒã§ãïŒã
- ã«ã¹ã¿ãã€ãºãããã¢ã©ãŒããå«ãããã·ã¥ããŒããžã®ãªã³ã¯ã
- ãµãŒãã¹ã®èª¬æãšSwaggerãžã®ãªã³ã¯ã
- çžäºäœçšãããµãŒãã¹ã®èª¬æã
- ãµãŒãã¹ã®æšå®è² è·ã
- health-check. URL, . Health-check - : 200, , - . , health check URLâ , , , PostgreSQL Redis.
ãµãŒãã¹ã¢ã©ãŒãã¯ãã¢ãŒããã¯ãã£ã®æ¿èªã®æ®µéã§èšèšãããŠããŸããéçºè ã¯ããµãŒãã¹ãæå¹ã§ããããšãç解ããæè¡çãªææšã ãã§ãªã補åã®ææšãèæ ®ã«å ¥ããããšãéèŠã§ããããã§ã¯ãããžãã¹ã³ã³ããŒãžã§ã³ãæå³ããã®ã§ã¯ãªãããµãŒãã¹ãæ£åžžã«æ©èœããŠããããšã瀺ãææšãæå³ããŸãã
ããšãã°
courier-tracker
ããããäžã®å®
é
䟿æ¥è
ã远跡ãããäžèšã§ãã§ã«èª¬æãããµãŒãã¹ãå©çšã§ããŸãããã®äžã®äž»ãªææšã®1ã€ã¯ã座æšãæŽæ°ãããå®
é
䟿æ¥è
ã®æ°ã§ããçªç¶ãäžéšã®ã«ãŒããé·æéæŽæ°ãããªãå Žåããåé¡ãçºçããŸããããšããã¢ã©ãŒãã衚瀺ãããŸããã©ããã§ããŒã¿ãååŸããªãã£ãããããŒã¿ããŒã¹ã«èª€ã£ãŠå
¥åããããä»ã®ãµãŒãã¹ã倱æããå¯èœæ§ããããŸããããã¯æè¡çãªææšã補åã®ææšã§ã¯ãããŸãããããµãŒãã¹ã®å®è¡å¯èœæ§ã瀺ããŠããŸãã
ææšã«ã€ããŠã¯ãGraylogãšPrometheusã䜿çšããããã·ã¥ããŒããäœæããGrafanaã§ã¢ã©ãŒããèšå®ããŸãã
æºåã®éã«ãããããããæ¬çªç°å¢ãžã®ãµãŒãã¹ã®æäŸã¯éåžžã«é«éã§ãããã¹ãŠã®ãµãŒãã¹ã¯æåã«Dockerã«ããã±ãŒãžåãããKubernetesã®åä»ããã£ãŒããäœæãããåŸãèªåçã«ã¹ããŒãžã«ããŒã«ã¢ãŠãããããã®åŸããã¹ãŠãJenkinsã®ãã¿ã³ã«ãã£ãŠæ±ºå®ãããŸãã
prodãžã®æ°ãããµãŒãã¹ã®å±éã¯ãJiraã®ç®¡çè ã«ã¿ã¹ã¯ãå²ãåœãŠãããšã§æ§æãããŸããããã«ããã以åã«æºåãããã¹ãŠã®æ å ±ãæäŸãããŸãã
ããŒãã®äž
çŸåšãPHPãšGoã§èšè¿°ããã162ã®ãã€ã¯ããµãŒãã¹ããããŸãããããã¯çŽ50ïŒ ãã50ïŒ ã®ãµãŒãã¹éã§åæ£ãããŸãããæåã«ãGoã§ããã€ãã®é«è² è·ãµãŒãã¹ãæžãçŽããŸããããã®åŸãGoã¯æ¬çªç°å¢ã§ã®ä¿å®ãšç£èŠã容æã§ããããšã³ããªã®ãããå€ãäœãããšãæããã«ãªããŸããããã®ãããæè¿ã¯Goã®ã¿ã§ãµãŒãã¹ãäœæããŠããŸãã Goã®æ®ãã®PHPãµãŒãã¹ãæžãçŽãç®çã¯ãããŸãããããã¯ããã®æ©èœãéåžžã«ããŸãåŠçããŸãã
PHPãµãŒãã¹ã«ã¯ãSymfonyãããããã®äžã«ç¬èªã®å°ããªãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããŸããããã¯ããµãŒãã¹ã«å ±éã®ã¢ãŒããã¯ãã£ã課ããŸãããã®ãããã§ããµãŒãã¹ã®ãœãŒã¹ã³ãŒããå ¥åããããã®ãããå€ãäœããªããŸããã©ã®ãµãŒãã¹ãéããŠãããã®ãµãŒãã¹ã®å 容ãšå Žæãåžžã«æ確ã«ãªããŸãããŸãããã¬ãŒã ã¯ãŒã¯ã¯ããµãŒãã¹éã®éä¿¡ã®ãã©ã³ã¹ããŒãã¬ã€ã€ãŒãã«ãã»ã«åããŸããéçºè ã«ãšã£ãŠããµãŒãããŒãã£ãµãŒãã¹ãžã®èŠæ±ã¯ãé«ã¬ãã«ã®æœè±¡åãæ€èšããŸãã
ããã§ãèŠæ±ã®DTOã圢æãïŒ$courierResponse = $this->courierProtocol->get($courierRequest);
$courierRequest
ïŒãç¹å®ã®ãšã³ããã€ã³ãã®ã©ãããŒã§ããç¹å®ã®ãµãŒãã¹ã®ãããã³ã«ãªããžã§ã¯ãã®ã¡ãœãããåŒã³åºããŸããå
éšã§ã¯ããªããžã§ã¯ãã¯$courierRequest
ãªã¯ãšã¹ããªããžã§ã¯ãã«å€æãããDTOããã®ãã£ãŒã«ãã§åããããŸããããã¯ãã¹ãŠæè»æ§ããããŸãããã£ãŒã«ãã¯ãããããŒãšãªã¯ãšã¹ãURLèªäœã®äž¡æ¹ã«æ¿å
¥ã§ããŸãã次ã«ããªã¯ãšã¹ãã¯cURLãä»ããŠéä¿¡ãããResponseãªããžã§ã¯ããååŸããŠãæåŸ
ãããªããžã§ã¯ãã«å€æãçŽããŸã$courierResponse
ã
ããã«ãããéçºè ã¯ãäœã¬ãã«ã§ã®å¯Ÿè©±ã®è©³çŽ°ãªãã§ãããžãã¹ããžãã¯ã«éäžã§ããŸãããããã³ã«ã®ãªããžã§ã¯ãããµãŒãã¹ã®èŠæ±ãšå¿çã¯ãå¥ã®ãªããžããªïŒãã®ãµãŒãã¹ã®SDKïŒã«ãããŸãããã®ãããã§ããã®ãããã³ã«ã䜿çšããããµãŒãã¹ã¯ãSDKãã€ã³ããŒãããåŸãåä»ããããã³ã«ããã±ãŒãžå šäœãåãåããŸãã
ãã ãããã®ããã»ã¹ã«ã¯å€§ããªæ¬ ç¹ããããŸãããã¹ãŠã®DTOãæåã§èšè¿°ããããããSDKã䜿çšãããªããžããªã®ä¿å®ãé£ããã䟿å©ãªã³ãŒãçæã容æã§ã¯ãããŸãããè©Šè¡ã¯ãããŸããããæçµçã«ã¯Goãžã®ç§»è¡ãèãããšãããã«æéãè²»ãããŸããã§ããã
ãã®çµæããµãŒãã¹ãããã³ã«ã®å€æŽã¯ããµãŒãã¹èªäœãSDKãããã³ãã®ãããã³ã«ãå¿ èŠãšãããµãŒãã¹ãªã©ãããã€ãã®ãã«ãªã¯ãšã¹ãã«å€ããå¯èœæ§ããããŸããåŸè ã§ã¯ãå€æŽãåæ ãããããã«ãã€ã³ããŒããããSDKã®ããŒãžã§ã³ãäžããå¿ èŠããããŸããããã«ãããæ°ããéçºè ãããã質åãå¯ããããŸããããã©ã¡ãŒã¿ãå€æŽããã°ãããªã®ã«ããªã3ã€ã®ç°ãªããªããžããªã«3ã€ã®ãªã¯ãšã¹ããè¡ãå¿ èŠãããã®ã§ããïŒïŒã
Goã§ã¯ããã¹ãŠãã¯ããã«ç°¡åã§ããåªããã³ãŒããžã§ãã¬ãŒã¿ãŒããããŸãïŒSergey Popovãããã«é¢ãã詳现ãªèšäºãæžããŸããïŒïŒããã®ãããã§ãããã³ã«å šäœãå ¥åãããçŸåšããã¹ãŠã®ä»æ§ãå¥ã®ãªããžããªã«ä¿åãããªãã·ã§ã³ã«ã€ããŠãè°è«ãããŠããŸãããããã£ãŠã誰ããä»æ§ãå€æŽããå Žåãããã«äŸåãããã¹ãŠã®ãµãŒãã¹ã¯ããã«æŽæ°ãããããŒãžã§ã³ã®äœ¿çšãéå§ããŸãã
ãã¯ãã«ã«ã¬ãŒããŒ
ãã§ã«è¿°ã¹ãGoãšPHPã«å ããŠãç§ãã¡ã¯ä»ã®èšå€§ãªæ°ã®ãã¯ãããžãŒã䜿çšããŠããŸãããããã¯æ¹åããšã«ç°ãªããç¹å®ã®ã¿ã¹ã¯ã«ãã£ãŠç°ãªããŸããåºæ¬çã«ãããã¯ãšã³ãã§ã¯æ¬¡ã®ãã®ã䜿çšããŸãã
Python
ãããŒã¿ãµã€ãšã³ã¹ããŒã ãæžããŠããŸããKotlin
ããã³Swift
-ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®éçºçšãPostgreSQL
ããŒã¿ããŒã¹ãšããŠã§ãããäžéšã®å€ããµãŒãã¹ã¯ãŸã MySQLãå®è¡ããŠããŸãããã€ã¯ããµãŒãã¹ã§ã¯ãããã€ãã®ã¢ãããŒãã䜿çšããŸããåãµãŒãã¹ã«ã¯ç¬èªã®ããŒã¿ããŒã¹ããããäœãå ±æããŸããããµãŒãã¹ããã€ãã¹ããããŒã¿ããŒã¹ã«ã¯ã¢ã¯ã»ã¹ãããAPIãä»ããŠã®ã¿ã¢ã¯ã»ã¹ããŸããClickHouse
-åæã«é¢é£ããé«åºŠã«å°éåããããµãŒãã¹çšãRedis
ããã³Memcached
ã¡ã¢ãªå ã¹ãã¬ãŒãžãšããŠã
ãã¯ãããžãŒãéžæãããšããç§ãã¡ã¯ç¹å¥ãªååã«å°ãããŸããäž»ãªèŠä»¶ã®1ã€ã¯ã䜿ããããã§ããéçºè ã«ãšã£ãŠæãã·ã³ãã«ã§ç解ãããããã¯ãããžãŒã䜿çšããåãå ¥ããããã¹ã¿ãã¯ã«å¯èœãªéãæºæ ããŸããç¹å®ã®ãã¯ãããžãŒã®ã¹ã¿ãã¯å šäœãç¥ããã人ã®ããã«ãéåžžã«è©³çŽ°ãªãã¯ãã«ã«ã¬ãŒããŒããŸãšããŸããã
çç·šå°èª¬
ãã®çµæãã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ãããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã«ç§»è¡ããã³ã¢ããã³ããŒã¿ãã¹ã¿ãŒã§ãããã©ãããã©ãŒã ã®åšå²ã®æ¹åïŒãã¡ã€ã³é åïŒã«ãã£ãŠçµ±åããããµãŒãã¹ã®ã°ã«ãŒãããã§ã«ååšããŸãã
ç§ãã¡ã¯ãããŒã¿ã¹ããªãŒã ãåç·šæããæ¹æ³ãšãæ°æ©èœã®éçºé床ã«åœ±é¿ãäžããã«åç·šæããæ¹æ³ã«ã€ããŠã®ããžã§ã³ãæã£ãŠããŸããå°æ¥çã«ã¯ããããç§ãã¡ãå°ããå Žæã«ã€ããŠç¢ºå®ã«ãç¥ããããŸãã
ãŸããç¥èã®ç©æ¥µçãªç§»è»¢ãšå€æŽãå ããæ£åŒãªããã»ã¹ã®ãããã§ãã¢ãŒããã¯ãã£ã®å€é©ããã»ã¹ãé ãããããšã®ãªãå€æ°ã®æ©èœãæäŸããããšãã§ããŸãã
èªãã§ãããŠããããšãïŒ