ãã®èšäºã§ã¯ã以äžã䜿çšããWebãµãŒãã¹ã®éçºãšçç£ã«ã€ããŠèª¬æããŸãã
NodeJSïŒãã¡ã€ããŒïŒãMongoDBãRedisãElasticSearchãCapistranoãRackspaceã
ãšã³ããªãŒ
3é±éåãDavidãšç§ïŒ DMiloshev ïŒ ã¯ Tactoom.comã€ã³ãã©ãœãŒã·ã£ã«ãããã¯ãŒã¯ãç«ã¡äžããŸãã ã ãããäœã§ãããã«ã€ããŠã¯ã ããã§èªãããšãã§ããŸã ã
NodeJSã§æè¿ çºçãããã€ãºã®èæ¯ã«å¯ŸããŠãããããå€ãã®äººã¯ãã®ãã¯ãããžãŒãèšèã§ã¯ãªãå®éã«ããããšã«èå³ãæã£ãŠããŸãã
NodeJSã¯äžèœè¬ã§ã¯ãããŸããã ããã¯å®éã«ã¯å¥ã®æè¡ã§ãããä»ã®æè¡ãããåªããŠããããã§ã¯ãããŸããã åªããããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãå®çŸããããã«ã¯ãä»ã®ã©ãã§ãããã§ããããã«ãããããæ±ããããªããã°ãªããŸããã
ã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£
NodeJSã¢ããªã±ãŒã·ã§ã³ã¯ã2çš®é¡ã®ããã»ã¹ã«åããããŸãã
1. Webããã»ã¹ïŒhttpïŒ
2.ã¯ã©ãŠãããã»ã¹ïŒãã¥ãŒïŒ
ãã¹ãŠã®ããã»ã¹ã¯çžäºã«å®å šã«ç¬ç«ããŠãããç°ãªããµãŒããŒã«ãããã«ã¯å°çã®ããŸããŸãªå Žæã«é 眮ããããšãã§ããŸãã åæã«ãã¢ããªã±ãŒã·ã§ã³ã¯ããããã®ããã»ã¹ã®ä¹ç®ã«ãã£ãŠæ£ç¢ºã«ã¹ã±ãŒãªã³ã°ãããŸãã ãããã®éã®éä¿¡ã¯ãäžå åãããã¡ãã»ãŒãžãµãŒããŒïŒredisïŒãä»ããŠè¡ãããŸãã
Webããã»ã¹ã¯ããŠãŒã¶ãŒããã®çŽæ¥httpèŠæ±ãåŠçããŸãã åããã»ã¹ã¯äžåºŠã«è€æ°ã®ãªã¯ãšã¹ããåŠçã§ããŸãã Eventloopã®è©³çŽ°ãèæ ®ãããšãç¹å®ã®åèŠæ±ã®CPU / IOæ¯çã«å¿ããŠã䞊ååŠçã®å¶éã¯ãããæç¹ã§ã®åã ã®ããã»ã¹ã«å¯ŸããŠæžå°ãŸãã¯å¢å ããå¯èœæ§ããããŸãã
ã¯ã©ãŠãããã»ã¹ã¯ããŠãŒã¶ãŒãªã¯ãšã¹ãã«çŽæ¥é¢ä¿ããªãæäœãå®è¡ããŸãã äŸïŒé»åã¡ãŒã«ã®éä¿¡ãããŒã¿ã®éæ£èŠåãæ€çŽ¢ã€ã³ããã¯ã¹äœæã Webãšåæ§ã«ã1ã€ã®ã¯ã©ãŠãããã»ã¹ã§åæã«å€ãã®ç°ãªãçš®é¡ã®ã¿ã¹ã¯ãåŠçã§ããŸãã
ããã§ã¯ãã¿ã¹ã¯/ã¯ãšãªã®ãååæ§ããéåžžã«éèŠã§ããããšã¯æ³šç®ã«å€ããŸãã ã€ãŸãã容éã®ããã¿ã¹ã¯/èšç®ãå€ãã®å°ããªéšåã«åå²ããæ®ãã®ããã»ã¹å šäœã«åçã«åæ£ãããå¿ èŠããããŸãã ããã«ãããã¿ã¹ã¯ã®é床ããã©ãŒã«ããã¬ã©ã³ã¹ãåäžããåããã»ã¹ãšãµãŒããŒå šäœã®ã¡ã¢ãªæ¶è²»ãšããããã³ã°ä¿æ°ãåæžãããŸãã
Webâã¯ã©ãŠã
ç§ã¯ãCPUã«å¯Ÿããå šäœçãªIOæéæ¯çãå¢å ããããããªæ¹æ³ã§Webããã»ã¹ãæŽçããããšããŸããã€ãŸããé«ã競äºåã®ãããªã¯ãšã¹ãã§ã®HTTPã®é«éçºè¡ã«çŠç¹ãåãããŸãã ããã¯ã Webãé«CPUããžãã¯ãCloudã«å§ä»»ãããã®å®è¡ãåŸ ã£ãŠãããèšç®ã®çµæãåãåãããšãæå³ããŸãã ãããã£ãŠãnodejsã®éåæã¢ãŒããã¯ãã£ã«ãããWebã¯åŸ æ©äžã«ä»ã®èŠæ±ãè¡ãããšãã§ããŸãã
ã¯ã©ã¹ã¿ãªã³ã°
Webãšã¯ã©ãŠãã®ã¢ãŒããã¯ãã£ã¯éåžžã«ãã䌌ãŠããŸãããhttpãœã±ããã®ä»£ããã«ã¯ã©ãŠããredisãã¥ãŒããªãã¹ã³ããç¹ãç°ãªããŸãã
ããŒãããã»ã¹ã®ã¯ã©ã¹ã¿ãªã³ã°ã¯ã次ã®ååã«åŸã£ãŠè¡ãããŸãã
1.åç©çãµãŒããŒã§1ã€ã®ã¹ãŒããŒãã€ã¶ãŒããã»ã¹ïŒ node-cluster ïŒãå®è¡ãããŠããŸã
2.ã¹ãŒããŒãã€ã¶ãŒã®åããã»ã¹ã¯Webãšã¯ã©ãŠãã§ããããã®æ°ã¯åžžã«ãµãŒããŒã³ã¢ã®æ°ã«çãããªããŸãã
3.ã¹ãŒããŒãã€ã¶ã¯ãååããã»ã¹ã®ã¡ã¢ãªæ¶è²»ãç£èŠããæå®ãããåºæºãè¶ ããå ŽåãïŒãã®ããã»ã¹ã®çŸåšã®èŠæ±ã®å®äºãåŸ ã£ãŠïŒåèµ·åããŸãã
ç¹ç¶
ã¢ããªã±ãŒã·ã§ã³ã®é«ã¬ãã«ã¬ã€ã€ãŒå šäœã¯ã ããŒãåæïŒãã¡ã€ããŒïŒã䜿çšããŠèšè¿°ãããŠããŸãã ãããããªããšãäžè¬ã«ãã®éçºã«ã€ããŠã¯ã»ãšãã©ããããŸããã å®éã«ã¯ããå ¬åŒãªãã³ãŒã«ããã¯é§ååã®ãã©ãã€ã ã§åãéçã¢ã»ã³ããªã®ãããªè€éãªãã®ãå®è£ ããããšã¯ãæãã§ã¯ãªããšããŠãéåžžã«å°é£ã§ãã åãnpmã®ã³ãŒãããŸã èŠãŠããªã人ã«ã¯ã ãããèŠãŠ ãããã§äœãèµ·ãã£ãŠããã®ãããããŠæãéèŠãªã®ã¯ãªãããç解ããããšã匷ããå§ãããŸã ã ãããŠãã»ãŒæ¯æ¥éåænodejsãã©ãã€ã ã®åšãã§æé·ããããªããŒãšãããŒãªã³ã°ã¯ãç©ããã«èšãã°ãç§ãå°æãããŸãã
ç§ã®èšäºã§ããŒãåæã®è©³çŽ°ãåŠã¶ããšãã§ããŸãïŒ
node-sync-ãã¡ã€ããŒã䜿çšããnodejsã§ã®æ¬äŒŒåæããã°ã©ãã³ã°
Web
Webã¢ããªã±ãŒã·ã§ã³ã®äžè¬çãªããžãã¯ã¯ãããšã¯ã¹ãã¬ã¹ãã¹ã¿ã€ã«ã§expressjsãã¬ãŒã ã¯ãŒã¯ã«å®è£ ãããŸãã åèŠæ±ãåå¥ã®ãã¡ã€ããŒã§ã©ãããããŠããããšãé€ããå éšã§ã¯ãã¹ãŠã®æäœãåæã¹ã¿ã€ã«ã§å®è¡ãããŸãã
expressjsæ©èœã®äžéšãç¹ã«ã«ãŒãã£ã³ã°ããªãŒããŒã©ã€ãã§ããªããããnpmããåé€ããã¡ã€ã³ãããžã§ã¯ããªããžããªã«å«ããå¿ èŠããããŸããã åãããšãä»ã®å€ãã®ã¢ãžã¥ãŒã«ïŒç¹ã«LearnBoostã«ãã£ãŠéçºãããã¢ãžã¥ãŒã« ïŒã«ãåœãŠã¯ãŸããŸãããªããªãã圌ãã®ãããžã§ã¯ãã«è²¢ç®ããããšã¯éåžžã«é£ãããéåžžã¯åžžã«å¯èœã§ã¯ãªãããã§ãã
CSSã¯ã¹ã¿ã€ã©ã¹ãä»ããŠçæãããŸã ã ãšãŠã䟿å©ã§ãã
ãã³ãã¬ãŒããšã³ãžã³-ejs ïŒãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ïŒã
ãã¡ã€ã«ã®ã¢ããããŒã-connect-form
ãã¹ãŠã®ã¢ãžã¥ãŒã«ãšåæåãèµ·åæã«ããã»ã¹ã¡ã¢ãªã«ããŒãããããããWebã¯éåžžã«é«éã§ãã ä»»æã®ããŒãžã§Webããã»ã¹ã®å¹³åå¿çæéãç¶æããããšããŠããŸã-æ倧300ããªç§ïŒç»åã®ã¢ããããŒããç»é²ãªã©ãé€ãïŒã ãããã¡ã€ãªã³ã°ã®éããã®æéã®70ïŒ ãmongooseïŒnodejsã®mongodb ORMïŒã«äœ¿çšãããŠããããšã«é©ãã-詳现ã¯ä»¥äžãã芧ãã ããã
åœéå
é·ãéãç§ã¯nodejsã§ã®åœéåã«é©ãããœãªã¥ãŒã·ã§ã³ãæ¢ããŠããŸããããç§ã®æ€çŽ¢ã¯å°ãã®ãããªãããŒã§node-gettextã«åæããŸããã ã¯ããã¯ã®ããã«æ©èœãããã±ãŒã«ãã¡ã€ã«ã¯æŽæ°äžã«ãµãŒããŒã®nodejsããã»ã¹ã«ãã£ãŠããªã³ã¶ãã©ã€ãã§ååŸãããŸãã
ãã£ãã·ã¥
ãã¹ãŠã®ããžãã¯ãåãããã£ãã·ã³ã°æ©èœã¯ã2ã€ã®ç»é¢ã®ã³ãŒãã«åãŸããŸãã ãã£ãã·ã¥ããã¯ãšã³ããšããŠãredisã䜿çšãããŸãã
èšæ¶
Webããã»ã¹ã§ã¯ãã¡ã¢ãªã¯å·ã®ããã«æµããŸãããåŸã«ãã³ã°ãŒã¹ãåå ã§å€æããŸããã 1ã€ã®ããã»ã¹ïŒæ¥äžãå¹³åè² è·æïŒã¯ã2æéã§æ倧800MBãæ¶è²»ãããã®åŸã¹ãŒããŒãã€ã¶ãŒã«ãã£ãŠåèµ·åãããŸãã
èå³æ·±ãæ¹æ³ãç¥ã£ãŠããå Žåãnodejsã§ã¡ã¢ãªãªãŒã¯ãæ€çŽ¢ããã®ã¯éåžžã«å°é£ã§ã-ãç¥ãããã ããã
ããŒã¿
å®è·µã«ãããã¹ããŒãã¬ã¹mongodbãã©ãã€ã 㯠Tactoomã¢ãã«ã«çæ³çã§ããããšã瀺ãããŠããŸãã ããŒã¿ããŒã¹èªäœã¯é©åã«åäœãïŒééã¯376MBããã®ãã¡122MBã¯ã€ã³ããã¯ã¹ã§ãïŒãããŒã¿ã¯ã€ã³ããã¯ã¹ã«ãã£ãŠã®ã¿éžæããããããã¯ãšãªã®çµæã¯ãé«è² è·ïŒã»ãšãã©ã®ã¯ãšãªã¯éåžž<1msïŒã§ã30ms以äžã§ãã
èå³æ·±ãå Žåã¯ã第2éšã§ãããã€ãã®éèŠãªã¿ã¹ã¯ã«ã€ããŠmongodbãã飌ããªããããæ¹æ³ïŒããã³å€±æããæ¹æ³ïŒã«ã€ããŠè©³ãã説æããŸãã
mongoosejsïŒnodejsã®mongodb ORMïŒ
圌ã«ã€ããŠã¯å¥ã«èšãããã 20人ã®ãŠãŒã¶ãŒã®ãªã¹ãã®éžæïŒmongoã§ã®ããŒã¿ã®èŠæ±ãšéžæã«ã¯2ããªç§ããããããŒã¿è»¢éã«ã¯10ããªç§ããããŸãããã®åŸãmongooseã¯ä»ã®200ããªç§ïŒæ¢ã«ã¡ã¢ãªã«ã€ããŠã¯æ²é»ããŠããŸãïŒãå®è¡ããçµæãšããŠãªããžã§ã¯ããååŸããŸãã ãããäžäœã¬ãã«ã®node-mongodb-nativeã«æžãæãããšãããã«ã¯ãã¹ãŠ30ããªç§ããããŸãã
åŸã ã«ãã·ã¹ãã å šäœã®é床ã10åã«é«ããªãããmongodb-nativeã®ã»ãŒãã¹ãŠãæžãæããªããã°ãªããŸããã§ããã
éååŠ
ãã¹ãŠã®Tactoomçµ±èšã¯Rackspace Cloud Storageã«ä¿åãããŸãã ãã®éãéçãªcdnãã¡ã€ã³X .infosocial.netã䜿çšããŸãïŒ Xã¯1..nïŒã ãã®ãã¡ã€ã³ã¯DNSãä»ããŠCloud Storageã®ã³ã³ããã®å éšãã¡ã€ã³ã«è»¢éããããã©ãŠã¶ãéçãã¡ã€ã«ã䞊è¡ããŠããŒãã§ããããã«ããŸãã åéçãã¡ã€ã«ã¯2ã€ã®ã³ããŒïŒãã¬ãŒã³ããã³gzipïŒã«æ ŒçŽãããããŒãžã§ã³ãæ¥ç¶ãããäžæã®ååãæã¡ãŸãã ãã¡ã€ã«ã®ããŒãžã§ã³ãæŽæ°ããããšãã¢ãã¬ã¹ãå€æŽããããã©ãŠã¶ãæ°ãããã¡ã€ã«ãããŠã³ããŒãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®çµ±èšã¯ãïŒgit-logãä»ããŠïŒå€æŽããããã¡ã€ã«ãå®çŸ©ããçž®å°ããgzipã³ããŒãäœæããCDNã«ããŒãããèªå·±èšè¿°ã¡ã«ããºã ãéããŠåéãããŸãïŒã¯ã©ã€ã¢ã³ãjsããã³cssãåçïŒã ãã«ãã¹ã¯ãªããã¯ãå€æŽãããã€ã¡ãŒãžãç£èŠãã察å¿ããcssãã¡ã€ã«å ã®ã¢ãã¬ã¹ãæŽæ°ããŸãã
ãã¹ãŠã®ãã¡ã€ã«ã®ã¢ãã¬ã¹çµ±èšã®ãªã¹ãïŒãããã³ã°ïŒãRedisã«ä¿åãããŸãã ãã®ãªã¹ãã¯ãèµ·åæãŸãã¯éçããŒãžã§ã³ã®æŽæ°æã«ãã¹ãŠã®Webããã»ã¹ãã¡ã¢ãªã«ããŒãããŸãã
å®éãéçã«å¯Ÿããå€æŽã®å±é解é€ã¯ããã¹ãŠãåç¬ã§è¡ã1ã€ã®ããŒã ã«ãã£ãŠè¡ãããŸãã ããã«ãnodejsã¢ããªã±ãŒã·ã§ã³ã¯redis pub / subãä»ããŠãã®å Žã§éçãã¡ã€ã«ã®å€æŽãããã¢ãã¬ã¹ãååŸãããããåèµ·åã¯å¿ èŠãããŸããã
ãŠãŒã¶ãŒçµ±èšãRackspaceã«ä¿åãããŸãããã¢ããªã±ãŒã·ã§ã³éçãšã¯ç°ãªããããŒãžã§ã³ã¯ãããŸããããç¹å®ã®æ£èŠåãè¡ãã ãã§ãã€ã¡ãŒãžã®ããã·ã¥ã䜿çšããŠCDNäžã®ãã¹ãŠã®ãµã€ãºã®ã¢ãã¬ã¹ãåä¿¡ã§ããŸãã
ç¹å®ã®éçãã¡ã€ã«ãæ ŒçŽããããã¹ãå®çŸ©ïŒcdn X ïŒã®å Žåãäžè²«ããããã·ã¥ã䜿çšãããŸãã
ãµãŒããŒã¢ãŒããã¯ãã£
å®éãTactoomã¯3ã€ã®ããŒã¡ããã¯ãŸãŒã³ã«åæ£ããŠããŸãã
1. Rackspace-éçããŒã¿ã®é«éã¹ã±ãŒãªã³ã°ãšã¹ãã¬ãŒãžã®ããã®ãã©ãããã©ãŒã
2.ãšãŒãããã®ãµã€ã -ããã«ç©çãµãŒããŒ
3.ã·ãŒã¯ã¬ãã ïŒãã°ã¯ããã§ããŒããŒã·ã§ã³ãããããã¯ã°ã©ãŠã³ãèšç®ãè¡ãããçµ±èšãåéãããŸãïŒ
1ã€ã®ãµãŒããŒã ããäžçãæ¢ããŠããŸã-nginxãããŒã80ããã³4000ãéããŠããŸããåŸè ã¯COMETæ¥ç¶ã«äœ¿çšãããŸãã
æ®ãã®ãµãŒããŒã¯ããã€ã¬ã¯ãIPãä»ããŠçžäºã«éä¿¡ããiptablesãä»ããŠäžçäžããéããããŸãã
ïŒ80
nginxã¯ãèŠæ±ãã¢ããã¹ããªãŒã æ§æãä»ããŠWebãµãŒããŒã«ãããã·ããŸãã çŸæç¹ã§ã¯ã2ã€ã®ã¢ããã¹ããªãŒã ïŒ tac_mainãštac_mediaããããŸãã ããããã«ã¯ã3000ããŒãã§ããŒãã¯ã©ã¹ã¿ãŒãå®è¡ããŠããWebãµãŒããŒã®ãªã¹ããå«ãŸããŠããŸããåWebãµãŒããŒã«ã¯ããªã¯ãšã¹ãã®é ä¿¡ã«ãããŠç¬èªã®åªå é äœããããŸãã
tac_mainã¯ãããŒã¿ããŒã¹ã«è¿ãWebãµãŒããŒã®ã¯ã©ã¹ã¿ãŒã§ãããã»ãšãã©ã®WebããŒãžãç»é²æžã¿ã®TactoomãŠãŒã¶ãŒã«é ä¿¡ããŸãã
tac_media -CDNã®è¿ãã«ããWebãµãŒããŒã®ã¯ã©ã¹ã¿ãŒã ããããä»ããŠãç»åã®ããŠã³ããŒããšãµã€ãºå€æŽã®ãã¹ãŠã®æäœãè¡ãããŸãã
webNããã³cloudNãµãŒããŒã¯ ãHabraãšãã§ã¯ãããã³ãã®ä»ã®æ¥œããã€ãã³ãã§ãµãŒããŒãè¿œå ããå Žæã瀺ããŠããŸãã
æ°ãããµãŒããŒã¯ãCDNã«ä¿åãããŠããã€ã¡ãŒãžã§10å以å ã«ç«ã¡äžãããŸãã
ïŒ4000
ããã¯ãnodejs COMET Besedaã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããŠããåœæãµãŒããŒãžã®éåžžã®ãããã·ãã¹ã§ããããã«ã€ããŠã¯ã第2éšã§èª¬æããŸãã
tac1ãtac2ãdata1
äž»ãªTactoomãµãŒããŒã¯æ¬¡ã®ãšããã§ããXEONX3440 4x2.53 GHz 16 GB 2x1500 GB Raid1ã
ãããããMongodããã»ã¹ãå®è¡ãããããã®ãã¹ãŠãReplicaSetã§çµåãããèªåãã§ã€ã«ãªãŒããŒãšã¹ã¬ãŒããžã®èªã¿åãæäœã®åæ£ãè¡ãããŸãã
ã¡ã€ã³Webã¯ã©ã¹ã¿ãŒã§ããtac1ã§ãã¯ã©ãŠãã¯ã©ã¹ã¿ãŒã§ããtac2ã§ã åã¯ã©ã¹ã¿ãŒã«ã¯8ã€ã®nodejsããã»ã¹ããããŸãã
è¿ãå°æ¥ãæ€çŽ¢ã¯ãšãªã®ã¿ãã«ãŒãã£ã³ã°ãããå¥ã®ã¢ããã¹ããªãŒã tac_searchãäœæããŸãã ããã«ã¯Webã¯ã©ã¹ã¿ãŒãããããããelasticsearch ïŒç¬¬2éšã§èª¬æïŒãµãŒããŒã®é£ã«é 眮ããŸãã
çµè«
NodeJSã®äœæè ã®ã¹ããŒã¬ã³ãåŒçšïŒ
ããããã¯ãããã®ããªããããçç·ŽããŠããªãããã°ã©ãã§ãé«éã·ã¹ãã ãéçºã§ããŸããã
ãäœããããã¯ãããŠããªããããå°é家以äžã®äººã§ãé«éã·ã¹ãã ãéçºã§ããŸããã
- ããã¯ããã§ãã ç§ã¯ãã2幎è¿ãnodejsã䜿çšããŠããŸãããç§èªèº«ã®çµéšããããé«éã·ã¹ãã ããéçºããã«ã¯ãä»ã®ã©ã®ãã¯ãããžãŒãããå°ãªãïŒãŸãã¯ãã以äžã®ïŒçµéšãå¿ èŠã§ãã å®éã«ã¯ãnodejsã®ã³ãŒã«ããã¯é§ååã®ãã©ãã€ã ãšjavascriptã®äžè¬çãªæ©èœã䜿çšãããšãããã©ãŒãã³ã¹ãåäžããããããããã¹ãç¯ãå¯èœæ§ãé«ããªããŸãïŒãããŠãéåžžã«é·ãéæ¢ããŸãïŒã
- äžæ¹ãããã£ããããæ°ãã®äŸã¯æããåžãåºãããããããããã»ãžãŠãæ°ã®ãããŒãªã³ã°ããŸã£ãããã³ã»ã³ã¹ã§ãã Eventloopãã©ã®ããã«æ©èœãããªããããå¿ èŠãªã®ããç解ããŠããªã人ã ãããããè¡ããŸãïŒããã¯ããã€ã³ã1ã«ãã£ãŠèšŒæãããŸãïŒã
ä»æ¥ã DevConfã§è¬çŸ©ããåŸã NodeJSã§æ°ãããããžã§ã¯ããäœæãããã©ããã«ã€ããŠãã質åãããŸãã ã¿ããªãžã®ç§ã®çãïŒ
å€ãã®æéããããæ°ãããçã®ãç©è°ãéžãæè¡ã®éçºã«æè³ããæºåãã§ããŠãããªããå ã«é²ãã§ãã ããã ããããã¿ã€ã ã©ã€ã³/顧客/æè³å®¶ãããŠãèåŸã®ãµãŒããŒãµã€ãJSã®çµéšãããŸããªãå Žåã¯ã 䟡å€ããããŸãã ã
å®è·µã瀺ããŠããããã«ãNodeJSã§ãããžã§ã¯ããäœæããã®ã¯çŸå®çã§ãã åäœããŸãã ããããããã¯ããªãã®è²»çšãããããŸããã ããŒãã®ãªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã®äŸ¡å€ã¯äœã§ããïŒ
ããŒã2
èšäºã®2çªç®ã®éšåã¯å æ¥ã§ãã 以äžã¯ãç§ãããã«ã€ããŠæžãããšã®çããªã¹ãã§ãã
1.æ€çŽ¢ïŒelasticsearchïŒ
2.ã¡ãŒã«ïŒGoogle App EngineïŒ
3.å±éïŒcapistranoãnpmïŒ
4.ãã¥ãŒïŒredisãkueïŒ
5. COMETãµãŒããŒïŒbesedaïŒ
1ã€ã®èšäºã®æ å ±ãå€ãããŸãã
ã³ã¡ã³ãã«èå³æ·±ã質åãããå Žåã¯ã第2éšã§åçããŸãã
PS
- é£ã¹ç©ã¯ãããŸããã ç§ã¯èªåã®æ¥çžŸã«èšåããã«æ¹å€ãå«ãã³ã¡ã³ããç¡èŠããŸãã
- ããã³ããšã³ãã®å¿è ãæ¢ããŠããŸã ã詳现ã¯ãã¡ã
- Tactoomã¯ããŒã¿ãã¹ãäžã§ãã ç»é²ã¯å¶éãããŠããŸãã ã¡ãŒã«ãæ®ããšãããã«æåŸ ç¶ãå±ãå ŽåããããŸãã
UPD 19.10ïŒ
2çªç®ã®éšåã¯ãå€ãã®äœæ¥ã®ããã«é ããŠããŸãã