
ãããã©ã®ããã«æ©èœããããç解ããããã«ãã¹ã¿ãã¯ãªãŒããŒãããŒã¡ããªãã¯ããå§ããŸãããã ãããã£ãŠã以äžã¯
2013幎11æ12æ¥ãš2016幎2æ9
æ¥ã®çµ±èš
ã§ã ã
çµ±èš- ããŒããã©ã³ãµãŒãžã®209,420,973ïŒ+61,336,090ïŒHTTPèŠæ±ã
- 66,294,789ïŒ+30,199,477ïŒããŒãžãããŒããããŸããã
- éä¿¡ãããHTTPãã©ãã£ãã¯ã®1,240,266,346,053ïŒ+406,273,363,426ïŒãããïŒ1.24 TBïŒã
- åèš569,449,470,023ïŒ+282,874,825,991ïŒãããïŒ569 GBïŒåä¿¡;
- 3,084,303,599,266ïŒ+1,958,311,041,954ïŒãããïŒ3.08 TBïŒã®åèšéä¿¡ã
- 504,816,843ïŒ+170,244,740ïŒSQLã¯ãšãªïŒHTTPã¯ãšãªããã®ã¿ïŒ;
- 5,831,683,114ïŒ+5,418,818,063ïŒRedisãžã®åŒã³åºãã
- Elasticã§ã®17,158,874ïŒ2013幎ã«ã¯è¿œè·¡ãããŠããŸããïŒæ€çŽ¢ã
- 3,661,134ïŒ+57,716ïŒã¿ã°ãšã³ãžã³ãªã¯ãšã¹ãã
- 607,073,066ïŒ+48,848,481ïŒmsïŒ168æéïŒã®SQLã¯ãšãªã®å®è¡ã
- Redisãžã®é£çµ¡ã«è²»ããã10,396,073ïŒ-88,950,843ïŒmsïŒ2.8æéïŒã
- 147.018.571ïŒ+14.634.512ïŒmsïŒ40.8æéïŒã¯ã¿ã°ãšã³ãžã³ãžã®ãªã¯ãšã¹ãã«è²»ãããŸããã
- 1,609,944,301ïŒ-1,118,232,744ïŒmsïŒ447æéïŒãASP.Netã§ã®åŠçã«è²»ããããŸããã
- 49,180,275ã®åèŠæ±ããŒãžã®åœ¢æã§å¹³å22.71ïŒ-5.29ïŒããªç§ïŒASP.Netã§ã¯19.12ããªç§ïŒã
- 6,370,076ã®åããŒã ããŒãžã®åœ¢æã§å¹³å11.80ïŒ-53.2ïŒããªç§ïŒASP.Netã§ã¯8.81ããªç§ïŒã
1æ¥ããã6,100äžä»¶ã®ãªã¯ãšã¹ããè¿œå ãããã«ãããããããASP.Netã§ã®åŠçæéã2013幎ïŒ757æéïŒã«æ¯ã¹ãŠå€§å¹
ã«ççž®ãããçç±ãå°ããããšãã§ããŸãã ããã¯ã2015幎åé ã®æ©åšã®è¿ä»£åãšãã¢ããªã±ãŒã·ã§ã³èªäœã®ãã©ã¡ãŒã¿ãŒã®äžéšã®å€æŽã®äž¡æ¹ãåå ã§çºçããŸããã ããã©ãŒãã³ã¹ãç§ãã¡ã®ç¹åŸŽã§ããããšãå¿ããªãã§ãã ããã æ©åšã®ç¹æ§ã«ã€ããŠè©³ãã話ããŠã»ãããªããåé¡ãããŸããã 次ã®æçš¿ã§ã¯ããµã€ããæäŸãããã¹ãŠã®ãµãŒããŒã®éã®è©³çŽ°ãªä»æ§ããããŸãã
ã§ã¯ãéå»2幎éã§äœãå€ãã£ãã®ã§ããããïŒ äžéšã®ãµãŒããŒãšãããã¯ãŒã¯æ©åšã®äº€æã«å ããŠãããã»ã©å€ãã¯ãããŸããã 以äžã¯ããªãœãŒã¹ãæäŸããããŒããŠã§ã¢éšåã®æ¡å€§ãªã¹ãã§ãïŒ2013幎ãšæ¯èŒããŠéãã匷調ãããŠããŸãïŒã
- 4ã€ã®Microsoft SQL ServerïŒ2ã€ã®æ°ããããŒããŠã§ã¢ïŒ;
- 11 IIS WebãµãŒããŒïŒæ°ããæ©åšïŒ;
- 2å°ã®RedisãµãŒããŒïŒæ°ããæ©åšïŒ;
- 3å°ã®Tag EngineãµãŒããŒïŒ3å°äž2å°ã®æ°ããæ©åšïŒ;
- 3ã€ã®ElasticsearchãµãŒããŒïŒå€ããã®ïŒã
- 4 HAProxyããŒããã©ã³ãµãŒïŒCloudFlareããµããŒãããããã«2ã€è¿œå ïŒ;
- 2ã€ã®Fortinet 800Cãã¡ã€ã¢ãŠã©ãŒã«ïŒCisco 5525-X ASAã®ä»£ããïŒã
- 2å°ã®Cisco ASR-1001ã«ãŒã¿ïŒCisco 3945ã«ãŒã¿ã®ä»£ããïŒã
- 2å°ã®Cisco ASR-1001-xã«ãŒã¿ãŒïŒæ°èŠïŒïŒã
Stack Overflowãå®è¡ããã«ã¯äœãå¿
èŠã§ããïŒ ãã®ããã»ã¹ã¯2013幎以éããŸãå€æŽãããŠããŸããããæé©åãšæ°ããããŒããŠã§ã¢ã«ãããå¿
èŠãªWebãµãŒããŒã¯1ã€ã ãã§ãã ããã¯æãŸãããããŸããã§ããããäœåºŠãæ£åžžã«ãã§ãã¯ãããŸããã ç§ã¯ãããæ確ã«ããŸãïŒç§ã¯ãããæ©èœãããšå®£èšããŸãã æ¯åããªãããããããã«èŠããŸãããããïŒåäžã®WebãµãŒããŒã§SOãå®è¡ããïŒãè¯ãã¢ã€ãã¢ã ãšèšã£ãŠããã®ã§ã¯ãããŸããã
ã¹ã±ãŒã«ã®æŠå¿µã«é¢ããããã€ãã®æ°åãåŸãããã®ã§ããããã©ã®ããã«è¡ããèŠãŠã¿ãŸãããã å®å
šã«åé¢ããŠåäœããã·ã¹ãã ã¯ã»ãšãã©ãªãããïŒãŸããç§ãã¡ã®ã·ã¹ãã ãäŸå€ã§ã¯ãªãããïŒãç¹å®ã®ã¢ãŒããã¯ãã£ãœãªã¥ãŒã·ã§ã³ã¯ããããã®ããŒããçžäºã«ã©ã®ããã«çžäºäœçšãããã®äžè¬çãªã€ã¡ãŒãžããªããã°ã»ãšãã©æå³ããªãããšããããããŸãã ãã®èšäºã®ç®çã¯ããã®å
šäœåãã«ããŒããããšã§ãã ãã®åŸã®å€æ°ã®æçš¿ã§ãåã
ã®é åã®è©³çŽ°ã瀺ãããŸãã ããã¯ãåœç€Ÿã®ãããŒããŠã§ã¢ãã®äž»èŠãªæ©èœã®ã¿ã®ããžã¹ãã£ãã¯ã¬ãã¥ãŒã§ããããã®å Žåã«ã®ã¿ã次ã®æçš¿ã§è©³çŽ°ã«æ€èšãããŸãã
ä»æ¥ã®æ©åšã®å€èŠ³ãç解ããŠããã ãããã«ã2015幎2æã®å€æäžã«æ®åœ±ãããã©ãã¯Aã®åçïŒåœŒå¥³ã®ãå§åŠ¹ãã©ãã¯Bãšæ¯èŒããŠïŒã®äžéšããæã¡ããŸãã

