APIããã³ãµãŒããŒã¢ããªã±ãŒã·ã§ã³åãã®å°éçãªããã¯ãšã³ãããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ãé«è² è·ã·ã¹ãã åãã«ãå¿çæéãã¹ã«ãŒãããããªãœãŒã¹å©çšçãæé©åããŸãã
å§ãã
ããã¯ãšã³ãã®ããã©ãŒãã³ã¹ã¯ããã¹ãŠã®ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã«çŽæ¥åœ±é¿ããŸããåœç€Ÿã¯ãã¡ã¢ãªãªãŒã¯ãæé©åãããŠããªãã¯ãšãªãããããã³ã°I/Oãéå¹çãªã·ãªã¢ã«åãªã©ãç®ã«èŠããé å»¶ã®åå ãšãªãé ããéå¹çæ§ãèŠã€ããããšãå°éãšããŠããŸããåœç€Ÿã®ãã¥ãŒãã³ã°ã¯ããŠãŒã¶ãŒãããã«äœæã§ããP95ã¬ã€ãã³ã·ãŒã®æ¹åããããããŸãã
èšèªåºæã®ããŒã« (Node.js --prof, py-spy, JVM çšã® async-profiler) ãš APM ãã©ãããã©ãŒã ã䜿çšããŠãããã¡ã€ãªã³ã°ãè¡ããŸããæé©åãœãªã¥ãŒã·ã§ã³ã«ã¯ãRedis ãã£ãã·ã³ã°ãæ¥ç¶ããŒã« (PgBouncer, generic-pool)ãã¹ããªãŒãã³ã°å¿çãããã³CPUè² è·ã®é«ãã¿ã¹ã¯åãã®ã¯ãŒã«ãŒ ã¹ã¬ãã ãªãããŒããå«ãŸããŸãã
é«ãP95ã¬ã€ãã³ã·ãŒãã¹ã«ãŒãããã®å¶éãã¡ã¢ãªè² è·ããŸãã¯äžŠè¡è² è·äžã§ã®ããã©ãŒãã³ã¹äœäžã«çŽé¢ããŠããããã¯ãšã³ããµãŒãã¹ãã¢ããªã·ãã¯ãªAPIã§ããããã€ã¯ããµãŒãã¹ã®ã»ããã§ãããåã³ã³ããŒãã³ããæé©ãªããã©ãŒãã³ã¹ã«èª¿æŽããŸãã
ããã©ãŒãã³ã¹ã®ããŒã¹ã©ã€ã³ãèšå®ããè² è·äžã§ãããã¡ã€ãªã³ã°ãå®è¡ããäž»èŠãªãªãœãŒã¹æ¶è²»è ãç¹å®ããŸãã
ããã«ããã¯ïŒããŒã¿ããŒã¹ã¯ãšãªãã¡ã¢ãªãã¿ãŒã³ãããããã³ã°æäœãåæå®è¡æ§ã®åé¡ïŒãæ·±ãæãäžããŠåæããŸãã
ãã£ãã·ã³ã°ãã¯ãšãªæé©åãéåæãã¿ãŒã³ããªãœãŒã¹ç®¡çã®æ¹åãªã©ãçãçµã£ãä¿®æ£ãå®è£ ããŸãã
ååŸæ¯èŒã®ã¡ããªã¯ã¹ãçšããŠè² è·ãã¹ããå®è¡ããããŒã¯ãã©ãã£ãã¯ã·ããªãªäžã§æ€èšŒããŸãã
ã¬ã€ãã³ã·ãŒãã©ããã³ã°ãå±éããSLOã¿ãŒã²ãããèšå®ãããã°ã¬ãŒãæ€åºã®ããã®ã¢ã©ãŒããèšå®ããŸãã
ããã¯ãšã³ããæé©åããŠã100msæªæºã®å¿çæéãå®çŸãããããããã©ãã£ãã¯è² è·ã«å¯Ÿå¿ããŸãããã
åœç€Ÿã®ããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ãµãŒãã¹ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®ãããã¡ã€ãªã³ã°ãããŒã¿ããŒã¹ã¯ãšãªãšã€ã³ããã¯ã¹ã®æé©åãã¡ã¢ãªäœ¿çšéã®æ¹åãAPIå¿çæéã®ççž®ããã£ãã·ã¥å±€ã®å®è£ ãããã³ãµãŒããŒãšã©ã³ã¿ã€ã ã®æ§æãã¥ãŒãã³ã°ãå«ãŸããŸãã
éå»ã®æ¡ä»¶ã§ã¯ãã¯ãšãªæé©åããã£ãã·ã¥ãã³ãã¯ã·ã§ã³ããŒãªã³ã°ãããã³ãã€ããŒãå§çž®ãéããŠãAPIå¿çæéã60%ãã90%åæžããŠããŸãããå ·äœçãªæ¹åã¯ãã客æ§ã®ã·ã¹ãã ã«ãããçŸåšã®ããã«ããã¯ã«äŸåããŸãã
ã¯ããã客æ§ã®ããã¯ãšã³ããé·æã«ãããæé«ã®ããã©ãŒãã³ã¹ãç¶æã§ããããããªã¢ã«ã¿ã€ã ã®ããã©ãŒãã³ã¹ããã·ã¥ããŒããé å»¶ååž°ãæ€ç¥ããããã®èªåã¢ã©ãŒãã鱿¬¡ããã©ãŒãã³ã¹ã¬ããŒããããã³å®æçãªæé©åã¬ãã¥ãŒãèšå®ããããŸãã
åœç€Ÿã¯ãå€ãJavaãPHPãããã³.NETãã¬ãŒã ã¯ãŒã¯äžã«æ§ç¯ãããã¬ã¬ã·ãŒã·ã¹ãã ã«ã€ããŠããããã³ãŒããã¹ã®ãªãã¡ã¯ã¿ãªã³ã°ãããŒã¿ã¢ã¯ã»ã¹å±€ãžã®ãã£ãã·ã³ã°å°å ¥ãORMã¯ãšãªã®æé©åããããŠããå¹ççãªã©ã³ã¿ã€ã ããŒãžã§ã³ãžã®ã¢ããã°ã¬ãŒããéããŠãæé©åãå®çŸããŠããŸããã
ããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ã®äŸé Œã¯1æéããã$10ãã$50ã§è«æ±ãããŸããäžè¬çãªç£æ»ããã³æé©åãããžã§ã¯ãã¯2é±éãã4é±éãèŠããæé©åååŸã®ãã³ãããŒã¯ãå«ãç·åçãªããã©ãŒãã³ã¹ã¬ããŒããå«ãŸããŸãã