ãµãŒã¬ ãã¿ãŒã³: ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£ã«ããã忣ãã©ã³ã¶ã¯ã·ã§ã³
åŸæ¥ã®ã¢ããªã·ã㯠ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãè€æ°ã®ãšã³ãã£ãã£éã§ããŒã¿ã®äžè²«æ§ãç¶æããã®ã¯ç°¡åã§ãããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ ãšã³ãžã³ã¯ãããŒã«ã« SQL ãã©ã³ã¶ã¯ã·ã§ã³å
ã«ã©ããããã ACID (ååæ§ãäžè²«æ§ãå颿§ãèä¹
æ§) ä¿èšŒãæäŸããŸããæ³šæã®çºæ³šãæ¯æãã®å·®ãåŒãããŸãã¯åšåº«ã®äºçŽãéäžã§å€±æããå ŽåãROLLBACK ãåŒã³åºããšãããŒã¿ããŒã¹ã®ãã¹ãŠã®å€æŽãå³åº§ã«å
ã«æ»ãããŸãã
ãã ããææ°ã® ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ã㣠ã«ç§»è¡ãããšãããŒã¿ç®¡çãæ ¹æ¬çã«å€ãããŸãããã¡ã€ã³ã®èªåŸæ§ãšç¬ç«ããã¹ã±ãŒã©ããªãã£ã確ä¿ããããã«ãåãã€ã¯ããµãŒãã¹ã¯ãã©ã€ããŒã ããŒã¿ããŒã¹ãææããŸããé»ååååŒã®ãã§ãã¯ã¢ãŠãã®åŠçãªã©ã® 1 ã€ã®ããžãã¹æäœããè€æ°ã®ãµãŒãã¹å¢çãšããŒã¿ããŒã¹ ãšã³ãžã³ (泚æã® PostgreSQLãæ¯æãã® DynamoDBãåšåº«ã® Redis ãªã©) ã«ãŸãããããã«ãªããŸããã
忣ãã€ã¯ããµãŒãã¹ã¯åäžã®ããŒã¿ããŒã¹ ãã©ã³ã¶ã¯ã·ã§ã³ã«äŸåã§ããªãããããããã¯ãŒã¯å¢çãè¶ããŠããŒã¿ã®äžè²«æ§ãç¶æããããšã¯ã忣ã·ã¹ãã ãšã³ãžãã¢ãªã³ã°ã«ãããŠæãå°é£ãªåé¡ã® 1 ã€ã«ãªããŸãã
ã·ã¹ãã ã®å¯çšæ§ãããã©ãŒãã³ã¹ãç ç²ã«ããããšãªãããã解決ããããã«ããœãããŠã§ã¢ ã¢ãŒããã¯ã㯠Saga ãã¿ãŒã³ ãå©çšããŸãã
ãã®è©³çްãªèª¬æã§ã¯ãåŸæ¥ã®åæ£ãã©ã³ã¶ã¯ã·ã§ã³ã倱æããçç±ã調æ»ããSaga ãã¿ãŒã³ã®äžæ žçãªä»çµã¿ãåæããã³ã¬ãªã°ã©ãã£ãŒãšãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãæ¯èŒããåé¢å¯ŸçãåæããGo ãš Java ã§ã®å®çšŒåã³ãŒãã®å®è£
ã調æ»ããå®éã®é害ããŒã«ããã¯ãå®å
šã«åŠçããæ¹æ³ãåŠã³ãŸãã
æ ¹æ¬çãªåé¡: ãã€ã¯ããµãŒãã¹ã§ 2 ãã§ãŒãº ã³ããã (2PC) ã倱æããçç± Saga ãã¿ãŒã³ãæ¡çšããåã«ããšã³ãžãã¢ã¯ããæ¬¡ã®ãããªè³ªåãããŸã: ãã€ã¯ããµãŒãã¹å
šäœã§åŸæ¥ã® 2 ãã§ãŒãº ã³ããã (2PC / XA)ââ ã䜿çšã§ããªãã®ã¯ãªãã§ãã?
2PC ã®ä»çµã¿ 2 ãã§ãŒãº ã³ãããã¯ãäžå€®ã®ãã©ã³ã¶ã¯ã·ã§ã³ ãããŒãžã£ãŒã䜿çšããŠãè€æ°ã®ããŒã¿ããŒã¹ ããŒãã«ããã忣ãã©ã³ã¶ã¯ã·ã§ã³ã 2 ã€ã®ãã§ãŒãºã§èª¿æŽããŸãã
Microservices
Saga Pattern
Distributed Transactions
Event-Driven Architecture
Kafka
Orchestration
Choreography
System Design