ããŒã¿ããŒã¹ ã·ã£ãŒãã£ã³ã°ã¯ãããŒã¿ããŒã¹ç®¡çãšã¹ã±ãŒã©ããªãã£ã®é åã§äœ¿çšãããè€æ°ã®ãµãŒããŒãããŒã¿ ã»ã³ã¿ãŒããŸãã¯å°ççå Žæã§ãã¹ãã§ããè€æ°ã®ç©çããŒãã£ã·ã§ã³ (ã·ã£ãŒã) ã«ããŒã¿ã忣ããããã«äœ¿çšãããææ³ã§ããããŒã¿ããŒã¹ ã·ã£ãŒãã£ã³ã°ã¯ãå€§èŠæš¡ãªããŒã¿ã»ãããããå°ãã管çãããããã£ã³ã¯ã«æ°Žå¹³æ¹åã«åå²ããããšã§ãããã©ãŒãã³ã¹ãå¯çšæ§ãèé害æ§ãåäžãããŸãããã®ã¢ãããŒãã¯ã匷åãªAppMasterno-codeãã©ãããã©ãŒã ã䜿çšããŠéçºãããã¢ããªã±ãŒã·ã§ã³ãªã©ã倧éã®ããŒã¿ãšåæãŠãŒã¶ãŒãåŠçããå¿ èŠãããææ°ã® Web ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãã«ç¹ã«é¢é£ããŸãã
è¿å¹ŽãããŒã¿ããŒã¹ ã·ã¹ãã ã¯ã¢ããªã·ã㯠ã¢ãŒããã¯ãã£ãããæ¡åŒµæ§ã®é«ã忣ã¢ãŒããã¯ãã£ã«é²åããŸããããã®å€é©ã¯ãããŒããŠã§ã¢ãšãããã¯ãŒã¯æè¡ã®é²æ©ã«å ããŠãããŒã¿ãšãŠãŒã¶ãŒã®éèŠã®æ¥æ¿ãªå¢å ã«ãã£ãŠä¿é²ãããŠããŸãããã®å€åã«å¯ŸåŠããããã«ãéçºè ã¯å€ãã®å ŽåãããŒã¿ããŒã¹ ã·ã£ãŒãã£ã³ã°ãªã©ã®é«åºŠãªããŒã¿ããŒã¹ç®¡çææ³ãæ¡çšããŠãæé©ãªããã©ãŒãã³ã¹ãšä¿¡é Œæ§ã ãã§ãªãã¹ã±ãŒã©ããªãã£ã確ä¿ããŸãã
ã·ã£ãŒãã£ã³ã°ã¯ãããŒãã«ãéè€ããªãåã®ã»ãããå«ãå°ããªãšã³ãã£ãã£ã«åå²ããããšã§ããŒã¿ããŒã¹ãåé¢ããåçŽããŒãã£ã·ã§ãã³ã°ãšã¯æ ¹æ¬çã«ç°ãªããŸããå¯Ÿç §çã«ãã·ã£ãŒãã£ã³ã°ã§ã¯ãåäžããŒãã«ã®å®å šãªè¡ãè€æ°ã®ã·ã£ãŒãã«åæ£ã§ããŸãããã®ããŒã¿ã»ããã®åå²ã«ãã䞊ååŠçãå¯èœã«ãªãããŠãŒã¶ãŒã®åŸ ã¡æéãå€§å¹ ã«ççž®ãããŸããããã«ãããŒã¿ããŒã¹ ã·ã£ãŒãã£ã³ã°ã«ãããã¢ããªã±ãŒã·ã§ã³å±€ã«å¯ŸããŠééçãªæ¹æ³ã§ã¯ãŒã¯ããŒãã忣ã§ãããããæ¢åã®ãœãããŠã§ã¢ ãœãªã¥ãŒã·ã§ã³ãšã®ã·ãŒã ã¬ã¹ãªçµ±åãå¯èœã«ãªããŸãã
ããŒã¿ããŒã¹ ã·ã£ãŒãã£ã³ã°ã®èåŸã«ããéèŠãªååã® 1 ã€ã¯ãé©åãªã·ã£ãŒã ããŒã®éžæã§ããã·ã£ãŒã ããŒã¯ããŒã¿ã®ããŒãã£ã·ã§ã³åãšåæ£æ¹æ³ã決å®ããã·ã¹ãã å šäœã®ããã©ãŒãã³ã¹ãšå¹çã«åœ±é¿ãäžããŸããã·ã£ãŒã ããŒãéžæãããšãã¯ãã¯ãšãª ãã¿ãŒã³ãããŒã¿åæ£ãã·ã£ãŒã ãã©ã³ã·ã³ã°ãªã©ã®ããã€ãã®èŠçŽ ãèæ ®ããå¿ èŠããããŸãã广çãªã·ã£ãŒã ããŒã§ã¯ãã¯ãã¹ã·ã£ãŒã ã¯ãšãªã®æ°ãæå°éã«æããå¿ èŠããããŸããããã¯ãé å»¶ãå€§å¹ ã«é·ããªããããã©ãŒãã³ã¹ãäœäžããããã§ããããã«ãã·ã£ãŒã ããŒã¯ãäžåè¡¡ãæœåšçãªããã«ããã¯ãåé¿ããããã«ããã¹ãŠã®ã·ã£ãŒãã«ããã£ãŠããŒã¿ãšã¯ãŒã¯ããŒããåçã«åæ£ãããããã«ããå¿ èŠããããŸãã
ããŒã¿ããŒã¹ ã·ã£ãŒãã£ã³ã°ãæ£ããå®è£ ãããšãããã€ãã®å©ç¹ãåŸãããŸããããã«ã¯ãæ°ããã·ã£ãŒãã远å ãããšèªã¿åããšæžã蟌ã¿ã®äž¡æ¹ã®ããã©ãŒãã³ã¹ãåäžãããããã¹ã±ãŒã©ããªãã£ã®åŒ·åãå«ãŸããŸããåäžã·ã£ãŒãã®é害ãã·ã¹ãã å šäœã«åœ±é¿ãäžããªããããã·ã£ãŒãã£ã³ã°ã«ãã£ãŠå¯çšæ§ãåäžããŸãããã®çµã¿èŸŒã¿ã®åé·æ§ãããŒã¿ ã¬ããªã±ãŒã·ã§ã³ãšçµã¿åãããããšã§ãã·ã¹ãã ã®åŸ©å åãããã«åŒ·åãããŸããããã«ãã·ã£ãŒãã£ã³ã°ã«ãããé«äŸ¡ãªå°çšãµãŒããŒã§ã¯ãªãæ±çšããŒããŠã§ã¢ã䜿çšã§ãããããã³ã¹ãåæžã«ã€ãªããå¯èœæ§ããããŸãã
ãããã®å©ç¹ã«ãããããããããŒã¿ããŒã¹ ã·ã£ãŒãã£ã³ã°ã«ã¯ç¹å®ã®èª²é¡ããããŸããããã«ã¯ãããè€éãªã€ã³ãã©ã¹ãã©ã¯ãã£ã®å¿ èŠæ§ããããé«åºŠãªã¡ã³ããã³ã¹äœæ¥ãå«ãŸããŸããããã«ãç¹ã«è€æ°ã®ã·ã£ãŒããåæã«æŽæ°ããå¿ èŠãããå Žåã«ã¯ãããŒã¿ã®äžè²«æ§ãæžå¿µãããå¯èœæ§ããããŸãã忣ç°å¢ã§åŒ·ãäžè²«æ§ã確ä¿ããã«ã¯ãPaxos ã Raft ãªã©ã® 2 ãã§ãŒãº ã³ããããŸãã¯ã³ã³ã»ã³ãµã¹ ãããã³ã«ãªã©ã®é«åºŠãªã¢ã«ãŽãªãºã ã®å®è£ ãå¿ èŠã«ãªãå ŽåããããŸãã
AppMasterãã©ãããã©ãŒã ã®ã³ã³ããã¹ãã§ã¯ãããŒã¿ããŒã¹ ã·ã£ãŒãã£ã³ã°ã¯ããŠãŒã¶ãŒãéçºããã¢ããªã±ãŒã·ã§ã³ã®ã¹ã±ãŒã©ããªãã£ãããã©ãŒãã³ã¹ãä¿¡é Œæ§ã確ä¿ããäžã§éèŠãªã³ã³ããŒãã³ããšãªãåŸãŸãã AppMasterãã©ãããã©ãŒã ã¯ã¢ããªã±ãŒã·ã§ã³ããŒãããçæãããããæè¡çè² åµãæé€ãããéçºè ã¯ç¬èªã®èŠä»¶ãæºããããã«å¿ èŠãªã·ã£ãŒãã£ã³ã°æŠç¥ã®èšèšãšå®è£ ã«éäžã§ããããã«ãªããŸãããã©ã€ã㪠ããŒã¿ããŒã¹ãšã㊠PostgreSQL äºæããŒã¿ããŒã¹ããµããŒãããAppMaster ãå¹ åºãã·ã£ãŒãã£ã³ã° ãœãªã¥ãŒã·ã§ã³ãšã·ãŒã ã¬ã¹ã«çµ±åã§ããéçºè ãã¹ã±ãŒã©ãã«ã§å¹çç㪠Webãã¢ãã€ã«ãããã³ããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ããŸãã
éçºè ã¯ã AppMasterã®å æ¬ç㪠API ããã¥ã¡ã³ããããŒã¿ããŒã¹ ã¹ããŒãç§»è¡ã¹ã¯ãªãããã©ããã ãããã¿ã€ãã³ã°æ©èœã掻çšããŠãå¹ççãªæ¹æ³ã§ã·ã£ãŒãã£ã³ã°æŠç¥ãèšèšããã¹ããå±éã§ããŸãã AppMasterã®ã³ã©ãã¬ãŒã·ã§ã³ç°å¢ã«ãããéçºè éã§ã®ãã¹ã ãã©ã¯ãã£ã¹ãšå°éç¥èã®è¿ éãªå ±æãå¯èœã«ãªããé«è² è·ã®ãšã³ã¿ãŒãã©ã€ãºèŠæš¡ã®ã¢ããªã±ãŒã·ã§ã³ã«ãããã·ã£ãŒãã£ã³ã°æŠç¥ã®æåããå®è£ ãããã«ãµããŒããããŸãã
èŠçŽãããšãããŒã¿ããŒã¹ ã·ã£ãŒãã£ã³ã°ã¯ãææ°ã®ãœãããŠã§ã¢ ã¢ããªã±ãŒã·ã§ã³ã®ã¹ã±ãŒã©ããªãã£ãããã©ãŒãã³ã¹ãä¿¡é Œæ§ã確ä¿ããããã®åŒ·åãªæè¡ã§ããè€æ°ã®ã·ã£ãŒãã«ããŒã¿ã忣ããããšã§ãéçºè ã¯ãªãœãŒã¹ã®äœ¿çšçãæé©åããã³ã¹ããåæžãããã©ãŒã«ã ãã¬ã©ã³ã¹ã確ä¿ã§ããŸãã AppMasterãã©ãããã©ãŒã ã¯ãå ç¢ãªã€ã³ãã©ã¹ãã©ã¯ãã£ãš PostgreSQL äºæããŒã¿ããŒã¹ã®å€çšéãµããŒããéããŠãéçºè ãå¹ççãªã·ã£ãŒãã£ã³ã°æŠç¥ãèšèšããã³å®è£ ã§ããããã«ããææ°ã® Webãã¢ãã€ã«ãããã³ããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ã®å¢ãç¶ããéèŠãæºããã®ã«åœ¹ç«ã¡ãŸãã