ãããŠãé説çã«ããã®é±ä»¥æ¥ãç§ã®ã¢ã«ãã ã«ã¯ããã«255æã®åçããããŸãïŒåèš256æãã¯ã-ããã¯ä¹±æ°ã§ã¯ãããŸããïŒã ããã§ã¯ãæ©åšãèŠãŠã¿ãŸãããã ã¡ã€ã³ã·ã¹ãã ã®çžäºäœçšã®è«çå³ã次ã«ç€ºããŸãã

åºæ¬çãªã«ãŒã«
æ®éçã«é©çšå¯èœãªããã€ãã®ã«ãŒã«ãããã®ã§ãã·ã¹ãã ããšã«ç¹°ãè¿ãã¯ããŸããã
- ãã¹ãŠãäºçŽãããŠããŸãã
- ãã¹ãŠã®ãµãŒããŒãšãããã¯ãŒã¯ããã€ã¹ã¯ãå°ãªããšã2 x 10 GB /ç§ã®ãã£ãã«ã§çžäºæ¥ç¶ãããŠããŸãã
- ãã¹ãŠã®ãµãŒããŒã«ã¯ã2ã€ã®çºé»æ©ãš2ã€ã®ãããã¯ãŒã¯åç·ã«æ¥ç¶ããã2ã€ã®UPSããã®2ã€ã®é»æºå
¥åãš2ã€ã®é»æºããããŸãã
- ã©ãã¯Aãšã©ãã¯Bã®éã®ãã¹ãŠã®ãµãŒããŒã«ã¯ãåé·ããŒãããŒããããŸãã
- ãã¹ãŠã®ãµãŒããŒãšãµãŒãã¹ã¯ãå¥ã®ããŒã¿ã»ã³ã¿ãŒïŒã³ãã©ãå·ïŒãéããŠ2åããã¯ã¢ãããããŸãããããã§ã¯ãã¥ãŒãšãŒã¯ã«ã€ããŠè©³ãã説æããŸãã
- ãã¹ãŠãäºçŽãããŠããŸãã
ã€ã³ã¿ãŒãããã§
æåã«ç§ãã¡ãèŠã€ããå¿
èŠããããŸã-ããã¯DNSã§ãã DNSãµãŒããŒã¯äžçäžã®ã»ãŒãã¹ãŠã®DNSã«è¿ããããç§ãã¡ãèŠã€ããããã»ã¹ã¯è¿
éã§ãªããã°ãªããŸããããã®ããã
CloudFlareã«ãããä»»ããŠããŸãïŒçŸåšïŒã APIãä»ããŠDNSã¬ã³ãŒããæŽæ°ããDNSã®ãã¹ãã£ã³ã°ãè¡ããŸãã ããããç§ãã¡ã¯ïŒä»è
ã«å¯ŸããïŒæ ¹æ·±ãä¿¡é Œã®åé¡ãæ±ããããã¬ãŒããã§ãããããç¬èªã®DNSãµãŒããŒãæã£ãŠããŸãã é»ç€ºé²ãçºçããå ŽåïŒããããGPLã
PunyonããŸãã¯ãã£ãã·ã¥ãåå ïŒã人ã
ã¯ãããèããªãããã«ããã°ã©ã ãããå Žåã¯ããããã«åãæ¿ããŸãã
ãç§å¯ã®é ã家ããèŠã€ãããšãHTTPãã©ãã£ãã¯ã¯4ã€ã®ã€ã³ã¿ãŒããããããã€ããŒïŒãã¥ãŒãšãŒã¯ã®ã¬ãã«3ãZayoãCogentãLightowerïŒã®1ã€ãããã³4ã€ã®ããŒã«ã«ã«ãŒã¿ãŒã®1ã€ãééããŸãã æ倧ã®å¹çãéæããããã«ããããã€ããŒãšäžç·ã«ãBGPïŒããªãæšæºïŒã䜿çšããŠãã©ãã£ãã¯ã管çãããã®äŒéã®ããã€ãã®æ¹æ³ãæäŸããŸãã ASR-1001ããã³ASR-1001-Xã«ãŒã¿ãŒã¯2ãã¢ã§çµåããããããããã¢ã¯ãã£ã/ã¢ã¯ãã£ãã¢ãŒãã§2ã€ã®ãããã€ããŒã«ãµãŒãã¹ãæäŸããŸãã ãããã£ãŠãåé·æ§ãæäŸããŸãã ãããã¯ãã¹ãŠåã10 Gbpsã®ç©çãããã¯ãŒã¯ã«æ¥ç¶ãããŠããŸãããå€éšãã©ãã£ãã¯ã¯ãããŒããã©ã³ãµãŒã«ãæ¥ç¶ãããŠããç¬ç«ããå€éšVLANãçµç±ããŸãã ã«ãŒã¿ãŒãééããåŸããã©ãã£ãã¯ã¯ããŒããã©ã³ãµãŒã«ã«ãŒãã£ã³ã°ãããŸãã
2ã€ã®ããŒã¿ã»ã³ã¿ãŒéã§ã¯10 Gb / s
MPLSåç·ã䜿çšããŸãããããã¯ãµã€ãã®ã¡ã³ããã³ã¹ãšã¯çŽæ¥é¢ä¿ãããŸããã ãããéä¿¡ãå¿
èŠãªå Žåã«ãããŒã¿ãè€è£œããŠè¿
éã«åŸ©å
ããã®ã«åœ¹ç«ã¡ãŸãã ãããããããã¯ãããã¯äºçŽã§ã¯ãããŸããïŒãã¯ããæè¡çã«ã¯ããªãã¯æ£ããïŒçµ¶å¯Ÿã«æ£ããïŒïŒããã¯ç§ãã¡ã®è©å€ã®å¯äžã®ãã¹ããããã§ãã ããããã¡ãã£ãšåŸ
ã£ãŠãã ããïŒ ãããã€ããŒãéããŠãããã«2ã€ã®ãã©ãŒã«ããã¬ã©ã³ãOSPFã©ã€ã³ããããŸãïŒMPLSã®ã³ã¹ãã§-1çªããããã¯2ãš3ã§ãïŒã äžèšã®åããã€ã¹ã¯ãã³ãã©ãå·ã®å¯Ÿå¿ããããã€ã¹ã«ããéãæ¥ç¶ãããé害ãçºçããå Žåããã©ã³ã¹ã®åãããã©ãã£ãã¯ãããã€ã¹éã§åæ£ããŸãã 4ã€ã®æ¹æ³ã§äž¡æ¹ã®ããã€ã¹ãäž¡æ¹ã®ããã€ã¹ã«æ¥ç¶ããããšãã§ããŸãããããããã¯ãã¹ãŠåçã«åªããŠããŸãã
ã©ãã
ããŒããã©ã³ãµãŒïŒ HAProxy ïŒ
ããŒããã©ã³ãµãŒã¯ãLinuxã®æšå¥šããŒãžã§ã³ã§ãã
CentOS 7ã® HAProxy 1.5.15ã§åäœããŸãã HAProxyã¯ãTLSïŒSSLïŒãã©ãã£ãã¯ãå¶éããŸãã
HTTP / 2ããµããŒãããããã«
ããŸããªãHAProxy 1.7ã®æ³šææ·±ãåŠç¿ãéå§ããŸãã
10 Gbps LACPãä»ãããã¥ã¢ã«ãããã¯ãŒã¯æ¥ç¶ãåããä»ã®ãã¹ãŠã®ãµãŒããŒãšã¯ç°ãªããåããŒããã©ã³ãµãŒã«ã¯å€éšãããã¯ãŒã¯çšãšDMZçšã®2çµã®10 Gbpsãã£ãã«ããããŸãã ããå¹ççãªãããŒãžãSSLããŽã·ãšãŒã·ã§ã³ã®ããã«ããããã®ããã¯ã¹ã«ã¯64 GB以äžã®ã¡ã¢ãªããããŸãã ããå€ãã®TLSã»ãã·ã§ã³ãã¡ã¢ãªã«ãã£ãã·ã¥ããŠåå©çšã§ããå Žåãåãã¯ã©ã€ã¢ã³ããšã®æ°ããæ¥ç¶ã®äœæã«è²»ããããæéãççž®ãããŸãã ããã¯ãã»ãã·ã§ã³ãããéããããäœãã³ã¹ãã§åéã§ããããšãæå³ããŸãã RAMãããã«ãžã®å€æã¯ããªãå®ãã®ã§ãããã¯ç°¡åãªéžæã§ãã
ããŒããã©ã³ãµãŒèªäœã¯éåžžã«ã·ã³ãã«ãªããã€ã¹ã§ãã ããŸããŸãªãµã€ããããŸããŸãªIPã«ã座ã£ãŠãïŒäž»ã«èªèšŒãšDNS管çã«é¢ããŠïŒå¹»æ³ãäœæããäž»ã«ãã¹ãããããŒã«åºã¥ããŠããŸããŸãªåºåãããã¡ãŒã«ã«ãŒãã£ã³ã°ããŸãã ç§ãã¡ãè¡ãå¯äžã®ãæåãªãããšã¯ãé床å¶éãš
HAProxy syslogã¡ãã»ãŒãžãžã®ããããŒã®ãã£ããã£ïŒWebãµã€ãã¬ãã«ããéä¿¡ïŒã§ãã ãããã£ãŠãåãªã¯ãšã¹ãã®ããã©ãŒãã³ã¹ã¡ããªãã¯ãèšé²ã§ããŸãã ããã«ã€ããŠã¯åŸã§èª¬æããŸãã
Webãµã€ãã¬ãã«ïŒIIS 8.5ãASP.Net MVC 5.2.3ãããã³.Net 4.6.1ïŒ
ããŒããã©ã³ãµãŒã¯ãããã©ã€ããªãïŒ01ã09ïŒãšåŒã°ãã9å°ã®ãµãŒããŒãšããDev / metaãïŒ2ã11åã®ãµã€ãã®ç°å¢ïŒãšåŒã°ãã2å°ã®WebãµãŒããŒã®ãã©ãã£ãã¯ã調æŽããŸãã ãã©ã€ããªãµãŒããŒã¯ãStack OverflowãCareersãæåŸã®2å°ã®ãµãŒããŒã§ãã¹ããããŠããmeta.stackoverflow.comãšmeta.stackexchange.comãé€ããã¹ãŠã®Stack Exchangeãµã€ããªã©ã管çããŸãã ã¡ã€ã³ã®QïŒAã¢ããªã±ãŒã·ã§ã³ã¯ãããèªäœããã«ããŠãŒã¶ãŒã§ãã ããã¯ã1ã€ã®ã¢ããªã±ãŒã·ã§ã³ããã¹ãŠã®QïŒAãµã€ãã®ãªã¯ãšã¹ããåŠçããããšãæå³ããŸãã å¥ã®èšãæ¹ãããã°ã1ã€ã®ãµãŒããŒäžã®1ã€ã®ã¢ããªã±ãŒã·ã§ã³ããŒã«ã§QïŒAãããã¯ãŒã¯å
šäœã管çã§ããŸãã ãã£ãªã¢ãAPI v2ãã¢ãã€ã«APIãªã©ã®ãã®ä»ã®ã¢ã㪠å¥ã
ã«æçš¿ã ããã¯ãIISã®ã¡ã€ã³ããã³éçºã¬ãã«ã®å€èŠ³ã§ãã

