ãŸãšã
- ã€ãã³ãé§ååã¢ãŒããã¯ãã£ã䜿çšããŠæ¥ç¶ãæžããããšã¯ããã€ã¯ããµãŒãã¹ãèšèšããéã®éåžžã«äžè¬çãªã¢ã€ãã¢ã§ãã
- ã€ãã³ãé§ååã®ããžãã¹ããžãã¯ã¯ãåæ£ããŒã¿ããã³æšªæçãªæ©èœã«é©ããŠããŸãã ãã ããã€ãã³ãããµãŒãã¹éã§è»¢éããããã®è€éãªãã§ãŒã³ãæ§ç¯ããªãã§ãã ããã ã€ãã³ãã§ã¯ãªãã³ãã³ãã䜿çšããŠãµãŒãã¹ã調æŽãããšãããã«å€ãã®ãµãŒãã¹ãå©çšã§ããŸãã
- ESBïŒèšäºã®ã³ã³ããã¹ãã§ã¯ãEnterprise Service Busã-ãã¹ããŒããã¹ã-çŽTranslïŒããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãšã®çµã¿åããã¯äžååã§ãã ã·ã³ãã«ãªããŒã¿äŒéãã£ãã«ãšã¹ããŒãã¯ã©ã€ã¢ã³ãïŒã¹ããŒããšã³ããã€ã³ãããã ãã€ãïŒã䜿çšããããšããå§ãããŸãã ãã ãã1ã€ã®ç¥ã®ãããªãµãŒãã¹ãåŸãã®ãæããŠãä»ã®ãµãŒãã¹ã®ãµãŒãã¹ã³ãŒãã£ããŒã¿ãŒãæåŠããªãã§ãã ãããããžãã¹ããžãã¯ã«ã¯ãŸã 家ãå¿ èŠã§ãã
- éå»ã®ã¯ãŒã¯ãããŒãšã³ãžã³ã¯ã»ãšãã©ãã³ããŒã«äŸåããŠããŸããã ããããããŒãã³ãŒãããœãªã¥ãŒã·ã§ã³-å®éã«ã¯ãéçºè ã«ãšã£ãŠæªå€¢ã«å€ãããŸããã çŸåšã軜éã§ã·ã³ãã«ãªã¯ãŒã¯ãããŒã³ã³ãããŒã«ãããããã®å€ãã¯ãªãŒãã³ãœãŒã¹ã§ãã
- ç¬èªã®ã¹ããŒããã·ã³ãèšè¿°ããæéãç¡é§ã«ããªãã§ãã ããã 代ããã«ãåžè²©ã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããŠè€éããé¿ããŠãã ããã
ã€ãã³ãé§ååã¢ãŒããã¯ãã£ã䜿çšããŠãççµåãå®çŸããŸãã
ãã®ãããªã¢ããã€ã¹ã¯ããã€ã¯ããµãŒãã¹ã®ãããã¯ã«é¢ããè°è«ã§ããèŠãããŸãã ç¹ã«ã DDDïŒDomain-Driven DesignïŒã³ãã¥ããã£ã§äººæ°ãããããµããŒããããŠããŸãã ããã«ãããããããã€ãã³ãã¢ãã«ã®æœåšçãªæ¯æè ã§ããèšäºã®èè ã¯ã質åãããŸããã çããšããŠã3ã€ã®äžè¬çãªä»®èª¬ãèæ ®ãããŸããã
- ã€ãã³ãã«ããæ¥ç¶æ§ãäœäžãã
- ç¥ãäžå¿ãšããïŒäžå€®ç®¡çïŒãµãŒãã¹ã¯é¿ããã¹ãã§ã
- ã¯ãŒã¯ãããŒãšã³ãžã³ã«ã¯ç¬èªã®çã¿ããã
以äžã®äŸã¯äººçºçã§ãããZalandoã§ã®æ³šæåŠçã®å®éã®ããžãã¹ããã»ã¹ã«è§ŠçºãããŠããŸãã 4ã€ã®åé¢ãããã¢ããªã±ãŒã·ã§ã³ã«4ã€ã®å¢çä»ãã³ã³ããã¹ãããããšããŸãïŒãããã¯ã ãã€ã¯ããµãŒãã¹ãšä»ã®ã¢ãŒããã¯ãã£ã®ä»£è¡šã®äž¡æ¹ã§ããå¯èœæ§ããããŸãïŒã
ã€ãã³ãã®é¢é£æ§ãæžããæ¹æ³
ååãåšåº«ã«ãããããã«åºè·ã§ãããã©ãããCheckoutãµãŒãã¹ããŠãŒã¶ãŒã«éç¥ããå¿ èŠããããšããŸãã ãã¡ãããCheckoutã¯åšåº«ãµãŒãã¹ã«åšåº«ååã®æ°éãçŽæ¥ç §äŒã§ããŸãããããã«ããCheckoutã¯åšåº«ã«äŸåããŸãã æ¥ç¶æ§ã匷åããŸãã
代æ¿ã¢ãããŒãïŒåšåº«ã¯åšåº«å€æŽã€ãã³ããçºè¡ããŸãã Checkoutã¯ã€ãã³ãããªãã¹ã³ããææ°ã®å€ãããŒã«ã«ãã£ãã·ã¥ã«ä¿åããŸãã ãã®ããŒã¿ã¯ã³ããŒã§ããããã®å®å šãªæŽåæ§ã¯ãŸã£ããå¿ èŠãããŸããã ãã ããåæ£ã·ã¹ãã ã§ã¯éåžžãäžå®ã¬ãã«ã®ã€ãã³ãæŽåæ§ãå¿ èŠã§ãã
å¥ã®ã·ããªãªïŒãšã³ãããŒãšã³ãæ©èœã 泚æã®ç¹å®ã®ã¹ãããã§é¡§å®¢ã«éç¥ãéä¿¡ããå¿ èŠããããšããŸãã 顧客ã®èšå®ãšé£çµ¡å ã®è©³çŽ°ãä¿åããå®å šã«èªåŸçãªéç¥ãµãŒãã¹ãã·ã¹ãã ã«è¿œå ã§ããŸãã ãæ¯æãã®åãåãããã泚æã®çºéããªã©ã®ã€ãã³ããåä¿¡ãããšããã®ãµãŒãã¹ã¯ä»ã®ãµãŒãã¹ãžã®å€æŽãå¿ èŠãšããã«æçŽãéä¿¡ããŸãã ã芧ã®ãšããã ã€ãã³ãé§ååã¢ãŒããã¯ãã£ã¯éåžžã«æè»ã§ãããæ°ãããµãŒãã¹ã®è¿œå ãå€ããµãŒãã¹ã®æ¡åŒµãç°¡åã«è¡ãããšãã§ããŸãã
è€éãªã€ãã³ãéä¿¡ãã§ãŒã³ã®å±éºæ§
ã€ãã³ãé§ååã¢ãŒããã¯ãã£ãå®è£ ããéçºè ã¯ãã°ãã°å€¢äžã«ãªããŸããã€ãã³ãã¯ã·ã¹ãã ã®æ¥ç¶æ§ãéåžžã«äœäžãããã®ã§ãã©ãã§ããã€ã§ãã€ãã³ãã䜿çšããŸãããã åé¡ãçºçããã®ã¯ãããŒã ã1ã€ã®ãµãŒãã¹ããå¥ã®ãµãŒãã¹ãžã®äžé£ã®ã¡ãã»ãŒãžãéããŠããžãã¹ããã»ã¹ïŒæ³šæåŠçãªã©ïŒãå®è£ ãããšãã§ãã æãåçŽãªäŸãèããŠã¿ãŸãããããã§ãŒã³å ã®åãµãŒãã¹ã«ãäœãããããã©ã®ã€ãã³ããéä¿¡ããããèªåã§æ±ºå®ãããŸãã
ã¯ããåäœããŸãã ããããåé¡ã¯ããã§ãŒã³å ã®ãªã³ã¯ã®1ã€ãããã»ã¹å šäœã®æ確ãªããžã§ã³ãæã£ãŠããªãããšã§ãã ããã«ãããããžãã¹ããã»ã¹ãç解ããã®ãé£ãããªããïŒããã«éèŠãªããšã§ããïŒå€æŽããã®ãé£ãããªããŸãã çŸå®ã®äžçã§ã¯ãããžãã¹ããã»ã¹ã¯åçŽãšã¯ã»ã©é ããã®ã§ãããéåžžã¯ããã«å€ãã®ãµãŒãã¹ãå«ãŸããããšã«çæããŠãã ããã ãã®èšäºã®èè ã¯ã誰ã詳现ã«ç解ããŠããªãè€éãªãã€ã¯ããµãŒãã¹ã·ã¹ãã ãèŠãŠããŸããã
次ã«ãæ¯æããè¡ãåã«ãå庫ã§ååã®äºçŽãå®è£ ããæ¹æ³ã«ã€ããŠèããŸãã
泚æãå®äºããããã®æé ã®é åºãåçŽã«å€æŽããã«ã¯ãããã€ãã®ãµãŒãã¹ãä¿®æ£ããŠåå±éããå¿ èŠããããŸãïŒ ããã¯ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®ã¢ã³ããã¿ãŒã³ã§ãããã®äž»ãªååã¯ãæ¥ç¶æ§ã®äœäžãšåé¢æ§ã®åäžã«åªããããšã§ãã ãããã£ãŠãç¹ã«é«ãè€éããäºæ³ãããå Žåãåæ§ã®ãµãŒãã¹éããã»ã¹ã§ã€ãã³ãã䜿çšããåã«ããèããŠãã ããã
ããŒã ããã ãéäžç®¡çã®å¿ èŠãªã
ããžãã¹ããã»ã¹å šäœãå¥ã®ãµãŒãã¹ã«ä¿æããæ¹ãè³¢æã§ãã ãã®ãããªãµãŒãã¹ãããŒãžã£ãŒã¯ããæ¯æããè¡ãããªã©ã®ã³ãã³ããæ®ãã«éä¿¡ã§ããŸãã åæã«ãäºãã«é¢ãããã€ã¯ããµãŒãã¹ã®ç¥èã¯é¿ããã¹ãã§ãã èè ã¯ãã®ãã¿ãŒã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããšåŒãã§ããŸãã äŸïŒã泚æã¯ãæ¯æãåšåº«ãããã³åºè·ãµãŒãã¹ã管çïŒèª¿æŽïŒããŸããã
ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãšããã°ãå¥è·¡çãªãšã³ã¿ãŒãã©ã€ãºãµãŒãã¹ãã¹ïŒESBïŒãã¹ãšã ããžãã¹ããã»ã¹ã¢ããªã³ã°ïŒBPMïŒãœãªã¥ãŒã·ã§ã³ãæãæµ®ãã³ãŸãã ãããã®æŽç·Žãããç¬èªã®ããŒã«ã¯è©å€ãæªããæ£åœãªçç±ããããŸãã å€ãã®å Žåãç°¡åã§ç解ãããããã¹ããšè»œéãªã¢ããªã±ãŒã·ã§ã³é ä¿¡ã奪ãããŸãã åæã«ããžã§ãŒã ãºã«ã€ã¹ãšããŒãã£ã³ãã¡ãŠã©ãŒã¯ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®åºç€ã®å€ããç¯ãããã¹ããŒããšã³ããã€ã³ããšã·ã³ãã«ãªäŒéãã£ãã«ãïŒ ã¹ããŒããšã³ããã€ã³ãããã ãã€ã ïŒã®äœ¿çšãææ¡ããŸããã
äžèšã®å³ã¯ãã¹ããŒããã¹ã®äœ¿çšãæå³ãããã®ã§ã¯ãããŸããã 泚æåŠçã®ãã¹ãŠã®å¶åŸ¡ã¯ãåå¥ã®æ³šæãµãŒãã¹ãããŒãžã£ãŒã«å§ä»»ãããŸãã ããŒã ã¯ã奜ã¿ã®ãã¯ãããžãŒã䜿çšããŠããã®ãµãŒãã¹ã䟿å©ã«èªç±ã«å®è£ ã§ããŸãã ãããã£ãŠãããžãã¹ããã»ã¹ã®å€æŽã¯1ã€ã®ãã€ã¯ããµãŒãã¹ã®ã¿ã«åœ±é¿ããŸãã ããã«ãããžãã¹ããã»ã¹ã1ãæã«éäžãããšãç解ãããããªããŸãã
ãµã ãã¥ãŒãã³ã®èæž ã Building Microservices ãã§ã¯ãæéãçµã€ã«ã€ããŠããã®ãããªãµãŒãã¹ãããŒãžã£ãŒãç¥ã®ãããªã¢ã³ã¹ã¿ãŒã«æé·ãããªã¹ã¯ãèæ ®ããŠããŸãã ãã®ãããªç¥ã®ãµãŒãã¹ã¯ãã¹ãŠã®ããžãã¹ããžãã¯ãåéããæ®ãã¯è²§åŒ±ãªãµãŒãã¹ã«éåããããããã«æªãããšã«ããããã¯åçŽãªCRUDã«ãªããŸãã
ããã¯ãã€ãã³ãã¢ãŒããã¯ãã£ãæãªãã³ãã³ãã®äœ¿çšãåå ã§çºçããŸãããïŒ ãŸãã¯ããªãŒã±ã¹ãã¬ãŒã·ã§ã³èªäœã®åé¡ã§ããïŒ ã©ã¡ãããããŸããã ãã¡ãŠã©ãŒã®ãã¹ããŒããšã³ããã€ã³ãããèŠãŠã¿ãŸãããã ã¹ããŒããšã³ããã€ã³ãã®å®çŸ©ã¯äœã§ããïŒ åªããAPIãã¶ã€ã³ã æ¯æããµãŒãã¹ã®å Žåããè¿åã®æ¯æãããªã©ã®ã³ãã³ãã«å¿çãããæ¯æãå®äºãããæ¯æãã®å€±æããªã©ã®ã€ãã³ããå ¬éããé«ã¬ãã«APIãéçºã§ããŸãã ãã¹ãŠã®æ©å¯æ å ±ïŒããšãã°ããŠãŒã¶ãŒã®ã¯ã¬ãžããã«ãŒãã«é¢ããæ å ±ïŒã¯ããã€ã¯ããµãŒãã¹å ã«ã®ã¿ä¿æããå¿ èŠããããŸãã ãã®å ŽåãPaymentãã€ã¯ããµãŒãã¹ã¯ããµãŒãã¹ãããŒãžã£ãŒãŸãã¯ä»ã®èª°ãã䜿çšããŠãã貧匱ã«ãªããŸããã
é·æã«ããããµãŒãã¹
ã¹ããŒããšã³ããã€ã³ããšé©åãªã¯ã©ã€ã¢ã³ãAPIãéçºããã«ã¯ãäžéšã®ããã»ã¹ã«æéããããå¯èœæ§ããããšæ³å®ããå¿ èŠããããŸãããŸããèåŸã§å®éã®ããžãã¹äžã®åé¡ã解決ããå¿ èŠããããŸãã ã¯ã¬ãžããã«ãŒãã®æå¹æéãåããå Žåã顧客ã¯ç¶æ³ãä¿®æ£ããæ©äŒãåŸãå¿ èŠããããšä»®å®ããŸãïŒäŸã¯GitHubã«è§Šçºãããããžãã¹ã¢ã«ãŠã³ãã¯äžæãã®2é±éåŸã«ã®ã¿ééãããŸãïŒã æ¯æããµãŒãã¹ã顧客ã®ã¢ã¯ã·ã§ã³ãåŸ ã€ããšã«å¯Ÿå¿ããŠããªãå Žåã圌ã¯ãã®ã¿ã¹ã¯ã顧客ãã€ãŸã泚æãµãŒãã¹ã«å§ä»»ã§ããŸãã
ãã ãããã®æ©èœããã€ã¡ã³ããµãŒãã¹å ã«ä¿æãããšãã¢ãŒããã¯ãã£ãããã¯ãªãŒã³ã«ãªããDDDã®ãå¢çã³ã³ããã¹ããã®èãæ¹ãšã®äžè²«æ§ãé«ãŸããŸãã 顧客ãæ°ããã¯ã¬ãžããã«ãŒããéå§ãããŸã§åŸ æ©ãããšããäºå®ã¯ãæ¯æããåŒãç¶ãè¡ãããããšãæå³ããŸãã ãã®çµæãPayment APIã¯ã¯ãªãŒã³ã§ã·ã³ãã«ã«ãªããŸãã åŸ æ©ã2é±éã«ãªãããšããããŸããããããé·æã«ããããããžãã¹ããã»ã¹ãšåŒã³ãŸãã
ãµãŒãã¹ã¹ããŒã¿ã¹ã¹ãã¬ãŒãž
é·æå®è¡ããã»ã¹ã¯ããæ¯æããåŸ ã£ãŠããŸãããªã©ã®ç¶æ ãã©ããã«ä¿æããå¿ èŠããããŸãã åèµ·ååŸã«ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãç¶æããããšã¯ãæ°ããã¿ã¹ã¯ãšã¯ã»ã©é ããã®ã§ã次ã®2ã€ã®äžè¬çãªãœãªã¥ãŒã·ã§ã³ããããŸãã
- EntityãPersistent Actorãªã©ã«åºã¥ããŠç¬èªã®ç¶æ ä¿åã¡ã«ããºã ãäœæããŸãã 誰ãStatusåãæã€OrderããŒãã«ãäœæããããšããããŸããïŒ ããã ãã§ãïŒ
- ã¹ããŒããã·ã³ãŸãã¯ã¯ãŒã¯ãããŒãšã³ãžã³å šäœãç解ããåãå ¥ããŸãã ãã®ãããªããŒã«ã®å€ãã¯ãéåžžã«æçãããã®ãå«ããŠå©çšå¯èœã§ãã ããããé²æ©ã¯ãŸã æ¢ãŸã£ãŠããªããããšãã°ã NetflixãšUberã¯ãªãŒãã³ãœãŒã¹ãœãªã¥ãŒã·ã§ã³ãéçºããŠããã
ãã®èšäºã®èè ã®çµéšã«ãããšãç¶æ ãä¿åããããã®èªè»¢è»ã¯ããã°ãã°èªäœã®æéç¶æ ãã·ã³ã«é²åããŸãã æžãããã·ã¹ãã ãæ°ããã¿ã¹ã¯ãããããããã§ãã äŸïŒ
- ã¿ã€ã ã¢ãŠãã®ãµããŒãïŒãã¹ã±ãžã¥ãŒã©ãŒãè¿œå ããŸããããïŒã
- ã¬ããŒãããŒã«ïŒãããžãã¹ãã³ãSQLã䜿çšããŠé©åãªããŒã¿ãååŸããªãã®ã¯ãªãã§ãããïŒ
- ç£èŠããŒã«ã
æéç¶æ ãã·ã³ãäœæããã®ã¯ã "Not-Invented-Here"ã·ã³ãããŒã ã ãã§ãªããããžãã¹ããã»ã¹ãèªååããæãªããã®æ段ã«å€ãããšããåŠå®çãªè©å€ã®ãããã§ãã å€ãã®äººã¯ãåæ§ã®ããŒãã³ãŒããããŒã«ã§èŠããçµéšãããŠããŸãã çµå¶è ã¯ãéçºè ãæé€ããããšãæãã§ãã¯ãããžãŒãè³Œå ¥ããŸã...ãã¡ãããããã¯èµ·ãããŸããã 代ããã«ãééçŽã®ç¬èªæè¡ã®ãµããŒãã¯ITéšéã®è©ã«ããã£ãŠãããæ°žé ã«ç°è³ªã§æåŠãããèŠçŽ ã®ãŸãŸã§ãã
軜éã®ã¹ããŒããã·ã³ãšã¯ãŒã¯ãããŒãšã³ãžã³
æ°è¡ã®ã³ãŒããèšè¿°ããã ãã§ååãªãã·ã³ãã«ã§æè»ãªäœæ¥çšã®ããŒã«ããããŸãã ãããã¯ããŒãã³ãŒãããœãªã¥ãŒã·ã§ã³ã§ã¯ãªããéåžžã®éçºè ã©ã€ãã©ãªã§ãã 圌ãã¯æéç¶æ ãã·ã³ã§ä»äºãåŒãåããããã«ææãäžããå©çãããããå§ããŸãã
éåžžããã®ãããªããŒã«ã䜿çšãããšãBPMN ISOè¡šèšã䜿çšããããJSONãYAMLããŸãã¯JavaãGolangãªã©ã«åºã¥ãDSLã䜿çšããŠãã¯ãŒã¯ãããŒãã°ã©ãã£ã«ã«ã«èšè¿°ããããšãã§ããŸãã éèŠãªãã€ã³ãïŒã¯ãŒã¯ãããŒã®èª¬æ-ããã¯ãããã»ã¹ã§å®è¡ãããå®éã®ã³ãŒãã§ãã
BPMNãªã©ã¯ãæé管çãã¿ã€ã ã¢ãŠããããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ãšãã£ãããªãè€éãªæäœããµããŒãããŠããŸãã ããããããã¯ããªãäžè¬çã§æçããè¡šèšæ³ã§ãããããè€éãªåé¡ã解決ããããã®é©åæ§ã«ã€ããŠè©±ãããšãã§ããŸãã
äžã®å³ã§ã¯ãã¯ãŒã¯ãããŒã€ã³ã¹ã¿ã³ã¹ã¯ãGoods Fetchedãã€ãã³ãã®åä¿¡ãåŸ æ©ããŠããŸãããåŸ æ©æéã¯å¶éãããŠããŸãã ã¿ã€ã ã¢ãŠããçºçããå Žåãç¹å¥ãªè£æ£ã¢ã¯ã·ã§ã³ãå®è¡ããŠããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ãããŒã«ããã¯ããŸãã ãã®å Žåãæ¯æãã¯éä¿¡è ã«è¿ãããŸã-ã¹ããŒããã·ã³ã¯ä»¥åã«å®è¡ããããã¹ãŠã®ã¢ã¯ã·ã§ã³ãèšæ¶ããããã察å¿ãããã¹ãŠã®è£åã³ãŒããå®è¡ã§ããŸãã ã¹ããŒããã·ã³ãããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã管çã§ããã®ã¯ãããã§ã®èãæ¹ã¯äœè³ãã¿ãŒã³ãšåãã§ãã
ã°ã©ãã£ãã¯è¡šèšãäžçš®ã®ãã©ã€ãææžãã§ãããé³è åããŠå®éã®ã·ã¹ãã ããè±åŽããæ©äŒã¯ãããŸããã ãã¹ãã¯ã©ãã§ããïŒ äžéšã®ã©ã€ãã©ãªã¯ã以äžãå«ãåäœãã¹ãããµããŒãããŠããŸã é·æå®è¡ã·ããªãªåãã ããšãã°ã Camundaã¯ããã¹ãå®è¡ããšã«ãã¹ãå®è¡ã¹ã¯ãªãããå«ãHTMLãçæããŸããããã¯ãéåžžã®CIã¬ããŒãã«ç°¡åã«æ¿å ¥ã§ããŸãã ãã®å Žåãã°ã©ãã£ã«ã«ãªè¡šèšã¯ããã«å€§ããªæå³ãæã¡ãŸãïŒ
ã¯ãŒã¯ãããŒã©ã€ãã€ã³ãµã€ããµãŒãã¹
ç¹å®ã®ã¯ãŒã¯ãããŒãã¬ãŒã ã¯ãŒã¯ã®éžæãšäœ¿çšã¯ãåéçºããŒã ã®è£éã§åå¥ã«åæ£ããå¿ èŠããããŸãã ã¹ããŒããã·ã³ã¯å®è£ ã®è©³çŽ°ã§ããããµãŒãã¹ã®å€éšããã¯èŠããŸããã äŒæ¥ã«ãšã£ãŠå¯äžã®ã°ããŒãã«ãã¬ãŒã ã¯ãŒã¯ã¯å¿ èŠãããŸããã ã¹ããŒããã·ã³ã¯ãéçºãç°¡çŽ åããåãªãã©ã€ãã©ãªã§ãã
ããã«ãã¹ããŒããã·ã³ã¯ããžãã¹ããžãã¯ã®äžéšã§ãã ããŒã«ã«å¿ããŠãã¢ããªã±ãŒã·ã§ã³ã®ããã»ã¹ã«åã蟌ãïŒJavaãSpringãCamundaãªã©ïŒããã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªïŒ Zeebe ïŒãŸãã¯REST APIïŒCamundaããã³Netflix ConductorïŒãä»ããŠéä¿¡ããå¥ã®ããã»ã¹ãšããŠäœ¿çšã§ããŸãã å®è¡æéã®é·ãããžãã¹ã¿ã¹ã¯ããµããŒãããæ¢è£œã®ã¹ããŒããã·ã³ã䜿çšãããšãçã®ã¹ããŒããšã³ããã€ã³ããå®è£ ããããšã§ããžãã¹ããžãã¯ãšAPIèšèšã«éäžã§ããŸãã
ã³ãŒãã衚瀺
ãã©ã€çè«ã«é¥ãããšãªãããã®èšäºã®èè ã¯ãã¢ã¢ããªã±ãŒã·ã§ã³ãäœæãã GitHubã«æçš¿ããŸããã èšäºã§æ瀺ãããã¢ã€ãã¢ã®å®äŸããããŸãã
ãªãŒãã³ãœãŒã¹ã©ã€ãã©ãªïŒSpring BootãCamundaãApache KafkaïŒã®ã¿ã䜿çšããJavaã³ãŒãã
çµè«
- ã€ãã³ãã¯æ¥ç¶æ§ãäœäžãããŸããïŒ åžžã«ã§ã¯ãããŸããã ã€ãã³ãã¯ãåæ£åãšãšã³ãããŒãšã³ãæ©èœã«æé©ã§ããããµãŒãã¹ãããµãŒãã¹ãžã¡ãã»ãŒãžãéä¿¡ããããã®è€éãªãã§ãŒã³ãäœæããªãã§ãã ããã 代ããã«ã管çããŒã ãšãµãŒãã¹ã䜿çšããŠãã ããã
- äžå€®éæš©åã¯é¿ããã¹ãã§ããïŒ çä¿¡ãªãã ã¹ããŒãESBã¯ããã€ã¯ããµãŒãã¹ã§ã¯äžååã§ãã ã·ã³ãã«ãªäŒéãã£ãã«ãšã¹ããŒããšã³ããã€ã³ããåªå ããŸãã å éšã«ããžãã¹ããžãã¯ãåããã¹ããŒããµãŒãã¹-ãã¹ãŠãåžåããç¥ã®ãããªãµãŒãã¹ãããŒãžã£ãŒã®åºçŸãé²ããŸãã ã¹ããŒããµãŒãã¹ã¯ãé·æã«ãããããžãã¹ããã»ã¹ãå®è¡ã§ããŸãã
- ã¯ãŒã¯ãããŒãšã³ãžã³ã¯èŠçã§ããïŒ åžžã«ã§ã¯ãããŸããã éå»ã«ãã³ããŒããã¯ããããããŒãã³ãŒããããŒã«ãäœæããããšããŸããã çŸåšãäžè¬çãªåé¡ã解決ãã軜éã®ãªãŒãã³ãœãŒã¹ãã¬ãŒã ã¯ãŒã¯ããããŸãã æéç¶æ ãã·ã³ã埪ç°ããããæ¢è£œã®ããŒã«ã䜿çšããŸãã
ãã«ã³ãã©ãã«ãŒã é·æã«ãããããžãã¹ããã»ã¹ã«é¢é£ããèšå€§ãªæ°ã®ãœãããŠã§ã¢éçºãããžã§ã¯ãã«åå ãããã¬ãŒãã³ã°ãåããŸããã å«ãïŒZalandoïŒåœéçãªè¡£æå販売æ¥è ïŒããã³ããã€ãã®éä¿¡äŒç€Ÿã ããã€ãã®ãªãŒãã³ãœãŒã¹ã¯ãŒã¯ãããŒãšã³ãžã³ã®è²¢ç®è ã ãReal-Life BPMNããšããæ¬ã®èè ãã«ã ã³ãã®å ±ååµç«è ã
ããŒãã£ã³ã»ã·ããã¯ã ãšãã«ã®ãŒã»ã¯ã¿ãŒãéä¿¡ãããã³é¢šæŽã®åéã§ã®10幎以äžã®çµéšã GitHubã®ããã€ãã®ãããžã§ã¯ãã®è²¢ç®è ã ExploreDDDãO'Reilly Software Architecture Conferenceãããã³KanDDDinskyã§è¬æŒã å人ããã°plexiti.com ã ãã€ã¯ããµãŒãã¹ãšDDD mitapã®äž»å¬è ïŒãŠã£ãŒã³ïŒã