æŠç¥çãªã¢ããªã¹ãããã€ã¯ããµãŒãã¹ãžã®ç§»è¡ãå®çžŸã®ãããã¿ãŒã³ã𿮵éçãªã¢ãããŒãã䜿çšããŠãã¢ããªã·ãã¯ãªã¢ããªã±ãŒã·ã§ã³ãã¹ã±ãŒã©ãã«ãªãã€ã¯ããµãŒãã¹ã«åè§£ããŸãã
å§ãã
ã¢ããªã¹ããã€ã¯ããµãŒãã¹ã«åå²ããããšã¯ãäŒæ¥ãè¡ãããã¢ãŒããã¯ãã£å€æŽã®äžã§ãæããªã¹ã¯ãé«ããæã倧ããªèŠè¿ããæåŸ ã§ãããã®ã®äžã€ã§ããç§ãã¡ã¯ãé©åãªãµãŒãã¹å¢çã®ç¹å®ãããŒã¿æææš©ã®èª²é¡ç®¡çãæ¬çªã¯ãŒã¯ããŒããäžæããããšãªãç§»è¡ãå®è¡ããããšã§ãæ°åãã®ããŒã ããã®ç§»è¡ã«å°ããŠããŸããã
ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã«ã¯Kubernetesãã€ãã³ãã¹ããªãŒãã³ã°ã«ã¯Apache KafkaããµãŒãã¹ã¡ãã·ã¥ã«ã¯IstioãŸãã¯LinkerdãGitOpsãããã€ã¡ã³ãã«ã¯ArgoCDã䜿çšããŠããŸããåãµãŒãã¹ã¯ç¬ç«ããCI/CDãç¬èªã®ããŒã¿ã¹ãã¢ããããŠJaegerãšPrometheusã«ããå æ¬çãªåæ£ãã¬ãŒã·ã³ã°ãåããŠããŸãã
ã¢ããªã¹ãããŒã ã®èªåŸæ§ããããã€é »åºŠããŸãã¯ã·ã¹ãã ã®ã¹ã±ãŒã©ããªãã£ãå¶éããŠãããšã³ãžãã¢ãªã³ã°çµç¹åãã§ãããªãªãŒã¹ã«ããŒã éã®èª¿æŽãå¿ èŠãªå Žåãåäžã³ã³ããŒãã³ãã®è² è·ãã·ã¹ãã å šäœã«åœ±é¿ãäžããå ŽåããŸãã¯æ°ããéçºè ã®ãªã³ããŒãã£ã³ã°ã«æ°ã¶æãããå Žåã¯ãåè§£ãæ€èšããææã§ãã
ã¢ããªã¹ã®ãã¡ã€ã³ãåæããå¢çä»ããããã³ã³ããã¹ããç¹å®ããã³ã³ããŒãã³ãéã®çµåããããã³ã°ããŸãã
ç®æšãšãããµãŒãã¹ã¢ãŒããã¯ãã£ãèšèšããããŒã¿åå²ãèšç»ããããžãã¹äŸ¡å€ã«åºã¥ããŠæœåºã·ãŒã±ã³ã¹ã®åªå é äœã決å®ããŸãã
å ±æã€ã³ãã©ã¹ãã©ã¯ã㣠â KubernetesãCI/CDãã³ãã¬ãŒãããµãŒãã¹ã¡ãã·ã¥ãããã³ãªãã¶ãŒãããªãã£ã¹ã¿ãã¯ãæ§ç¯ããŸãã
ã¢ã³ãã³ã©ãã·ã§ã³ã¬ã€ã€ãŒãå®è£ ãããã©ãã£ãã¯ã段éçã«ã«ãŒãã£ã³ã°ããªããããµãŒãã¹ãäžã€ãã€æœåºããŸãã
ãµãŒãã¹æææš©ããªã³ã³ãŒã«äœå¶ãSLO远跡ãç¶ç¶çãªã¢ãŒããã¯ãã£ã¬ããã³ã¹ã確ç«ããŸãã
ããªãã®ã¢ããªã¹ãããã¹ã±ãŒã©ãã«ã§ç¬ç«ããŠãããã€å¯èœãªãµãŒãã¹ãžã®å®å šã§æ®µéçãªéãèšèšããŸãããã
æã ã¯domain-driven designãçšããŠbounded contextsãç¹å®ããæãçµå床ã®äœãã¢ãžã¥ãŒã«ããæ®µéçã«ãµãŒãã¹ãæœåºããroutingã®ããã«API gatewaysãå®è£ ããmigrationããã»ã¹å šäœãéããŠbackward compatibilityãç¶æããŸãã
MicrocosmWorksã§ã®ã¢ããªã¹ãããã€ã¯ããµãŒãã¹ãžã®ç§»è¡ã¯ã1æéããã25ãã«ãã50ãã«ã®æéèšå®ã§ããç·è²»çšã¯ãã¢ããªã¹ã®èŠæš¡ãçµåã®è€éããããã³æœåºãããµãŒãã¹ã®æ°ã«ãã£ãŠç°ãªããŸãã
æé㯠monolith ã®èŠæš¡ãšè€éãã«ãã£ãŠå€§å¹ ã«ç°ãªããŸããéåžžãæåã®ãµãŒãã¹ã¯4ïœ8é±éã§æœåºããå®å šãªç§»è¡ã«ã¯6ïœ18ã¶æããããŸããåœç€Ÿã®æ®µéçã¢ãããŒãã¯ãå®å šãª rewrite ãå¿ èŠãšããããšãªããåæ®µéã§äŸ¡å€ãæäŸããŸãã
ãªã¯ãšã¹ã-ã¬ã¹ãã³ã¹ãã¿ãŒã³ã«ã¯åæç㪠REST ãŸã㯠gRPC ããã€ãã³ãé§ååéä¿¡ã«ã¯ Kafka ãŸã㯠RabbitMQ ãä»ããéåæã¡ãã»ãŒãžã³ã°ãå®è£ ããŠããŸãã忣ãã©ã³ã¶ã¯ã·ã§ã³ã«ã¯ saga ãã¿ãŒã³ããå€éšã«ãŒãã£ã³ã°ã«ã¯ API gateways ã䜿çšããŠããŸãã
æã ã¯ããŒã¿ããŒã¹ã»ããŒã»ãµãŒãã¹ã»ãã¿ãŒã³ã«åŸãããµãŒãã¹åºæã®ããŒãã«ãå°çšããŒã¿ããŒã¹ã«æ®µéçã«æœåºããŠããŸããç§»è¡æéäžãå ±æããŒã¿ããŒã¹ã®äŸåé¢ä¿ãåŸã ã«åé¢ããªããããŒã¿ã¢ã¯ã»ã¹ãç¶æããããã«ãããŒã¿ããŒã¹ãã¥ãŒãCDCããŸãã¯APIã³ãŒã«ã䜿çšããŸãã