ããã¯ãWebãµã€ãã¬ãã«ã§ã®ã¹ã¿ãã¯ãªãŒããŒãããŒã®ååžã
Opserver ïŒå
éšããã·ã¥ããŒãïŒã®ããã«èŠããæ¹æ³ã§ãã

...ãããŠãããã¯è² è·ã«é¢ããŠWebãµãŒããŒãã©ã®ããã«èŠãããã§ãïŒ

次ã®æçš¿ã§ã¯ããªããéå°è£
åããªã®ãã«ã€ããŠè§ŠããŸãããæãéèŠãªãã€ã³ãã¯ããªã³ã°ãã«ãïŒããŒãªã³ã°ãã«ãïŒãéçšãªã¶ãŒããåé·æ§ã§ãã
ãµãŒãã¹ãªã³ã¯ïŒIISãASP.Net MVC 5.2.3ã.Net 4.6.1ããã³HTTP.SYSïŒ
ãããã®WebãµãŒããŒã¯ãéåžžã«ãã䌌ãããµãŒãã¹ãªã³ã¯ãã«åºã¥ããŠããŸãã ãŸããWindows 2012R2ã®äžã®IIS 8.5ã§å®è¡ãããå
éšãµãŒãã¹ãæ
åœããWebãµã€ãããã³ãã®ä»ã®å
éšã·ã¹ãã ã®èšç®ã¬ãã«ããµããŒãããŸãã 2ã€ã®äž»èŠãªããã¬ãŒã€ãŒãããããŸããã¿ã°ãšã³ãžã³ãå®è¡ããhttp.sysïŒIISã®äžã§ã¯ãªãïŒã«åºã¥ããã¹ã¿ãã¯ãµãŒããŒããšãããããã³ã¹APIïŒIISäžã§å®è¡ïŒã§ãã 楜ããäºå®ïŒStack Serverã¯2åããšã«è³ªåã®ãªã¹ããæŽæ°ãããšãã«L2ããã³L3ãã£ãã·ã¥ããè©°ãŸãããããããããã2ã€ã®ããã»ã¹ã®ããããã«äžèŽãããã¹ã¯ãèšå®ããŠãç°ãªãããã»ããµãŒã«ç»é²ããå¿
èŠããããŸãã
ãããã®ãµãŒãã¹ãããã¯ã¹ãã¯ã9åã§ã¯ãªãåé·æ§ãå¿
èŠãªå Žåã«ãã¿ã°ãšã³ãžã³ãšå
éšAPIãäžãã責任ã®ããäœæ¥ãå®è¡ããŸãã ããšãã°ãããŒã¿ããŒã¹ïŒçŸåšã¯2ïŒãããã¹ãŠã®æçš¿ãšãã®ã¿ã°ãããŠã³ããŒãããŸãããããã¯nåããšã«å€æŽãããŸãããããã»ã©ãå®ããã¯ãããŸããã ãã®9åãã¹ãŠãWebãµã€ãã¬ãã«ã«ããŠã³ããŒãããããããŸããã 3åã§ååã§ãããããã«ããååãªãã»ãã¥ãªãã£ããæäŸãããŸãã ããã«ãããŒããŠã§ã¢ã¬ãã«ã§ã¯ããããã®ãããã¯ã¹ããããŸããŸãªæ¹æ³ã§æ§æããã¿ã°ãšã³ãžã³ã®èšç®è² è·ãšæè»ãªã€ã³ããã¯ã¹äœæã®ããŸããŸãªç¹æ§ïŒããã§ãæ©èœããŸãïŒã«ããæé©åãããããã«ããŸãã ã¿ã°ãšã³ãžã³èªäœã¯æ¯èŒçè€éãªãããã¯ã§ãããå¥ã®æçš¿ãå°çšã«ãªããŸãã ãã€ã©ã€ãïŒ/質å/ã¿ã°ä»ã/ javaã«ç§»åãããšãã¿ã°ãšã³ãžã³ãããŒãããŠé¢é£ã¯ãšãªã決å®ããŸãã æ€çŽ¢ããã»ã¹ã®å€éšã§ãã¹ãŠã®ã¿ã°ãããã³ã°ãè¡ããããæ°ããããã²ãŒã·ã§ã³ããã®ä»ãã¹ãŠã§ãããã®ãµãŒãã¹ã䜿çšããŠããŒã¿ãåŠçããŸãã
ãã£ãã·ã¥ãšãã/ãµãïŒ Redis ïŒ
ããã§ã¯ãRedisãããã€ãã®çšéã«äœ¿çšããŠããŸãããRedisã倧ããå€ããããšã¯ã»ãšãã©ãããŸããã 1ãæãããçŽ1,600ååã®æäœã«ãããããããCPUè² è·ã¯åžžã«2ïŒ
æªæºã§ãã éåžžãã£ãšäœãïŒ

