ã³ãŒãã®äžã§èããããã®ã¡ã³ã¿ã«ã¢ãã«
ãThink Distributed Systemsãã®ç¬¬1ç« ãèªã¿ãªãããããªã匷ãå ±æãèŠããŸããã忣ã·ã¹ãã ã®å ·äœçãªææ³ã䞊ã¶åã«ãããããçè§£ãšã¯äœããã¢ãã«ã¯äœãæ®ããŠäœãæšãŠãã®ããå šäœãèŠæž¡ããªãæ§æèŠçŽ ããã©ããã£ãŠå šäœã®ä¿èšŒãäœãã®ããäžå¯§ã«çœ®ãããŠããããã§ãã
ãããã第1ç« ã®ã¿ã€ãã«ããThinking in distributed systems: Models, mindsets, and mechanicsãã§ããäžå¿ã«çœ®ãããŠããèªã¯ distributed systems ã§ã¯ãªã Thinking ã§ããå°ãªããšãç§ã«ã¯ã忣ã·ã¹ãã ã«ã€ããŠã®ç¥èãåæããç« ãšããããã忣ã·ã¹ãã ã顿ã«ããªãããã»ãã®å¯Ÿè±¡ã«ãæã¡éã¹ãããªæšè«ã®ä»æ¹ãæ±ãç« ã ãšèªããŸãããã¢ãã«ããã®ã®èŠæ¹ãä»çµã¿ãéããŠãäœãç¥ããããããã©ã®ããã«èããããžéå¿ã眮ããŠããããã«èŠããŸãããã®ããã第1ç« ã§ç€ºãããèãæ¹ã¯ã忣ã·ã¹ãã ã®å éšã ãã§å®çµãããã®ã§ã¯ãªãã®ã§ã¯ãªããããšèªã¿é²ãããã¡ã«æããŸããã
ç§ãæ¥ã ã®èšèšãæè¡çãªè°è«ã§åŒã£ãããå Žæããã ããããã®åšèŸºã«ãããŸããèšèã®å®çŸ©ãææ§ãªãŸãŸè°è«ãé²ãã§ãããå ·äœäŸããäžè¬æŠå¿µãžé£ã¶éäžãçç¥ãããŠãããèšèšè ã ããæã€æ å ±ããå®è¡æã®ã³ã³ããŒãã³ããç¥ã£ãŠãããã®ããã«æ±ã£ãŠãããåã ã®éšåã®æ§è³ªãããã·ã¹ãã å šäœã®æ§è³ªãçŽæ¥å°ããŠãããåå¥ã«ã¯éãåé¡ã«èŠããŸãããã©ããæšè«ã«äœ¿ã£ãŠããã¢ãã«ã®å¢çãèŠããªããªã£ããšãã«èµ·ããåé¡ã®ããã«æãããŸãã
ãã®èšäºã§ã¯ã第1ç« ã®å 容ã玹ä»ããªãããç§ããªãããã«åŒ·ãåå¿ããã®ããèããŸããçµè«ãå ã«çãæžããªããæè¡ãçè§£ãããšã¯çšèªãå®è£ äŸãä¿æããããšã§ã¯ãªããåæããå¯èœãªæ¯ãèããšä¿èšŒãŸã§ãåæ§æã§ããããšã§ãããã®åæ§æãæ¯ããéå ·ãã¡ã³ã¿ã«ã¢ãã«ïŒmental modelïŒã§ããè¯ãã¡ã³ã¿ã«ã¢ãã«ã¯ãåã«çŸå®ãåãããããçž®ãããã®ã§ã¯ãããŸãããè©³çŽ°ãæšãŠãŠããããŸçãããåãã«ã€ããŠã®æšè«ãå£ããªãããã«äœããã衚çŸã§ãã
ãã£ãšããããããããã¶ãåãããªããšãæžããŸãããç§ããåãã£ãŠããåŽã«ããããšãã話ã§ã¯ãããŸããããããæ¯åºŠãããåããããªãããšãªããäœãåãããªãã®ããåãåããããã«ãåæãèšèã®å°çšã確èªããŠããŸãããã®èšäºããçè§£ã«å°éãã人éã«ããè¬çŸ©ãšãããããåãããªããæ±ãããã®è¶³å Žãçµãã§ã¿ãèšé²ãšããŠèªãã§ããã ããã°ãšæããŸãã
ç¥ã£ãŠããããšãšçè§£ããŠããããš
æè¡ã®åŠç¿ã§ã¯ãç¥ã£ãŠããããšãšçè§£ããŠããããšãæ··ãããã¡ã§ããCAPå®çãRaftã2çžã³ãããïŒ2PCïŒãçŽååå¯èœæ§ïŒserializabilityïŒãšãã£ãååãç¥ããçã説æãèšããã°ãã²ãšãŸãäŒè©±ã«ã¯åå ã§ããŸããããããåæãå°ãå€ãã£ããšãã«åã説æã䜿ãããšã¯éããŸããã
ç§ã«ãšã£ãŠçè§£ãšã¯ã説æãèšæ¶ããŠããç¶æ ãããããã®èª¬æãã©ã®åæããå°ãããã©ã®ç¯å²ã§æå¹ãªã®ããåæ§æã§ããç¶æ ã«è¿ããã®ã§ããå ¥åãšãªãä»®å®ãå€ãããšããå¯èœãªæ¯ãèããã©ãå€ãããã©ã®ä¿èšŒã倱ãããã®ãã远ãããªãããã®ç¥èã¯å¥ã®åé¡ã«ãæã¡éã¹ãŸãã
åæ â èµ·ããåŸãæ¯ãèã â ä¿èšŒ
ãã®é£éã®éäžãæãããšãçšèªã¯çµè«ã ããåçŽããã©ãã«ã«ãªããŸããã©ãã«ã¯æ€çŽ¢ã®å ¥å£ãšããŠã¯äŸ¿å©ã§ãããèšèšå€æã®æ ¹æ ã«ã¯è¶³ããŸãããéã«ãé£éãåçŸã§ããã°ãç¥ããªã補åãæªçµéšã®æ§æãåã«ããŠããäœã調ã¹ãã¹ãããæ±ºããããŸããç¥èéã®å·®ãæ¶ããããã§ã¯ãããŸããããæªç¥ã®å¯Ÿè±¡ãžè¿ã¥ãè¶³å Žã«ãªããŸãã
ã¡ã³ã¿ã«ã¢ãã«ã¯æšè«ã®ããã®å éšè¡šçŸ
æ¬æžã¯ã¡ã³ã¿ã«ã¢ãã«ãã察象ã·ã¹ãã ã«ã€ããŠç§ãã¡ãå éšã«æã€è¡šçŸãšããŠæ±ããŸããéèŠãªã®ã¯ãã¢ãã«ãçŸå®ã®çž®å°ã³ããŒã§ã¯ãªãããšã§ããã¢ãã«ã¯å¿ ãäœããæšãŠãŸããåãã«å¿ èŠãªåºå¥ãæ®ããäžèŠãªè©³çްãèœãšãããšã§ãèãããã倧ãããžå¯Ÿè±¡ãå€åœ¢ããŸãã
ãããã£ãŠãè¯ãã¢ãã«ãæã詳现ãªã¢ãã«ãšã¿ãªãããšã¯ã§ããŸããã詳现ãå¢ããã°çŸå®ã«è¿ã¥ãããã«ã¯èŠããŸãããæšè«ã«äžèŠãªç¶æ ãŸã§æ±ã蟌ãã°ãäœãçµè«ãå·Šå³ããŠããã®ãåãããªããªããŸããäžæ¹ã§ãæšãŠãããã°ç°ãªãæ¯ãèããåããã®ãšããŠæ±ã£ãŠããŸããŸããã¢ãã«ã®å質ã¯ãå宿§ãããããã®åãã«å¿ èŠãªåºå¥ãä¿åããŠãããã§è©äŸ¡ãã¹ããªã®ã§ãããã
ããã§ããæšè±¡ã¯ãåã«æ å ±éãæžãããŠåãããããããããšã§ã¯ãããŸããããŸããäœã«ã€ããŠçãããã®ããæ±ºããŸããæ¬¡ã«ããã®çããå·Šå³ããªãè©³çŽ°ãæšãŠãŸãããããŠãè©³çŽ°ãæšãŠãã¢ãã«äžã§åŸãçµè«ããå ã®å¯Ÿè±¡ã«ã€ããŠãæãç«ã€ãã確ãããŸããå°ãªããšãä»åã®åãã«ã€ããŠããã®å¯Ÿå¿ãä¿ãããŠããªããã°ãªããŸããã
çŸå®ã®å¯Ÿè±¡ â å¿ èŠãªåºå¥ãæ®ããŠæšè±¡ â ã¢ãã« â æšè« â å ã®å¯Ÿè±¡ã«ã€ããŠã®çµè«
ããšãã°ãäºã€ã®å®è£ ãå éšã§ã¯ç°ãªã£ãŠããŠããããŸèª¿ã¹ããæ§è³ªã«é¢ããŠåžžã«åãæ¯ãèãããããªãããã®å éšå·®ã¯æšãŠããããããããŸãããå察ã«ãæšãŠã詳现ã«ãã£ãŠçµè«ãå€ãããªãããã®æšè±¡ã¯ä»åã®åãã«ã¯èããŠããŸãããåçŽåã«ãã£ãŠå¥ã®åé¡ãžçœ®ãæããŠããŸã£ãããã¢ãã«ã®å°çšãè¶ããåããç«ãŠãŠããŸãã
ããã§éèŠãªã®ã¯ããçŸå®ãå®å šã«åçŸããã¢ãã«ããæ±ããããšã§ã¯ãããŸãããå®å šãªåçŸãã§ãããšããŠããããã¯ã¢ãã«ãšããããçŸå®ã®è€è£œã«è¿ã¥ããèããããã«å¯Ÿè±¡ãå°ãããã圹ç®ãæãããŸãããã©ããŸã§æšãŠãããããšãæšãŠãããšã«ãã©ã®æšè«ãä¿åããããã¯ãåãåé¡ã®è¡šè£ã§ãã
ãã ããæ¬æžã®èè ãããã絶察çã§å¯äžã®èãæ¹ãšããŠæç€ºããŠããããã§ã¯ãããŸãããã¡ã³ã¿ã«ã¢ãã«ã¯ãå¯Ÿè±¡ã¯æ¬åœã¯ãããããã®ã ããšå®£èšãããã®ã§ã¯ãªãããä»åã¯ããã®åãã«ã€ããŠèããããã«ãããæããŸãããšçœ®ããã®ã§ããåããå€ããã°ãæ®ãã¹ãåºå¥ãå€ãããŸããäžã€ã®ã¢ãã«ã察象ãã®ãã®ãšåäžèŠããã°ãçè§£ãå©ããã¯ãã®éå ·ããå¥ã®èŠæ¹ãéããæ ã«ããªãåŸãŸãã
ãã®èŠæ¹ã¯ãç§ãèšèã®äžæ£ç¢ºãã«åŒã£ãããçç±ã説æããŸããèšèã¯åãªãååã§ã¯ãªããçŸå®ã®ã©ã®å·®ãæ®ããã©ã®å·®ãåäžèŠããããæ±ºããå°ããªã¢ãã«ã§ããçšèªã®å°çšãææ§ãªãŸãŸã§ã¯ãåãæç« ãèªãã§ããŠããåå è ãç°ãªãç¶æ 空éãæ³å®ããŠãããããããŸãããè°è«ãåã¿åããªããšããæèŠã®å¯Ÿç«ããå ã«ã¢ãã«ã®äžäžèŽãçã䟡å€ããããŸãã
å ·äœäŸãæŠå¿µãçããã
æ¬æžãç«¶åç¶æ ïŒrace conditionïŒãã³ãŒãçãã説æããªããšããéžæãå°è±¡ã«æ®ããŸãããå žåçãªèª¬æã§ã¯ãäºã€ã®ã¹ã¬ãããåã倿°ãæŽæ°ããæŽæ°ã®æ¶å€±ïŒlost updateïŒãèµ·ããŸããäŸãšããŠã¯æ£ããã®ã§ããããã®å ·äœæ§ã匷ããããç«¶åç¶æ ãšã¯å ±æå€æ°ã忿޿°ããåé¡ã ãšããçãåãæ®ãããããªããŸãã
æ¬æžã¯ä»£ããã«ãããã»ã¹ãäžå¯åãªæäœïŒatomic actionïŒã®åãšããŠçœ®ããŸããããã»ã¹Pãæäœaãbãcãé ã«å®è¡ããããã»ã¹Qãæäœxãyãzãé ã«å®è¡ãããšããŸããPãšQã䞊è¡ã«å®è¡ãããšãã®æ§æïŒconcurrent compositionïŒãšã¯ãããããã®å éšé åºãä¿ã£ããŸãŸäœããããã¹ãŠã®æäœé åºã®çµã¿åããïŒinterleavingïŒã®éåã§ãããã®éåã®äžéšãããã¡ãã§å®ããæ£ããã®åºæºïŒcorrectness criterionïŒã«åãããªããç«¶åç¶æ ããããŸãã
ç«¶åç¶æ ïŒ èµ·ããåŸãæäœé åºã®äžéšããæ£ããã®åºæºã«åããç¶æ
ãã®ã¢ãã«ã«ã¯å€æ°åãã¹ã¬ããAPIãCPUåœä»€ããããŸãããããã§ããåäžã³ã¢ãè€æ°ã³ã¢ãè€æ°ãã·ã³ãããŒã¿ããŒã¹ãã©ã³ã¶ã¯ã·ã§ã³ãžåãæ§é ãæã¡éã¹ãŸããå ·äœäŸãæšãŠãããšã§ãããã£ãŠæŠå¿µã®é©çšç¯å²ãèŠããããã«ãªã£ãŠããŸãã
ãã®ã¢ãã«ã®äŸ¡å€ã¯ãã³ãŒãã®è©³çŽ°ãæšãŠãããšèªäœã«ã¯ãããŸãããããããæšãŠãŠãããå®è¡é åºã«ãã£ãŠæ£ãããå€ãããããšããæšè«ãå£ããªãããšã«ãããŸããç«¶åç¶æ ã«ã€ããŠèããéãã倿°åãã¹ã¬ããAPIã¯çµè«ãå·Šå³ããªããããã¢ãã«ããå€ããŸããæšè±¡ã«ãã£ãŠãè€æ°ã®å ·äœçãªå®è£ ã«å ±éããæ§é ã ããæ®ããŸãã
ãã ããCPUã«ããåœä»€ã®äžŠã¹æ¿ãããããæžã蟌ã¿ãå¥ã®ã³ã¢ãããã€èŠãããã調ã¹ãããªãããã®ã¢ãã«ã§ã¯è¶³ããŸããããã®åãã§ã¯ãå ã»ã©æšãŠãCPUã®ã¡ã¢ãªã¢ãã«ãçµè«ãå·Šå³ããããã§ããããã¯çŽã¡ã«ã¢ãã«ã誀ã£ãŠãããšããæå³ã§ã¯ãããŸãããç«¶åç¶æ ã®æ§é ãèããã«ã¯äœ¿ããŠããã¡ã¢ãªäžã®å¯èŠæ§ãŸã§èããã«ã¯æ å ±ãè¶³ããªããšãããã¢ãã«ã®å°çšã®åé¡ã§ãã
ç§ã¯æè¡è§£èª¬ãèªããšããäŸãäœã瀺ããã®ããšããã®äŸããã©ããŸã§äžè¬åã§ããã®ããåããŠèããããªããŸããããã¯çްéšãžã®å·çã«èŠããããšããããŸããããããäŸã®æç«æ¡ä»¶ãèœãšãããŸãŸäžè¬åãããšãå¥ã®ç°å¢ã§åã説æãæç«ããä¿èšŒã¯ãããŸãããå ·äœäŸã¯çè§£ã®å ¥å£ã«ãªããŸãããæŠå¿µã®å¢çãŸã§èªåçã«æããŠãããããã§ã¯ãããŸãããäžè¬åã®è² æ ãèªè ã ãã«é ããªã説æã¯ãããã ãã§äŸ¡å€ããããŸãã
è§£å床ãå€ããããšãšèŠç¹ãå€ããããš
第1ç« ã®äžã§ç¹ã«é®®ããã ã£ãã®ãããã©ãã¯ããã¯ã¹ãšãã¯ã€ãããã¯ã¹ã®éããè§£å床ïŒresolutionïŒã®å€æŽãšãã倧åçãªèŠç¹ïŒglobal viewïŒãšå±æçãªèŠç¹ïŒlocal viewïŒã®éããèŠç¹ïŒperspectiveïŒã®å€æŽãšããŠåããç®æã§ãã
ãã©ãã¯ããã¯ã¹ã®èãéããŠå éšã®ã³ã³ããŒãã³ããèŠãŠãã芳枬è ã¯äŸç¶ãšããŠã·ã¹ãã å šäœãèŠæž¡ããŠããŸããèŠãŠãã现ãããå€ãã£ãã ãã§ãã
ãšããããäžã€ã®ã³ã³ããŒãã³ãã®äœçœ®ãžèŠ³æž¬è ãç§»ããšäºæ ãå€ãããŸãããã®ã³ã³ããŒãã³ããçŽæ¥ç¥ãã®ã¯ãèªåã®ç¶æ ãšããããŸã§å±ããã¡ãã»ãŒãžã ãã§ããä»ã®ã³ã³ããŒãã³ãã®çŸåšç¶æ ããããã¯ãŒã¯å éšã®ç¶æ ã¯èŠããŸãããããã¯ãºãŒã ã®åé¡ã§ã¯ãªããæ å ±ãžã¢ã¯ã»ã¹ã§ããç¯å²ã®éãã§ãã
ããšãã°ãã³ã³ããŒãã³ã1ãã³ã³ããŒãã³ã2ãžèŠæ±ãéã£ãã®ã«ãå¿çãè¿ã£ãŠããªããšããŸããå šäœãèŠãããéçšè ã¯ãã³ã³ããŒãã³ã2ã忢ããã®ããèŠæ±ã倱ãããã®ããåŠçãé ãã®ããå¿çãé å»¶ããŠããã®ãã調ã¹ããããããããŸããããããã³ã³ããŒãã³ã1ã芳枬ããäºå®ã¯ãå¿çããŸã å±ããŠããªãããšã ãã§ããç°ãªãã·ã¹ãã å šäœã®ç¶æ ããã³ã³ããŒãã³ã1ããã¯åãèŠ³æž¬çµæã«èŠããŠããŸãã
ç°ãªãã·ã¹ãã å šäœã®ç¶æ â åã屿çãªèŠ³æž¬çµæ
èšèšå³ãèŠãŠããç§ãã¡ã¯ãã€ãå šäœã®ç¥èãå®è£ ãžå¯èŒžå ¥ããŸãããã³ã³ããŒãã³ã1ã¯ãã³ã³ããŒãã³ã2ã忢ããã®ã§åŠçãåãæ¿ããããšèª¬æããããªããŸãããããã³ã³ããŒãã³ã1ã芳枬ã§ããã®ã¯ãå€ãã®å Žåãäžå®æéå¿çããªãããšã§ããã¿ã€ã ã¢ãŠãã¯äºå®ã®çŽæ¥èŠ³æž¬ã§ã¯ãªããæéã«é¢ããä»®å®ãå«ã倿ã§ãããã®å·®ãèœãšããšãèšèšæžã®æç« ã¯èªç¶ã§ããå®è£ ã§ããªãã¢ã«ãŽãªãºã ãåºæ¥äžãããŸãã
å šäœã®ä¿èšŒã屿çãªè¡åããäœã
忣ã·ã¹ãã èšèšã®é£ããã¯ãå šäœã«ã€ããŠå®çŸ©ããæ§è³ªãã屿çãªç¥èããæããªãã³ã³ããŒãã³ãã®è¡åããæç«ãããããšã«ãããŸããæ¬æžã®è¡šçŸãåããã°ã倧åçã«èãã屿çã«è¡åããïŒthinking globally while acting locallyïŒãã§ãã
ã¹ããªãããã¬ã€ã³ïŒsplit brainïŒãäŸã«ãããšã欲ããå šäœã®ä¿èšŒã¯ããªãŒããŒãé«ã äžã€ã§ããããšã§ãããããåããŒãã¯ãå šå¡ã®ç¶æ ãçŽæ¥ç¢ºèªããŠããèªåã®åœ¹å²ã決ããããŸããããããã¯ãŒã¯ãåæãããåæ¹ãçžæã®äžåšãèªåã®ææ Œçç±ã«ããã°ãããããã®å€æã¯å±æçã«ã¯ãã£ãšãããããŠããã·ã¹ãã å šäœã§ã¯äºã€ã®ãªãŒããŒãçãŸããŸãã誰ãèªåã®èŠåãç Žã£ãŠããªãã®ã«ãå šäœã®æ£ãããå£ããŸãã
ããã§ã¯ãéšåãæ£ãããã°å šäœãæ£ãããšããæšè«ãæç«ããŸãããã·ã¹ãã ã®æ§è³ªã¯ãéšåã®æ§è³ªã ãã§ãªããçµã¿åããæ¹ãšçžäºäœçšããçããŸããä¿¡é Œã§ããªãéšåããä¿¡é Œã§ããã·ã¹ãã ãäœããäžæ¹ã§ãä¿¡é Œã§ããéšåããå£ããããã·ã¹ãã ãäœããŸããéããçãã®ã¯ãæ§æèŠçŽ ãã©ãçµã¿åããããïŒcompositionïŒã§ãã
æ§æèŠçŽ ïŒ çžäºäœçš â èµ·ããåŸãå šäœã®æ¯ãèã â ã·ã¹ãã ã®æ§è³ª
ãã®æ§å³ã¯åæ£ã·ã¹ãã ã«éããŸãããçµç¹ãéçšæé ãèªå¯ã蚌æ 管çã«ã䌌ãåé¡ããããŸããåæ åœè ãèªåã®æé ãå®ã£ããšããäºå®ãããçµç¹å šäœãšããŠå¿ èŠãªä¿èšŒãæºãããããšã¯éããŸãããã¹ã¯ãªãŒã³ã·ã§ãããè€æ°æä¿åãããšããŠããããããã®ç»åãèªããããšãšãç»åéã®åäžæ§ãæç³»åãä¿èšŒãããããšã¯å¥ã§ããåã ã®èšŒæ ã®å質ããã蚌æ äœç³»å šäœã®æ§è³ªã¯çŽæ¥ã«ã¯å°ããŸããã
æ¥ã ã®èšèšå€æã«çŸããåãç
æ¯ãè¿ããšãç§ã¯æ®æ®µããç¡æèã«ã¢ãã«ã®å°çšã確èªããŠããŸããBigQueryãé¢ä¿ããŒã¿ããŒã¹ïŒRDBïŒã®ä»£ããã«äœ¿ãèšèšãžéåæãæã€ãšãã補åã®åªå£ãèšãããã®ã§ã¯ãããŸãããåæçšéãäžå¿ã«çµã¿ç«ãŠãããã·ã¹ãã ã®æ§è³ªãšãäœé å»¶ã®æŽæ°ããã©ã³ã¶ã¯ã·ã§ã³ãç¹°ãè¿ããªã³ã©ã€ã³ãã©ã³ã¶ã¯ã·ã§ã³åŠçïŒOLTPïŒã®èŠæ±ããã©ãã§äžèŽããã©ãã§ãããã®ããç¥ãããã®ã§ãã
æçš¿ã24æéã§æéåãã«ããèšèšã§ãåãã§ããæå¹æéïŒTTLïŒãšããèªãèããŠç¹å®ã®ããŒã¿ã¹ãã¢ãžé£ã¶åã«ãèªã¿åãæã«æéåããé€å€ããã°ããã®ããç©çåé€ã®æå»ãŸã§ä¿èšŒãããã®ããæé€ã®é å»¶ã蚱容ã§ããã®ããåããå¿ èŠããããŸããèŠæ±ãããã·ã¹ãã å šäœã®æ§è³ªãéãã°ãéžã¶ä»çµã¿ãå€ãããŸãã
å€ãã²ãŒã ãæ³å®å€ã®ç°å¢ã§é«éåäœããäºè±¡ãäžå ·åïŒbugïŒãšåŒã¶ããšããåãã«ããäŒŒãæ§é ããããŸãã芳枬ãããæ¯ãèããäžéœåã§ããããšãšãã©ã®ä»æ§ã«éåããããäžå ·åãšå€å®ãããã¯åãã§ã¯ãããŸããããµããŒã察象ãåœæã®æéååŸæ¹æ³ãçŸåšã®äºæå±€ãšããåæã眮ããã«åç§°ã ããæ±ºãããšãåé¡ã説æã®ä»£ããã«ãªã£ãŠããŸããŸãã
ãããã®åå¿ã¯ãåã«çްããèšèãæ°ã«ãªããšãããããçµè«ãçæããæšè«ãåå®è¡ããããšããæ¬²æ±ããæ¥ãŠããããã«æãããŸããäœãåæã«ããäœã芳枬ããã©ã®å·®ãç¡èŠããã©ã®ä¿èšŒãæ±ããã®ãããã®çµè·¯ãèŠããã°ãè³æããã«ããŠãå察ããã«ããŠããè°è«ããå Žæãéžã¹ãŸãã
ã³ãŒãããäžã§èããæå³
ãã³ãŒãããäžã§èããïŒThinking above the codeïŒããšã¯ãã³ãŒãã軜èŠããæ åºŠã§ã¯ãããŸãããéçãªã³ãŒãçã ãã§ã¯è¡šãã«ããåçãªæ¯ãèãã®éåããå¥ã®è¡šçŸã§æ±ããšããææ¡ã§ããå®è£ ã¯äžã€ã®å®è¡å¯èœãªçãã§ããããã®ã³ãŒããåãåŸããã¹ãŠã®å®è¡ããæºããã¹ãä¿èšŒãèªåçã«èª¬æããŠãããããã§ã¯ãããŸããã
ã³ãŒãããåºçºãããšãããŸããŸäœ¿ãããŠããèšèªãAPIãããŒã¿æ§é ãžæ³šæãåŒãããŸããã¢ãã«ããåºçºãããšãåå è ãååå è ã屿çã«ç¥ãåŸãããšãå¯èœãªè¡åããããã¯ãŒã¯ã®æ¯ãèããæ±ããã·ã¹ãã å šäœã®ä¿èšŒãå ã«çœ®ããŸãããã®åŸã§ã³ãŒããžéããã°ãåè¡ãäœã®ä»®å®ãå®è£ ããã©ã®äžæ£ãªå®è¡ãæé€ããŠããã®ãã確èªã§ããŸãã
ãã¡ãããã¢ãã«ã ãã§å®è£ äžã®åé¡ãæ¶ããããã§ã¯ãããŸãããCPUã®ã¡ã¢ãªã¢ãã«ãããŒã¿ããŒã¹ã®åé¢ã¬ãã«ãã¯ã©ãŠããµãŒãã¹åºæã®å¶çŽãªã©ãæœè±¡åã§æšãŠã詳现ãçµè«ãå€ããå Žé¢ã¯ãããŸããå¿ èŠãªã®ã¯åžžã«äžãžéããããšã§ã¯ãªããåãã«å¿ããŠæœè±¡åºŠãäžäžãããã®ãã³ã«äœãæšãŠãããææ¡ããããšã§ãã
ãããã£ãŠãæœè±¡åºŠãäžããããšèªäœãç®çãªã®ã§ã¯ãããŸãããã©ã®è©³çŽ°ãæšãŠãŠãæšè«ãä¿ãããããèŠæ¥µããããšãç®çã§ããã³ãŒãããäžã§èããããšã«ã¯ãå¿ èŠã«å¿ããŠåã³ã³ãŒããå®è¡ç°å¢ãžéããæšãŠãè©³çŽ°ãæ¬åœã«çµè«ãžåœ±é¿ããªããã確ãããå¿ èŠããããŸãããã®åŸåŸ©ãŸã§å«ããŠãã¡ã³ã¿ã«ã¢ãã«ã䜿ã£ãŠèãããšããããšãªã®ã§ãããã
èšèšæã«åãçŽãããããš
第1ç« ããæã¡åž°ãããã®ããèªåçšã®ç¢ºèªé ç®ãšããŠãŸãšãããšæ¬¡ã®ããã«ãªããŸãã
| 芳枬é ç® | åã |
|---|---|
| 察象 | ããŸäžã€ã®ã·ã¹ãã ãŸãã¯ã³ã³ããŒãã³ããšããŠæ±ã£ãŠããç¯å²ã¯ã©ãã |
| åæ | ãããã¯ãŒã¯ãé害ãæéãé åºã«ã€ããŠäœãä»®å®ããŠããã |
| 屿çãªç¥è | ãã®å€æã«å¿ èŠãªæ å ±ããå®è¡äž»äœã¯æ¬åœã«èŠ³æž¬ã§ããã |
| å¯èœãªæ¯ãèã | æ£åžžç³»ã®äžäŸã§ã¯ãªããã©ã®ãããªå®è¡ãèµ·ããåŸãã |
| æ£ãã | ã©ã®æ¯ãèããäžæ£ãšå€å®ããã®ãããã®åºæºã¯èª°ã決ããã®ã |
| ä¿èšŒ | å®å šæ§ïŒsafetyïŒã掻æ§ïŒlivenessïŒãæ¡åŒµæ§ïŒscalabilityïŒãä¿¡é Œæ§ïŒreliabilityïŒã®ã©ãããã©ã®æ¡ä»¶äžã§çŽæããã |
| æœè±¡å | ã¢ãã«ã¯äœãæšãŠãŠããããæšãŠã詳现ãä»åã®çµè«ãå€ããªãã |
ãããäžèœã®ãã§ãã¯ãªã¹ãã§ã¯ãããŸãããåããåºå®ããããã§ã¯ãªããèªåãããŸäœ¿ã£ãŠããã¢ãã«ãé²åºãããããã®ä»®çœ®ãã§ãã察象ãè°è«ã®æ®µéã«ãã£ãŠã¯ãå¥ã®èŠ³æž¬é ç®ãå¿ èŠã«ãªãã¯ãã§ãã
çè§£ã¯åæ§æã§ããããš
ç§ã¯ãã®ç« ãèªãã§ã忣ã·ã¹ãã ã®ç¥èãå¢ãããšãããããæ®æ®µã®åŒã£ãããã«ååãä»ããæèŠãæã¡ãŸããã现éšãæ°ã«ããŠããããã§ãå®éã«ã¯æšè«ãã©ã®ã¢ãã«ã®äžã§æç«ããŠãããã確èªãããã£ãã®ã ãšæããŸãã
è¯ãã¡ã³ã¿ã«ã¢ãã«ã¯ãæ£è§£ã代ããã«åºããŠããããã®ã§ã¯ãããŸãããäœã芳枬ã§ããäœãèµ·ããåŸãŠãäœãæ£ãããšåŒã¶ã®ããåé¢ããæšè«ãåå®è¡ã§ãã圢ã«ããŸãããã®ããã«è©³çŽ°ãæšãŠãŸãããæšãŠãããšãã®ãã®ãç®çã«ã¯ããŸããã察象ãšããŠããåãã«ã€ããŠã®æšè«ãä¿åãããç¯å²ã§æšãŠãŸãããããŸã§ã§ããã°ãçµè«ãå€ãã£ããšãã«ããã©ã®åæãå€ãã£ãã®ãããããã¯ã¢ãã«ã®å°çšãè¶ããŠããªããã远ããŸãã
忣ã·ã¹ãã ã§ã¯ãå šäœãç¥ããªãéšåãã¡ããå šäœã®ä¿èšŒãäœããŸããç§ãã¡ãæè¡ãçè§£ãããšããå°ã䌌ãŠããŸããæå ã«å±ãã®ã¯æççãªèª¬æãå ·äœäŸãã³ãŒããèŠ³æž¬çµæã§ããããããçžäºäœçšãŸã§å«ãã¢ãã«ãžçµã¿çŽããã©ããŸã§èšãããã確ãããããã®äœæ¥ãèªåã§åçŸã§ããããšããç¥ã£ãŠããç¶æ ããçè§£ããŠããç¶æ ãžç§»ãäžã€ã®ç®å®ã«ãªãããã§ãã
ãããŠæ¬æžã第1ç« ã§ç€ºããŠããèãæ¹ã¯ã忣ã¢ã«ãŽãªãºã ã ãã«éãããã®ã§ã¯ãªãããã«æããŸãããäœãäžã€ã®å¯Ÿè±¡ãšããŠæ±ãã®ããåäž»äœã«ã¯äœãèŠããŠããã®ããæ§æèŠçŽ ã®çžäºäœçšãããå šäœãšããŠã©ã®ãããªæ¯ãèããçããã®ããã©ã®è©³çŽ°ãæšè±¡ããŠããèãããæ§è³ªã«ã€ããŠã®æšè«ã¯ä¿ãããã®ããããããåãã¯ãããŒã¿ããŒã¹ãAPIã®èšèšã ãã§ãªããèªå¯ãéçšæé ã蚌æ ã®æ±ããããã«çµç¹ã®ä»çµã¿ãèããå Žé¢ã«ãæã¡èŸŒãããã§ãã
ãã¡ãããç°ãªãåéãåãã¢ãã«ã§èª¬æã§ãããšããæå³ã§ã¯ãããŸãããããããã®å¯Ÿè±¡ã«ã¯ãããããåºæã®å¶çŽããããŸãããã ã察象ã«åãããŠã¢ãã«ãäœããã¢ãã«ã®å°çšã確ãããªããèãããšããå§¿å¢ã«ã¯ãåéãè¶ããŠäœ¿ããéšåãããããã§ãã忣ã·ã¹ãã ã«ã€ããŠã®å ¥éç« ãèªãã§ããã¯ããããã€ã®éã«ãèªåãæ®æ®µã©ã®ããã«ç©äºãçè§£ããããšããŠããã®ããŸã§ç §ããããŠããããã®ããšãããã®ç« ã«åŒ·ãæ¹ãããçç±ãªã®ã ãšæããŸãã
ãšã¯ããããããŸã§æžããŠãããã®ã¯ãç§å人ã第1ç« ãèªãã§èãããæãããããããšã䞊ã¹ãææ³ã§ãããããããããšã ã§ããããŸãããã®èšäºã ãã§æ¬æžã®å 容ãäŒãããããšã¯æã£ãŠããŸããããç§ã®èªã¿æ¹ãæ¬æžã®å¯äžã®èªã¿æ¹ã§ããã¯ãããããŸããã
ãã®èšäºã®ã©ãããå°ãã§ãæ°ã«ãªã£ããªãããThink Distributed Systemsããå®éã«èªãã§ã¿ãŠãã ãããã²ãšãŸã第1ç« ã ãã§ããããšæããŸããå ·äœçãªåæ£ã¢ã«ãŽãªãºã ãžé²ãåã«ãããããäœãã©ã®ããã«èããã®ãããã®ããã®åº§æšè»žãããªãäžå¯§ã«çšæããŠãããŠããŸããç§èªèº«ããçããåŸããšãããããä»åŸãããåããããªãããšãªã£ããšãã«æ»ã£ãŠããããå ŽæãåŸãããã«æããŠããŸãã