å€ãã®ã¹ã¿ãŒãã¢ããäŒæ¥ããã®ãããªç¶æ³ãçµéšããŠããŸããæ¯æ¥å€§å¢ã®æ°èŠãŠãŒã¶ãŒãç»é²ããéçºããŒã ã¯ãµãŒãã¹ãéå¶ãç¶ããã®ã«èŠåŽããŠããŸãã
ããã¯è¯ãåé¡ã§ãããWeb ã¢ããªã±ãŒã·ã§ã³ããŒãããæ°åäžã®ãŠãŒã¶ãŒãŸã§æ éã«æ¡åŒµããæ¹æ³ã«ã€ããŠãWeb äžã«ã¯æ確ãªæ å ±ãã»ãšãã©ãããŸããã éåžžãç«çœè§£æ±ºçãŸãã¯ããã«ããã¯è§£æ±ºçã®ãããã (å€ãã®å Žåãäž¡æ¹) ãååšããŸãã ãããã£ãŠã人ã ã¯ã¢ããã¥ã¢ã®ãããžã§ã¯ããæ¬åœã«æ¬æ Œçãªãã®ã«ã¹ã±ãŒã«ã¢ããããããã«ãããªãããããããªãã¯ããã¯ã䜿çšããŸãã
æ å ±ããã£ã«ã¿ãªã³ã°ããŠãåºæ¬çãªåŒãæžãçããŠã¿ãŸãããã æ°ããåçå ±æãµã€ã Graminsta ã®ãŠãŒã¶ãŒæ°ã 1 人ãã 100 人ãŸã§æ®µéçã«æ¡å€§ããŠããäºå®ã§ãã
èŠèŽè
ã10人ã100人ã1000人ã10äžäººã000äžäººãšå¢ãããšãã«ãå
·äœçã«ã©ã®ãããªè¡åãå¿
èŠãªã®ããæžãåºããŠã¿ãŸãããã
1ãŠãŒã¶ãŒïŒ1ãã·ã³
Web ãµã€ãã§ããã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ã§ãããã»ãŒãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯ XNUMX ã€ã®äž»èŠãªã³ã³ããŒãã³ãããããŸãã
- API
- ããŒã¿ããŒã¹
- ã¯ã©ã€ã¢ã³ã (ã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³èªäœãŸã㯠Web ãµã€ã)
ããŒã¿ããŒã¹ã«ã¯æ°žç¶çãªããŒã¿ãä¿åãããŸãã API ã¯ããã®ããŒã¿ã«å¯Ÿãããªã¯ãšã¹ããšãã®ããŒã¿ã«é¢ãããªã¯ãšã¹ããåŠçããŸãã ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒã«ããŒã¿ãéä¿¡ããŸãã
ç§ã¯ãã¢ãŒããã¯ãã£ã®èŠ³ç¹ãããã¯ã©ã€ã¢ã³ããš API ãšã³ãã£ãã£ãå®å šã«åé¢ãããŠããã°ãã¢ããªã±ãŒã·ã§ã³ã®ã¹ã±ãŒãªã³ã°ã«ã€ããŠè©±ãã®ãã¯ããã«ç°¡åã§ãããšããçµè«ã«éããŸããã
æåã«ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãéå§ãããšãã¯ãXNUMX ã€ã®ã³ã³ããŒãã³ããã¹ãŠãåããµãŒããŒäžã§å®è¡ã§ããŸãã ããæå³ãããã¯ç§ãã¡ã®éçºç°å¢ã«äŒŒãŠããŸããXNUMX 人ã®ãšã³ãžãã¢ãããŒã¿ããŒã¹ãAPIãã¯ã©ã€ã¢ã³ããåããã·ã³äžã§å®è¡ããŸãã
çè«çã«ã¯ã以äžã«ç€ºãããã«ãåäžã® DigitalOcean Droplet ãŸã㯠AWS EC2 ã€ã³ã¹ã¿ã³ã¹äžã®ã¯ã©ãŠãã«ãããã€ã§ããŸãã
ããã¯èšã£ãŠãããµã€ãã«è€æ°ã®ãŠãŒã¶ãŒãããå Žåã¯ãã»ãšãã©ã®å ŽåãããŒã¿ããŒã¹å±€ãå°çšã«ããããšãåççã§ãã
10 ãŠãŒã¶ãŒ: ããŒã¿ããŒã¹ãå¥ã®ã¬ãã«ã«ç§»åãã
ããŒã¿ããŒã¹ã Amazon RDS ã Digital Ocean ãããŒãžã ããŒã¿ããŒã¹ãªã©ã®ãããŒãžã ãµãŒãã¹ã«åå²ããããšã¯ãé·æçã«ã¯åœ¹ã«ç«ã¡ãŸãã åäžãã·ã³ãŸã㯠EC2 ã€ã³ã¹ã¿ã³ã¹ã§ã®ã»ã«ããã¹ãã£ã³ã°ãããå°ãé«äŸ¡ã§ããããããã®ãµãŒãã¹ã䜿çšãããšããã«ããªãŒãžã§ã³ ããã¯ã¢ããããªãŒãã¬ããªã«ãèªåãªã©ãå°æ¥åœ¹ç«ã€å€ãã®äŸ¿å©ãªæ¡åŒµæ©èœãããã«å©çšã§ããŸããããã¯ã¢ãããªã©ã
çŸåšã®ã·ã¹ãã ã¯æ¬¡ã®ããã«ãªããŸãã
100 ãŠãŒã¶ãŒ: ã¯ã©ã€ã¢ã³ããå¥ã®ã¬ãã«ã«ç§»åãã
幞ããªããšã«ãæåã®ãŠãŒã¶ãŒã¯ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ããšãŠãæ°ã«å ¥ã£ãŠãããŸããã ãã©ãã£ãã¯ã¯ããå®å®ããŠããŠãããããã¯ã©ã€ã¢ã³ããå¥ã®ã¬ãã«ã«ç§»åããææãæ¥ãŸããã 泚æãã¹ãããš åé¢ ãšã³ãã£ãã£ã¯ãã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããäžã§éèŠãªèŠçŽ ã§ãã ã·ã¹ãã ã®äžéšãããå€ãã®ãã©ãã£ãã¯ãåä¿¡ãããšããããåå²ããŠãç¹å®ã®ãã©ãã£ã㯠ãã¿ãŒã³ã«åºã¥ããŠãµãŒãã¹ãã©ã®ããã«æ¡åŒµãããããå¶åŸ¡ã§ããŸãã
ããããç§ãã¯ã©ã€ã¢ã³ãã API ããåãé¢ããŠèããããšã奜ãçç±ã§ãã ããã«ãããWebãã¢ãã€ã« WebãiOSãAndroidããã¹ã¯ããã ã¢ããªã±ãŒã·ã§ã³ããµãŒãããŒã㣠ãµãŒãã¹ãªã©ã®è€æ°ã®ãã©ãããã©ãŒã åãã®éçºãèããããšãéåžžã«ç°¡åã«ãªããŸãããããã¯ãã¹ãŠãåã API ã䜿çšããåãªãã¯ã©ã€ã¢ã³ãã§ãã
ããšãã°ãçŸåšããŠãŒã¶ãŒããã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ã®ãªãªãŒã¹ãæ±ããããšãæãå€ããªã£ãŠããŸãã ã¯ã©ã€ã¢ã³ããš API ãšã³ãã£ãã£ãåé¢ãããšããããç°¡åã«ãªããŸãã
ãã®ãããªã·ã¹ãã ã¯æ¬¡ã®ããã«ãªããŸãã
1000 ãŠãŒã¶ãŒ: ããŒã ãã©ã³ãµãŒãè¿œå
ç¶æ³ã¯äžåããŠããŸãã Graminsta ãŠãŒã¶ãŒã¯ãŸããŸãå€ãã®åçãã¢ããããŒãããŠããŸãã ç»é²æ°ã䌞ã³ãŠããŸãã ç§ãã¡ã®å¯äžã® API ãµãŒããŒã¯ããã¹ãŠã®ãã©ãã£ãã¯ã«å¯Ÿå¿ããã®ã«èŠåŽããŠããŸãã ãã£ãšéåãå¿ èŠã§ãïŒ
ããŒã ãã©ã³ãµãŒã¯éåžžã«åŒ·åãªæŠå¿µã§ãã éèŠãªã¢ã€ãã¢ã¯ãAPI ã®åã«ããŒã ãã©ã³ãµãŒãé 眮ãããã©ãã£ãã¯ãåã ã®ãµãŒãã¹ ã€ã³ã¹ã¿ã³ã¹ã«åæ£ãããšããããšã§ãã ããã¯ãæ°Žå¹³æ¹åã«ã¹ã±ãŒã«ããæ¹æ³ã§ããã€ãŸããåãã³ãŒããæã€ãµãŒããŒãè¿œå ããŠãåŠçã§ãããªã¯ãšã¹ãã®æ°ãå¢ãããŸãã
Web ã¯ã©ã€ã¢ã³ãã®åãš API ã®åã«å¥ã ã®ããŒã ãã©ã³ãµãŒãé 眮ããŸãã ããã¯ãAPI ã³ãŒããš Web ã¯ã©ã€ã¢ã³ã ã³ãŒããå®è¡ããè€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãå®è¡ã§ããããšãæå³ããŸãã ããŒã ãã©ã³ãµãŒã¯ãè² è·ã®äœããµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŸãã
ããã§ããã XNUMX ã€ã®éèŠãªå©ç¹ãã€ãŸãåé·æ§ãåŸãããŸãã XNUMX ã€ã®ã€ã³ã¹ã¿ã³ã¹ã«é害ãçºçããå Žå (ããããéè² è·ãŸãã¯ã¯ã©ãã·ã¥)ãåä¿¡ãªã¯ãšã¹ãã«å¿çãç¶ããä»ã®ã€ã³ã¹ã¿ã³ã¹ãæ®ãããŸãã åäœããŠããã€ã³ã¹ã¿ã³ã¹ã XNUMX ã€ã ãã®å Žåãé害ãçºçãããšã·ã¹ãã å šäœãã¯ã©ãã·ã¥ããŸãã
ããŒã ãã©ã³ãµãŒã¯èªåã¹ã±ãŒãªã³ã°ãæäŸããŸãã è² è·ãããŒã¯ã«ãªãåã«ã€ã³ã¹ã¿ã³ã¹ã®æ°ãå¢ããããã¹ãŠã®ãŠãŒã¶ãŒãã¹ãªãŒãããŠãããšãã«ã€ã³ã¹ã¿ã³ã¹ã®æ°ãæžããããã«æ§æã§ããŸãã
ããŒã ãã©ã³ãµãŒã䜿çšãããšããªã¯ãšã¹ãã®æ°ãå¢å ãããšãã«æ°ããã€ã³ã¹ã¿ã³ã¹ãè¿œå ããã ãã§ãAPI ã¬ãã«ãã»ãŒç¡å¶éã«æ¡åŒµã§ããŸãã
泚èšã çŸæç¹ã§ãç§ãã¡ã®ã·ã¹ãã ã¯ãAWS ã® Heroku ã Elastic Beanstalk ãªã©ã® PaaS äŒæ¥ããã®ãŸãŸæäŸããŠãããã®ãšéåžžã«ãã䌌ãŠããŸã (ããããéåžžã«äººæ°ãããçç±ã§ã)ã Heroku ã¯ããŒã¿ããŒã¹ãå¥ã®ãã¹ãã«é 眮ããèªåã¹ã±ãŒãªã³ã° ããŒã ãã©ã³ãµãŒã管çããŠãWeb ã¯ã©ã€ã¢ã³ãã API ãšã¯å¥ã«ãã¹ãã§ããããã«ããŸãã ããã¯ãåæ段éã®ãããžã§ã¯ããã¹ã¿ãŒãã¢ããã« Heroku ã䜿çšãã倧ããªçç±ã§ããåºæ¬çãªãµãŒãã¹ããã¹ãŠããã«å©çšã§ããããã§ãã
10 ãŠãŒã¶ãŒ: CDN
ããããæåãããããè¡ãã¹ãã ã£ãã§ãããã ãªã¯ãšã¹ãã®åŠçãšæ°ããåçã®åãå ¥ãã«ããããµãŒããŒã«é床ã®è² æ ããããå§ããŠããŸãã
ãã®æ®µéã§ã¯ãç»åããããªãªã©ã®éçã³ã³ãã³ããä¿åããããã«ã¯ã©ãŠã ãµãŒãã¹ (AWS S3 ãŸã㯠Digital Ocean Spaces) ã䜿çšããå¿ èŠããããŸãã äžè¬ã«ãAPI ã¯ç»åã®æäŸããµãŒããŒãžã®ç»åã®ã¢ããããŒããªã©ã®åŠçãé¿ããå¿ èŠããããŸãã
ã¯ã©ãŠã ãã¹ãã£ã³ã°ã®ãã XNUMX ã€ã®å©ç¹ã¯ CDN (AWS ã§ã¯ãã®ã¢ããªã³ã Cloudfront ãšåŒãã§ããŸãããå€ãã®ã¯ã©ãŠã ã¹ãã¬ãŒãž ãããã€ããŒããã®ãŸãŸæäŸããŠããŸã) ã§ãã CDN ã¯ãäžçäžã®ããŸããŸãªããŒã¿ ã»ã³ã¿ãŒã«ç»åãèªåçã«ãã£ãã·ã¥ããŸãã
åœç€Ÿã®ã¡ã€ã³ ããŒã¿ ã»ã³ã¿ãŒã¯ãªãã€ãªå·ã«ãããŸããã誰ããæ¥æ¬ããã€ã¡ãŒãžãèŠæ±ããå Žåãã¯ã©ãŠã ãããã€ããŒã¯ã³ããŒãäœæããŠæ¥æ¬ã®ããŒã¿ ã»ã³ã¿ãŒã«ä¿åããŸãã 次ã«æ¥æ¬ã§ãã®ç»åããªã¯ãšã¹ããã人ã¯ãããæ©ãç»åãåãåãããšãã§ããŸãã ããã¯ãåçããããªãªã©ãããŠã³ããŒãããŠäžçäžã«éä¿¡ããã®ã«æéãããã倧ããªãã¡ã€ã«ãæ±ãå Žåã«éèŠã§ãã
100 ãŠãŒã¶ãŒ: ããŒã¿å±€ã®æ¡åŒµ
CDN ã¯å€§ãã«åœ¹ç«ã¡ããã©ãã£ãã¯ã¯ãã«ã¹ããŒãã§å¢å ããŠããŸãã æåãªãããªããã¬ãŒã® Mavid Mobrick ãã¡ããã©ç§ãã¡ã«ç»é²ããããèšãããããã«åœŒã®ãã¹ããŒãªãŒããæçš¿ããŸããã ããŒã ãã©ã³ãµãŒã®ãããã§ãAPI ãµãŒããŒã® CPU ãšã¡ã¢ãªã®äœ¿çšéã¯äœãæããããŠããŸã (XNUMX åã® API ã€ã³ã¹ã¿ã³ã¹ãå®è¡ãããŠãã) ãããªã¯ãšã¹ãã§å€ãã®ã¿ã€ã ã¢ãŠããçºçãå§ããŠããŸã... ãã®é 延ã¯ã©ãããæ¥ãŠããã®ã§ãããã?
ã¡ããªã¯ã¹ãå°ã詳ãã調ã¹ãŠã¿ããšãããŒã¿ããŒã¹ ãµãŒããŒã® CPU ã®è² è·ã 80 ïœ 90% ã§ããããšãããããŸãã ããéçã§ãã
ããŒã¿å±€ã®ã¹ã±ãŒãªã³ã°ã¯ãããããæ¹çšåŒã®äžã§æãé£ããéšåã§ãã API ãµãŒããŒã¯ã¹ããŒãã¬ã¹ãªãªã¯ãšã¹ããåŠçãããããAPI ã€ã³ã¹ã¿ã³ã¹ãè¿œå ããã ãã§ãã 錻 éåæ°ã§ ããŒã¿ããŒã¹ã§ã¯ãããã§ããŸããã äžè¬çãªãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ç®¡çã·ã¹ãã (PostgreSQLãMySQL ãªã©) ã«ã€ããŠèª¬æããŸãã
ãã£ãã·ã³ã°
ããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ãåäžãããæãç°¡åãªæ¹æ³ã® XNUMX ã€ã¯ãæ°ããã³ã³ããŒãã³ãã§ãããã£ãã·ã¥ ã¬ã€ã€ãŒãå°å ¥ããããšã§ãã æãäžè¬çãªãã£ãã·ã¥æ¹æ³ã¯ãRedis ã Memcached ãªã©ã®ã¡ã¢ãªå ã®ããŒãšå€ã®ã¬ã³ãŒã ã¹ãã¢ã§ãã ã»ãšãã©ã®ã¯ã©ãŠãã«ã¯ãAWS äžã® Elasticache ãš Google Cloud äžã® Memorystore ãšãããµãŒãã¹ã®ãããŒãžã ããŒãžã§ã³ããããŸãã
ãã£ãã·ã¥ã¯ããµãŒãã¹ãåãæ å ±ãååŸããããã«ããŒã¿ããŒã¹ã«å¯ŸããŠäœåºŠãç¹°ãè¿ãåŒã³åºããè¡ãå Žåã«åœ¹ç«ã¡ãŸãã åºæ¬çã«ãããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããã®ã¯ XNUMX åã ãã§ãæ å ±ã¯ãã£ãã·ã¥ã«ä¿åãããå床觊ããããšã¯ãããŸããã
ããšãã°ãGraminsta ãµãŒãã¹ã§ã¯ã誰ããã¹ã¿ãŒ Mobrik ã®ãããã£ãŒã« ããŒãžã«ã¢ã¯ã»ã¹ãããã³ã«ãAPI ãµãŒããŒããã®ãããã£ãŒã«ã®æ å ±ãããŒã¿ããŒã¹ã«ç §äŒããŸãã ãã®ãããªããšãäœåºŠãèµ·ãããŸãã Mobrik ã®ãããã¡ã€ã«æ å ±ã¯ãªã¯ãšã¹ãããšã«å€æŽãããªãããããã£ãã·ã¥ã«åªããŠããŸãã
ããŒã¿ããŒã¹ããã®çµæãããŒããšã« Redis ã«ãã£ãã·ã¥ããŸã user:id
æå¹æé㯠30 ç§ã§ãã çŸåšã誰ãã Mobrik ã®ãããã£ãŒã«ã«ã¢ã¯ã»ã¹ãããšããŸã Redis ããã§ãã¯ããããŒã¿ãååšããå Žå㯠Redis ããçŽæ¥è»¢éããŸãã çŸåšããµã€ãäžã§æã人æ°ã®ãããããã¡ã€ã«ãžã®ãªã¯ãšã¹ãã¯ãå®éã«ã¯ããŒã¿ããŒã¹ãããŒãããŸããã
ã»ãšãã©ã®ãã£ãã·ã¥ ãµãŒãã¹ã®ãã XNUMX ã€ã®å©ç¹ã¯ãããŒã¿ããŒã¹ ãµãŒããŒãããæ¡åŒµã容æã§ããããšã§ãã Redis ã«ã¯ãRedis ã¯ã©ã¹ã¿ãŒ ã¢ãŒããçµã¿èŸŒãŸããŠããŸãã ããŒããã©ã³ãµãŒã«äŒŒããã®
ã»ãšãã©ãã¹ãŠã®å€§èŠæš¡ã¢ããªã±ãŒã·ã§ã³ã¯ãã£ãã·ã¥ã䜿çšããŠãããé«é API ã«ã¯çµ¶å¯Ÿã«äžå¯æ¬ ãªéšåã§ãã ã¯ãšãªåŠçã®é«éåãšã³ãŒãã®çç£æ§ã®åäžã¯ãã¹ãŠéèŠã§ããããã£ãã·ã¥ãªãã§ã¯ãµãŒãã¹ãæ°çŸäžã®ãŠãŒã¶ãŒã«æ¡åŒµããããšã¯ã»ãŒäžå¯èœã§ãã
ãªãŒãã¬ããªã«
ããŒã¿ããŒã¹ãžã®ã¯ãšãªã®æ°ãå€§å¹ ã«å¢å ããå Žåããã XNUMX ã€ã§ããããšã¯ãããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã«ãªãŒãã¬ããªã«ãè¿œå ããããšã§ãã äžã§èª¬æãã管çãµãŒãã¹ã䜿çšãããšããããã¯ã³ã¯ãªãã¯ã§å®è¡ã§ããŸãã ãªãŒãã¬ããªã«ã¯ã¡ã€ã³ããŒã¿ããŒã¹ã«ææ°ã®ãŸãŸæ®ããSELECT ã¹ããŒãã¡ã³ãã§äœ¿çšã§ããŸãã
çŸåšã®ã·ã¹ãã ã¯æ¬¡ã®ãšããã§ãã
次ã®ã¹ããã
ã¢ããªã±ãŒã·ã§ã³ãæ¡åŒµãç¶ããã«ã€ããŠããµãŒãã¹ãåé¢ããŠåå¥ã«æ¡åŒµããŠãããŸãã ããšãã°ãWebsocket ã䜿ãå§ããå Žåã¯ãWebsocket ã®åŠçã³ãŒããå¥ã®ãµãŒãã¹ã«åã蟌ãã®ãåççã§ãã ãããç¬èªã®ããŒã ãã©ã³ãµãŒã®èåŸã«ããæ°ããã€ã³ã¹ã¿ã³ã¹ã«é 眮ããããšãã§ãããªãŒãã³ãª Websocket æ¥ç¶ã«åºã¥ããŠãHTTP ãªã¯ãšã¹ãã®æ°ã«é¢ä¿ãªãã¹ã±ãŒã«ã¢ããããã³ã¹ã±ãŒã«ããŠã³ã§ããŸãã
ç§ãã¡ã¯ããŒã¿ããŒã¹ã¬ãã«ã§ã®å¶éãšãéãç¶ããŸãã ãã®æ®µéã§ãããŒã¿ããŒã¹ã®ããŒãã£ã·ã§ãã³ã°ãšã·ã£ãŒãã£ã³ã°ã«ã€ããŠæ€èšããŸãã ã©ã¡ãã®ã¢ãããŒãã§ãè¿œå ã®ãªãŒããŒããããå¿ èŠã§ãããããŒã¿ããŒã¹ãã»ãŒç¡å¶éã«æ¡åŒµã§ããŸãã
ãŸããNew Relic ã Datadog ãªã©ã®ç£èŠããã³åæãµãŒãã¹ãã€ã³ã¹ããŒã«ããããšèããŠããŸãã ããã¯ãé ãã¯ãšãªãç¹å®ããã©ããæ¹åããå¿ èŠãããããç解ããã®ã«åœ¹ç«ã¡ãŸãã èŠæš¡ãæ¡å€§ããéã«ã¯ãåã®ã»ã¯ã·ã§ã³ã®ã¢ã€ãã¢ã®äžéšã䜿çšããŠãããã«ããã¯ãèŠã€ããŠæé€ããããšã«éç¹ã眮ããããšèããŠããŸãã
ãœãŒã¹
ãã®æçš¿ã¯ã次ã®ããããã«ã€ã³ã¹ãã¬ãŒã·ã§ã³ãåŸããã®ã§ã
è泚
- è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ã«ãããè² è·åæ£ãšããç¹ã§ã¯äŒŒãŠããŸãããRedis ã¯ã©ã¹ã¿ãŒã®åºç€ãšãªãå®è£
ã¯ããŒã ãã©ã³ãµãŒãšã¯å€§ããç°ãªããŸãã
[æ»ã]
åºæïŒ habr.com