Redisã«ã¯ãL1 / L2ãã£ãã·ã¥ã·ã¹ãã ããããŸãã ãL1ãã¯ãWebãµãŒããŒãŸãã¯å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ã®HTTPãã£ãã·ã¥ã§ãã ãL2ãã¯ãå€ã®éžæã®ããã®RedisãæããŸãã å€ã¯ãMarc Gravellã®protobuf-dot-netãä»ããŠProtobuf圢åŒã§ä¿åãããŸãã ã¯ã©ã€ã¢ã³ãã«ã¯ããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã
StackExchange.Redisã䜿çšããŸãã 1ã€ã®WebãµãŒããŒãL1ãŸãã¯L2ã®ãã£ãã·ã¥ãã¹ãåä¿¡ãããšããœãŒã¹ïŒããŒã¿ããŒã¹ã¯ãšãªãAPIã³ãŒã«ãªã©ïŒãããµã³ãã«ãååŸããããŒã«ã«ãã£ãã·ã¥ãšRedisã®äž¡æ¹ã«çµæãé
眮ããŸãã ãµã³ããªã³ã°ãå¿
èŠãªæ¬¡ã®ãµãŒããŒã¯ãL1ã®ããã£ãã·ã¥ãã¹ããåä¿¡ããå¯èœæ§ããããŸãããL2 / Redisã§æ€åºãããããŒã¿ããŒã¹ã¯ãšãªãŸãã¯APIåŒã³åºããä¿åããŸãã
ãŸããå€ãã®QïŒAãµã€ãããããããåãµã€ãã«ã¯ç¬èªã®L1 / L2ãã£ãã·ã³ã°ããããŸããL1ã®ããŒãã¬ãã£ãã¯ã¹ãšL2 / Redisã®ããŒã¿ããŒã¹IDã§ãã ãã®åé¡ã«ã€ããŠã¯ã次ã®æçš¿ã§è©³ããæ€èšããŸãã
ãµã€ããžã®ãã¹ãŠã®ãªã¯ãšã¹ãã管çãã2ã€ã®ã¡ã€ã³RedisãµãŒããŒïŒãã¹ã¿ãŒ/ã¹ã¬ãŒãïŒãšãšãã«ã2ã€ã®ããç¹æ®ãªãµãŒããŒïŒã¡ã¢ãªã«ããïŒã§å®è¡ãããæ©æ¢°åŠç¿ã·ã¹ãã ããããŸãã æšå¥šã¯ãšãªãããŒã ããŒãžã«è¡šç€ºããããæ€çŽ¢çµæãæ¹åãããããããã«äœ¿çšãããŸãã ããããã³ã¹ãšåŒã°ãããã®ãã©ãããã©ãŒã ã¯ãã±ãã³ã¢ã³ãããŒãºã«ãã£ãŠç®¡çãããŠããŸãã
ã¡ã€ã³ã®RedisãµãŒããŒã«ã¯ãããã256 GBã®RAMãããïŒçŽ90 GBã䜿çšãããŸãïŒãProvidenceãµãŒããŒã«ã¯384 GBã®RAMãã€ã³ã¹ããŒã«ãããŠããŸãïŒçŽ125 GBã䜿çšãããŸãïŒã
Redisã¯ãã£ãã·ã¥ã®æäœã«äœ¿çšãããã ãã§ãªããããããªãã·ã¥ïŒãµãã¹ã¯ã©ã€ããŒãã¢ã«ãŽãªãºã ïŒãããªãã·ã¥ããã³ãµãã¹ã¯ã©ã€ãïŒãåããŠããã1ã€ã®ãµãŒããŒãã¡ãã»ãŒãžãéä¿¡ããä»ã®ãã¹ãŠã®ããµãã¹ã¯ã©ã€ããŒããã¡ãã»ãŒãžãåä¿¡ããŸãïŒRedisã¹ã¬ãŒããµãŒããŒã®ããŠã³ã¹ããªãŒã ã¯ã©ã€ã¢ã³ããå«ãïŒ ã 1ã€ã®WebãµãŒããŒãäžè²«æ§ãç¶æããããã«åé€ãè¡ãå Žåããã®ã¢ã«ãŽãªãºã ã䜿çšããŠä»ã®ãµãŒããŒã®L1ãã£ãã·ã¥ãã¯ãªã¢ããŸãã ããããå¥ã®éèŠãªçšéããããŸãïŒwebsocketsã
WebsocketïŒ NetGain ïŒ
Websocketã䜿çšããŠãéç¥ãæ祚æ°ãæ°ããããã²ãŒã·ã§ã³èšç®ãæ°ããåçãã³ã¡ã³ããªã©ããªã¢ã«ã¿ã€ã ã®æŽæ°ããŠãŒã¶ãŒã«éä¿¡ããŸãã
ãœã±ãããµãŒããŒèªäœã¯ããµã€ãã¬ãã«ã§å®è¡ãããçã®ãœã±ããã䜿çšããŸãã ããã¯ããªãŒãã³ã©ã€ãã©ãª
StackExchange.NetGainã®äžã«ããéåžžã«å°ããªã¢ããªã±ãŒã·ã§ã³ã§ãã ããŒã¯è² è·æã«ã¯ãåæã«çŽ500,000ã®äžŠåWebãœã±ãããã£ãã«ãéããŠããŸãã ããã¯å€æ°ã®ãã©ãŠã¶ãŒã§ãã é¢çœãäºå®ïŒãããã®ããŒãžã®äžéšã¯18ãæ以äžåã«éãããŸããã çç±ã¯ããããŸããã ãããã®éçºè
ããŸã çããŠãããã©ããã誰ãã確èªããå¿
èŠããããŸãã
ããã¯ãä»é±éãããWebSocketã®æ°ãä»é±ã©ã®ããã«å€åãããã§ãïŒ

