Sprykerã¯ãeã³ããŒã¹ã®ãã¬ãŒã ã¯ãŒã¯ã§ããã100ãè¶ ããåå¥ã®eã³ããŒã¹ãããžã§ã¯ãã®çµæã§ãã ããã«äœ¿çšã§ãã2ã€ã®æãéèŠãªã¢ãŒããã¯ãã£ãŒå質-é«ãããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãŒãæäŸããŸãã ãã®èšäºã§ã¯ãããããéæããããã®åºæ¬æŠå¿µã«ã€ããŠèª¬æããŸãã
ãªãããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãããã»ã©éèŠãªã®ã§ããïŒ
誰ããããµãŒããŒã®ããã©ãŒãã³ã¹ã®äœäžãæ¬åœã®å€æãã©ãŒã§ããããšãç¥ã£ãŠããŸãã çãããªããé«éãªWebãµã€ãã¯æ¥œãã䜿çšã§ããŸããããµãŒããŒã®å¿çæéãççž®ããããã«æŠãä»ã®çç±ããããŸãã
é«è² è·ã§äœéã®ã¢ããªã±ãŒã·ã§ã³ãæäœããããšã®é£ãããèŠããŠãããããããŸããã Sprykerã§ã¯ããªã³ã©ã€ã³ã¹ãã¢ããã¬ãåºåã倧éã¡ãŒã«éä¿¡ãSEMãã£ã³ããŒã³ãªã©ã®ããŒã±ãã£ã³ã°ãã£ã³ããŒã³ã®ãããã«ããã¯ãã«ãªããªãããã«ããããšèããŠããŸãã
åªããã¢ããªã±ãŒã·ã§ã³ããã©ãŒãã³ã¹ã¯ãITããŒã ã®çç£æ§ã«ãã©ã¹ã®å¹æããããããŸãã éçºè ã¯ãããŒã¿ããŒã¹è€è£œãé«äŸ¡ãªãµãŒããŒæ§æã®ããã®è€éãªã¡ã«ããºã ã®å®è£ ã«ãããžãã¹ã«ãšã£ãŠäŸ¡å€ã®ãªãæéãè²»ããå¿ èŠããããŸããã æãããªçç±ããããã«ããŒãžãã£ãã·ã¥ãé¿ããããšæããŸã ã
é«éã¢ããªã±ãŒã·ã§ã³ã®ãã1ã€ã®å©ç¹ã¯ããã¹ããšå®çšŒåã®äž¡æ¹ã§ãã¯ã©ãŠãå ã®å°ããªïŒå®äŸ¡ãªïŒãµãŒããŒã§ã¹ãã¢ãå®è¡ã§ããããšã§ãã äžè¬ã«ãããŒããŠã§ã¢ã®æé©åãšèª¿æŽã«æéãè²»ããå¿ èŠããªãå ŽåããµãŒããŒããŒããŠã§ã¢ã®è€éããå€§å¹ ã«ç°¡çŽ åã§ããŸãã
建ç¯äžã®ç®æš
éåžžã®è² è·ã§ã¯ãå žåçãªSprykerã¹ãã¢ã®å¹³åå¿çæéã¯çŽ50ããªç§ã§ãã ã«ãŒããžã®ã¢ã€ãã ã®è¿œå ãªã©ããã®ãããªè²»çšã®ããããªã¯ãšã¹ãã§ãã150ããªç§æªæºã§å®äºããå¿ èŠããããŸãã ãããã®æ°å€ã§äœãããããªãå Žåã¯ã Dmitry Sorokaãå ¬éããïŒéå ¬åŒã®ïŒ Magentoããã©ãŒãã³ã¹ãã¹ããšæ¯èŒã§ããŸãã Dmitryã¯Magentoã®å ãªãŒãã¢ãŒããã¯ãã§ããããã圌ã®å§¿ã¯çŸå®ãšããã»ã©å€ãããªããšèããããŸãã 圌ã¯ãå€ãããŸã æåãªMagento 1ãšæ°ããMagento 2ãæ¯èŒããŸããã
Magento 1補åããŒãžã§ã¯ããµãŒããŒã¬ã¹ãã³ã¹ã¯90ïŒ ã®ã±ãŒã¹ã§250ããªç§ä»¥äžã§ããã Magento 2ã®å Žåã250ããªç§ãæºããããšãã§ãããªã¯ãšã¹ãã¯25ïŒ æªæºã§ããã 次ã®ã°ã©ãã«ç€ºãããã«ãã»ãšãã©ã®ãªã¯ãšã¹ãã¯600ããªç§ä»¥äžå®è¡ãããŸããã
ãããã®çµæãšæ¯èŒãããšãSprykerã¯Magento 1ã®5åãMagento 2ã®5ã12åã®éãã§ããæåã®çµæãšããŠãSprykerã¹ãã¢ããŒã ããŒãžã®å¿çæéã®ã°ã©ãã瀺ããŸãïŒãã®åäœã¯è£œåããŒãžã«äŒŒãŠããŸãïŒã ãã¹ãã¯ã1åéã«3000ãªã¯ãšã¹ãã®è² è·ã§åäžã®HerokuãµãŒããŒã§å®è¡ãããŸããããã«ããŒãžãã£ãã·ã¥ã¯ãããŸããã
3k RPM / Heroku 1ããã©ãŒãã³ã¹Lãã€ã/ PHP7
ã¹ã±ãŒã©ãã«ãªã·ã¹ãã ã¯ãäœè² è·ããã³é«è² è·ãæ倧æ©åšè² è·ã®äž¡æ¹ã§ã®å¿çæéã®ççž®ã«å ããŠãå¿çæéãé ããªããŸãã äžè¯ãªã·ã¹ãã ã¯ãåã«å¿çãåæ¢ããŸã;ããã¯ãSQLããŒã¿ããŒã¹ããã¥ãŒã«ã¯ãšãªãèç©ãå§ããããI / Oã¬ã€ãã³ã·ãŒãé·ããªãããããšãã«ããèµ·ãããŸãã
ãŸããæ¶è²»ãããã¡ã¢ãªéãåæžããããšããŸããããã«ãããé«äŸ¡ãªãµãŒããŒã¡ã¢ãªãè³Œå ¥ããããšãªããå€æ°ã®äžŠåãªã¯ãšã¹ããå®è¡ã§ããŸãã
ãããŠæåŸã«ãããã«ããã¯ãã³ãŒã«ããã£ãã·ã¥ãªãã§ãç°¡åã«æ°Žå¹³æ¹åã«ã¹ã±ãŒãªã³ã°ã§ããããã«ããããšèããŠããŸãã
ç¹å®ã®ãããžã§ã¯ãã®å®éã®ããã©ãŒãã³ã¹ã¯ãç¹å®ã®ãã¹ãã£ã³ã°èšå®ããµã€ãæ§é ã補åæ°ãä»ã®ãµãŒãã¹ãšã®çžäºäœçšããããŠãã¡ãããéçºããããœãªã¥ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãªã©ãå€ãã®èŠå ã«äŸåããŸãã è² è·ã®é«ããããžã§ã¯ãã®å Žåãå®éã®ãŠãŒã¶ãŒãã©ãã£ãã¯ãã·ãã¥ã¬ãŒãããå°çšã®è² è·ãã¹ããåžžã«ãå§ãããŸãã Sprykerã¯é«éã®PHPãã¬ãŒã ã¯ãŒã¯ãæäŸãããããã客æ§ã¯ãµãŒããŒãæé©åãŸãã¯æ§æããããã«å€å€§ãªåªåãããå¿ èŠã¯ãããŸããã
æé©åããããœãããŠã§ã¢èšèš
äžèšã®ç®æšãéæããããã«ãã¹ãã¢ã¢ããªã±ãŒã·ã§ã³ãYvesãšZedã®2ã€ã®éšåã«åããããšã«ããŸããã Yves-ã¯ã©ã€ã¢ã³ãã®ããã³ããšã³ãã ããã¯ã Silex SensioLabsãã€ã¯ããã¬ãŒã ã¯ãŒã¯ã«åºã¥ããå°ããªPHPã¢ããªã±ãŒã·ã§ã³ã§ãã Zedã¯ããã¹ãŠã®ããžãã¹ããžãã¯ãå«ããéãããµãŒããŒã¢ããªã±ãŒã·ã§ã³ã§ãã
Yvesã¯ãäžèŠãªã¢ãŒããã¯ãã£ã¬ã€ã€ãŒãšç°¡åãªèªã¿èŸŒã¿ããã»ã¹ãå¿ èŠãšããªãç°¡çŽ åãããèšèšã«ããããã®é床ã®ã»ãšãã©ãå®çŸããŸãã Yvesã®ãã1ã€ã®éèŠãªæŠå¿µã¯ãããŒã¿ã«ã¢ã¯ã»ã¹ããæ¹æ³ã§ãã å€ãã®é¢ä¿ãšæ¡ä»¶ãæã€ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã«å¯Ÿããé«äŸ¡ãªSQLã¯ãšãªã®ä»£ããã«ãYvesã¯éåžžã«é«éãªããŒå€ããŒã¿ã¹ãã¢ïŒããã©ã«ãã¯RedisïŒããããŒã¿ãèªã¿åããŸãã Yvesã®å šææ€çŽ¢ãšãã¡ã»ããæ€çŽ¢ã®é床ã¯ã匷åãªElasticsearchã«ãããã®ã§ãã å€ãã®å Žåãã¹ã±ãŒã©ããªãã£ã®ããã«ããã¯ãšãªããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã¯ãYvesããçŽæ¥ã¢ã¯ã»ã¹ã§ããŸããã 代ããã«ãZedã¯ãã¹ãŠã®ããŒã¿å€æŽãåéããããããRedisããã³Elasticsearchã«æºåããŸãã
ããã©ãŒãã³ã¹ã€ã
Yvesã®ããã©ãŒãã³ã¹ãè©äŸ¡ããã«ã¯ããã®ã¢ã¯ã·ã§ã³ã®ã·ãŒã±ã³ã¹ãæ€èšããŸãã å žåçãªYvesãªã¯ãšã¹ãã¯æ¬¡ã®ãšããã§ãã
ïŒ1ïŒURL解æ
ïŒ2ïŒRedisããã³/ãŸãã¯Elasticsearchãããã¹ãŠã®ããŒã¿ãååŸãã
ïŒ3ïŒãã®ããŒã¿ãããªã³ã³ãã€ã«æžã¿Twigãã³ãã¬ãŒãã«è¿œå ãã
æããã«ãåçŽåãããã¢ãŒããã¯ãã£ã®ããã«ãPHPã³ãŒãã«å¯Ÿããã¢ã¯ã·ã§ã³ã¯ããã»ã©å€ããããŸããã ããã©ãŒãã³ã¹ã«é¢ããŠã¯ãYvesãRedisãElasticsearchããããŒã¿ãåä¿¡ãã2çªç®ã®ã¹ãããã§æãéèŠãªéšåãå§ãŸããŸãã 補åãCMSããŒãžãããã³ç¿»èš³ã«é¢ãããã¹ãŠã®ããŒã¿ã¯Redisã«ä¿åãããŸãã äžæ¹ãå補åã«é¢ããæ£èŠåãããPostgreSQLãŸãã¯MySQLãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹æ å ±ã¯ãåšåº«ãäŸ¡æ Œãçšãªã©ã®è€æ°ã®ããŒãã«ã«åæ£ãããŸãã ãããã¯ãã¹ãŠæ°ŽçŽ åãããŠåäžã®ããŒã¿ã»ããã«ãªããRedisã«ä¿åãããŸãã ã³ã¹ãã®ãããè€æ°ã®ã¯ãšãªã®ä»£ããã«ãYvesã¯åçŽã«Redis :: getïŒïŒãå®è¡ããŠãå¿ èŠãªãã¹ãŠã®ããŒã¿ãäžåºŠã«ååŸããŸãã
åããŒãžã«ã¯è€æ°ã®ããŒã¿ã»ãããå¿ èŠã§ãã Redisã¯ã倧éã®ããŒã¿ãšå€æ°ã®æ¥ç¶ãããå Žåã§ãéåžžã«é«éã§ãã SpiskerãšåããµãŒããŒã«Redisãã€ã³ã¹ããŒã«ããå Žåãåäžã®Redis :: getïŒïŒãªã¯ãšã¹ãã«ã¯0.1ããªç§ããããããŸããã 顧客ã®90ïŒ ãå ããã¯ã©ãŠããµãŒãã¹ã§Sprykerãå®è¡ãããšããããã¯ãŒã¯é 延ãçºçããŸãã ããŒã«ã«RedisãRAMã§ãã°ããæ€çŽ¢ãã代ããã«ãé ããããã¯ãŒã¯ã§ã¯å®è¡æéãå€§å¹ ã«å¢å ããŸãã ãã®ãããYvesã¯ããŒã¿ãå€æ°ã®Redis :: getïŒïŒã§ã¯ãªããåäžã®Redis :: mgetïŒïŒãªã¯ãšã¹ãã«èªåçã«ããŒãžããŸãã ããã«ãããã¯ã©ãŠããµãŒãã¹ã®æŠå¿µçãªå¶éãå¹³æºåããRedisããæ倧ã®ããã©ãŒãã³ã¹ãåŸãããšãã§ããŸãã
Redisãšã¯ç°ãªããElasticsearchã¯ã«ã¿ãã°ã«ã®ã¿äœ¿çšãããŸãã 1ã€ã®ãªã¯ãšã¹ãã®ã¿ãå®è¡ããŸããããã®ãªã¯ãšã¹ãã¯Redis :: getïŒïŒãããã¯ããã«é ããªããŸãã ã¯ãšãªã®é 延ãé²ãããã«ãã¯ã€ãã¯æ€çŽ¢çšã«ããŒã¿ãæºåãããã€ã³ããã¯ã¹äœæãæé©åããŸããã ããã«ã€ããŠã¯ãå¥ã®èšäºã§è©³ãã説æããŸãã
æåŸã«ãã¹ã±ãŒã©ããªãã£ã«ã€ããŠå°ã説æããããšæããŸãã ã¯ã©ãŠããµãŒãã¹ã®ã¹ã±ãŒã©ããªãã£ã®ããã«Sprykerãæºåããããã«ã12ã®èŠå ã®æ¹æ³è«ãå³å®ããŸãã ãã®æãéèŠãªéšåã¯ããã¢ããªã±ãŒã·ã§ã³ããã»ã¹ã¯å éšç¶æ ãä¿åããïŒã¹ããŒãã¬ã¹ïŒãå ±æããŒã¿ãæããªãïŒshare-nothingïŒããšããããšã§ãã Yvesã®ãã¹ãŠã®éšåã¯ãã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåãšã¯ç¬ç«ããŠã¹ã±ãŒãªã³ã°ã§ããŸãã Yvesã®ã€ã³ã¹ã¿ã³ã¹ãè¿œå ããããRedisãŸãã¯Elasticsearchã®ãªãœãŒã¹ãè¿œå ãããã§ããŸãã ããã¯ãã¹ãŠããŠã³ã¿ã€ã ãªãã§å¯èœã§ãããã¢ããªã±ãŒã·ã§ã³ããããã€ããå¿ èŠãããããŸããã ãã®è³ªåã«ã€ããŠã¯ãä»åŸã®èšäºã§è©³ãã説æããŸãã
Sprykerãããžã§ã¯ãã«æ £ããŠããã ããã°å¹žãã§ãã VirtualBoxã®ããŒã¹ä»®æ³ãã·ã³ã§ãã¹ãŠã®èšå®ãæºåãããŠãããããã³ã³ãã¥ãŒã¿ãŒã§ç°¡åã«å®è¡ã§ããŸã ã éèŠïŒãã®ç»åã§ã¯Opcacheã¯ç¡å¹ã«ãªã£ãŠããŸãã