ãªãwebsocketãªã®ãïŒ ç§ãã¡ã®èŠæš¡ã§ã¯ãããŒãªã³ã°ãããã¯ããã«å¹æçã§ãã ãã®ããã«ããŠã䜿çšãããªãœãŒã¹ãæžãããããè¿
éã«ãããå€ãã®ããŒã¿ããŠãŒã¶ãŒã«è»¢éã§ããŸãã ããããäžæçãªããŒããšããŒããã©ã³ãµãŒäžã®ãã¹ãŠã®ãã¡ã€ã«èšè¿°åã®å®å
šãªåæã¯é倧ãªåé¡ã§ã¯ãããŸãããããããã«ãåé¡ããããŸãã ãããã«ã€ããŠã¯åŸã§èª¬æããŸãã
ãã¿ãã¬ïŒããã¯å€¢äžã«ãªããã®ã§ã¯ãããŸããã
ãŠã§ãå±€ã¯ãéåžžã«èããéåžžã«å¹ççãªStackExchange.Elasticã¯ã©ã€ã¢ã³ãã䜿çšããElasticsearch 1.4ãšæ¯èŒããŠã確å®ãªæ€çŽ¢ãžã§ããå®è¡ããŸãã ä»ã®ã»ãšãã©ã®ããŒã«ãšã¯ç°ãªãã䜿çšããAPIã®éåžžã«å°ããªãµãã»ããã®ã¿ãåæ ããŠãããšããçç±ã ãã§ãäžè¬å
¬éããäºå®ã¯ãããŸããã éçºè
éã®æ··ä¹±ã®ããã«ãäžè¬ã«å
¬éããããšã¯è¯ãããšããã害ããããããšç¢ºä¿¡ããŠããŸãã æ€çŽ¢ãé¢é£ã¯ãšãªã®èšç®ã質åã®äœææ¹æ³ã«é¢ãããã³ãã«Elasticã䜿çšããŸãã
åElasticã¯ã©ã¹ã¿ãŒïŒåããŒã¿ã»ã³ã¿ãŒã«1ã€ãããŸãïŒã«ã¯3ã€ã®ããŒãããããåãµã€ãã«ã¯ç¬èªã®ã€ã³ããã¯ã¹ããããŸãã ãã£ãªã¢ã«ã¯ãããã€ãã®è¿œå ã®ã€ã³ããã¯ã¹ããããŸãã ããã«ãããã·ã¹ãã ãå°ãéæšæºã«ãªããŸãã3ã€ã®ãµãŒããŒã¯ã©ã¹ã¿ãŒã¯ãããããã¹ãŠã®SSDã¹ãã¬ãŒãžã192 GBã®ã¡ã¢ãªããã£ãã«ããã10 Gbit / sã®ãã¥ã¢ã«ãããã¯ãŒã¯ã§ããå°ãããã³ãããããŠããŸãã
Tag Engineãã€ã³ã¹ããŒã«ãããŠããStack Serverå
ã®åãã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã³ïŒããã§ã¯.Net Coreã«è§ŠããŸã...ïŒãElasticsearchã®èŠçŽ ã«ç¶ç¶çã«ã€ã³ããã¯ã¹ãä»ããŸãã ããã§ã¯ãElasticã®ããã¥ã¡ã³ããlast positionããšæ¯èŒããŠã
SQL Server ïŒããŒã¿ãœãŒã¹ïŒã®
ROWVERSIONãªã©ã®ããã€ãã®ããªãã¯ãé©çš
ããŸã ã ã·ãŒã±ã³ã¹ã®ããã«åäœãããããæåŸã®ãã¹ä»¥éã«å€æŽãããèŠçŽ ã䜿çšããŠã€ã³ããã¯ã¹ãäœæããã ãã§ãã
å
šæSQLæ€çŽ¢ã«äŒŒããã®ã®ä»£ããã«Elasticsearchã«æ±ºããäž»ãªçç±ã¯ãã¹ã±ãŒã©ããªãã£ãšãéã®ããè¯ãåé
ã§ãã SQL CPUã¯éåžžã«é«äŸ¡ã§ãããElasticã¯å®äŸ¡ã§ãããä»æ¥ã§ã¯ã¯ããã«åªããæ©èœãåããŠããŸãã ãªã
Solrã䜿ããªãã®ã§ããïŒ ãããã¯ãŒã¯å
šäœïŒäžåºŠã«å€ãã®ã€ã³ããã¯ã¹ïŒãæ€çŽ¢ãããã®ã§ããã決å®ãäžããæç¹ã§ã¯ããã¯Solrã«ãã£ãŠãµããŒããããŠããŸããã§ããã ãŸã 2.xã«åãæ¿ããŠããªãã®ã¯ã
ãã¿ã€ããã®å²åã倧ããããã§ãããã®ãããæŽæ°ã®ããã«ãã¹ãŠã®ã€ã³ããã¯ã¹ãåäœæããå¿
èŠããããŸãã èšç»ãç«ãŠã移è¡ã«å¿
èŠãªå€æŽãå ããã®ã«ååãªæéããããŸããã
ããŒã¿ããŒã¹ïŒSQL ServerïŒ
ä¿¡é Œã§ããæ
å ±ã®å¯äžã®ãœãŒã¹ãšããŠSQL Serverã䜿çšããŠããŸãã ãã¹ãŠã®Elasticããã³RedisããŒã¿ã¯SQLãµãŒããŒããåä¿¡ãããŸãã
AlwaysOnå¯çšæ§ã°ã«ãŒãã®äžã«SQLãµãŒããŒã®ã¯ã©ã¹ã¿ãŒã2ã€ãããŸãã ãããã®åã¯ã©ã¹ã¿ãŒã«ã¯ã1ã€ã®ãã¹ã¿ãŒïŒã»ãŒå
šäœã®è² è·ãå®è¡ïŒãš1ã€ã®ãã¥ãŒãšãŒã¯ã®ã¬ããªã«ããããŸãã ããã«ãã³ãã©ãå·ã«ã¯å¥ã®ã¬ããªã«ããããŸãïŒåçã³ããŒãåããããŒã¿ã»ã³ã¿ãŒïŒã ãã¹ãŠã®ã¬ããªã«ã¯éåæã§ãã
æåã®ã¯ã©ã¹ã¿ãŒã¯ãããããã384 GBã®RAMã4 TBã®PCIe SSDã2 x 12ã³ã¢ãåããDell R720xdãµãŒããŒã®ã»ããã§ãã ã¹ã¿ãã¯ãªãŒããŒãããŒããµã€ãïŒæªåé«ããåŸã§èª¬æããŸãïŒãPRIZMãããã³ã¢ãã€ã«ããŒã¿ããŒã¹ããããŸãã
2çªç®ã®ã¯ã©ã¹ã¿ãŒã¯ãããããã768 GBã®RAMã6 TB PCIe SSDã2 x 8ã³ã¢ãåããDell R730xdãµãŒããŒã®ã»ããã§ãã ä»ã®ãã¹ãŠã¯ãã®ã¯ã©ã¹ã¿ãŒäžã«ãããŸãã ããã®ä»ãã¹ãŠãã®ãªã¹ãã«ã¯ããã£ãªã¢ããªãŒãã³IDããã£ãããäŸå€ãã°ãããã³ããã€ãã®QïŒAãµã€ãïŒããšãã°ãã¹ãŒããŒãŠãŒã¶ãŒããµãŒããŒé害ãªã©ïŒãå«ãŸããŸãã
ããŒã¿ããŒã¹ã¬ãã«ã§CPUã䜿çšããããšã¯é¿ããããšããå§ãããŸãããå®éã«ã¯ãçŸåšè§£æ±ºããŠãããã£ãã·ã¥ã®åé¡ã®ããã«ãçŸåšãããã«å¢å ããŠããŸãã çŸåšãNY-SQL02ããã³04ã¯æå®ããããã¹ã¿ãŒã§ããã01ããã³03ã¯ãSSDã®æŽæ°åŸã«ä»æ¥ãªããŒãããã¬ããªã«ã§ãã éå»24æéã¯æ¬¡ã®ããã«ãªããŸãã

SQLã¯éåžžã«åçŽã«äœ¿çšããŸãã ç°¡åã§ã-é«éã§ãã ããã€ãã®ã¯ãšãªã¯éåžžèãããããŸããããSQLãšã®å¯Ÿè©±èªäœã¯å€å
žçãªãã®ã§ãã ãå€ä»£ã®ã
Linq2Sqlã1ã€ãããŸããããã¹ãŠã®æ°ããéçºã§ã¯ã
POCOã䜿çšãããªãŒãã³ãœãŒã¹ã®Micro-ORMã§ãã
Dapperã䜿çšã
ãŠããŸãã å¥ã®èšãæ¹ãããŸããããStackOverflowã«ã¯ããŒã¿ããŒã¹ã«1ã€ã®ããã·ãŒãžã£ããæ ŒçŽãããŠãããããã®æåŸã®éšåãã³ãŒãã«å€æããã€ããã§ãã
å³æžé€š
ããŠãããªããçŽæ¥å©ããããšãã§ãããã®ã«åãæ¿ããŸãããã äžèšã®ãããã®ããšã®ããã€ãã ããã§ã¯ãäžçäžã§äœ¿çšã§ããããã«ãµããŒãããŠããæããªãŒãã³ãª.Netã©ã€ãã©ãªã®ãªã¹ããæäŸããŸãã ãããã¯ããžãã¹ã«ãšã£ãŠéèŠãªäŸ¡å€ãæããªãããããããªãã¯ãã¡ã€ã³ã«é
眮ããŸãããéçºè
ã®äžçãæ¯æŽããããšãã§ããŸãã ãããã圹ã«ç«ã€ããšãé¡ã£ãŠããŸãïŒ
- Dapper ïŒ.Net CoreïŒ-ADO.Netçšã®é«æ§èœMicro-ORMã
- StackExchange.Redis-é«æ§èœã®Redisã¯ã©ã€ã¢ã³ãã
- MiniProfilerã¯ããã¹ãŠã®ããŒãžã§äœ¿çšããå°ããªãããã¡ã€ã©ãŒã§ãïŒRubyãGoãããã³Nodeã®ã¿ããµããŒãïŒã
- äŸå€ç -SQLãJSONãMySQLãªã©ã®ãšã©ãŒãã¬ãŒ
- Jilã¯é«æ§èœïŒdeïŒJSON ã·ãªã¢ã©ã€ã¶ãŒã§ãã
- Sigil-.Net CILçæã¢ã·ã¹ã¿ã³ãïŒCïŒãååã«é«éã§ãªãå ŽåïŒ;
- NetGain-é«æ§èœwebsocketãµãŒããŒã
- Opserver-ã»ãšãã©ã®ã·ã¹ãã ãçŽæ¥ããŒãªã³ã°ããOrionãBosunããŸãã¯WMIããããŒã¿ãåä¿¡ããã³ã³ãããŒã«ããã·ã¥ããŒãã
- Bosunã¯ãGoã§æžããããµãŒããŒåŽã®ããŒã¿ããŒã¹ç£èŠã·ã¹ãã ã§ãã
以äžã¯ãåœç€Ÿã®ãœãããŠã§ã¢ãåäœããå©çšå¯èœãªããŒããŠã§ã¢ã®è©³çŽ°ãªãªã¹ãã§ãã ããããå
ã«é²ã¿ãŸãã ç§ãã¡ãšäžç·ã«ã