Dropbox ã®ã¹ã±ã¼ã«ã¨ã
Python ãªãµã¼ãã¹ ã¿ããªå¤§å¥½ã Dropbox ã®ã¹ã±ã¼ã«ã¨ãã¡ã¢。以ä¸ã®ãã¼ã¸è¾ºãããããã¯ã¢ãã。Parted? ã¿ãããªã®ã§、ç¶ç·¨ãã§ãã追è¨ãããã。
- Scaling lessons learned at Dropbox, part 1 (comment)
- Dropbox - Startup Lessons Learned (slideshare)
- Dropbox -Yã³ã³ããã¼ã¿ã¼ãçãã ã¹ã¿ã¼ãã¢ããã®è»è·¡ã¨æªæ¥ -
ã¹ã±ã¼ã«é¢ä¿ãªãã§ãã、2006 å¹´å½æã¯ãªã³ã©ã¤ã³ã¹ãã¬ã¼ã¸ãµã¼ãã¹ããã£ã±ããã£ãããã§、VC ããè³é調éããã¨ãã®ããåããããããã
- VC "ã¯ã©ã¦ãã¹ãã¬ã¼ã¸ãµã¼ãã¹ãªãã¦è ãã»ã©ãã"
- Drew "ãªã«ã使ã£ã¦ãã®ããã¾ãã?"
- VC "NO"
- Drew "..."
å®ç§ã§、ã¹ã±ã¼ã©ãã«ã§、ã¯ãã¹ãã©ãããã©ã¼ã ãªã¯ã©ã¦ãã¹ãã¬ã¼ã¸!å½æ、ãã©ã¤ãã¼ããã¼ã¿ã®ãããªã 12000 digg (<- æããã) ãã、ãã¼ã¿ãªã¹ãã®ç»é²ã 1 æ¥ã§ 5 å人ãã 7 ä¸äººã«å¢ãããã¨ã。ç¾å¨、5000 ä¸äººã®ã¦ã¼ã¶ã、2 å 5 åä¸ããã¤ã¹ãã、48 æé㧠10 åãã¡ã¤ã«ä¿åãã¦ãã¨ã®ãã¨。ãã¡ã¤ã«ã® POST/PUT 㧠5787 rps ã¨ãªã㨠GET ãåãããã¨。。。ãããã§ãã!
ã¹ã±ã¼ã«ã®è¨äºãæ¸ããã¦ããã®ã¯、2011 å¹´ã¾ã§ Dropbox ã§ã¹ã±ã¼ã«ãæ å½ããã¦ãã Rajiv Eranki (← URL w) æ°ã§ã。Dropbox ã®ããã¯ã¨ã³ãã¯ã»ã¨ãã© 1 ~ 3 人ã§é¢åãè¦ã¦ããã¨ã®ãã¨。é ä¸åã§ä»¥ä¸æç²。ãªã、Dropbox ããã¯æå¹ã§ããã®ã¯ééããªãã§ãã、ã¹ãã¤ãã¯ã¨æãããç®æãããã®ã§、18 ææªæºã®æ¹ã¯ä¿è·è ã®åæã®ä¸ï½
>>> å©ç¨ãã¦ãããã¯ããã¸ã¼
- è¨èª: ã»ã¨ãã© Python, ã¡ãã£ã¨ã ã C
- ãã¼ã¿ãã¼ã¹: MySQL
- WSGI: Paster / WAF: Pylons / ãã³ãã¬ã¼ãã¨ã³ã¸ã³: Cheetah
- ãã¡ã¤ã«ãããã¯ã®ä¿åã¨æä¾: S3/EC2
- ãã£ãã·ã¥ã¨ã (ã»ãã·ã§ã³ã¹ãã¢ã?: memcached
- ããã³ãã¨ã³ããµã¼ã: nginx
- ãã¼ããã©ã³ãµ: haproxy (nginx ã¨、ã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã®é)
- ç£è¦: ganglia, nagios, Pingdom
- IP ã¨ä½ç½®æ å ±ã®ãããã³ã°: GeoIP
ãããã®æè¡ãé¸ãã åºæºã¯ "ä¿¡é ¼æ§" ã ããã§ã。
MySQL ãé¸ãã çç±ã¯、å½æ Postgres ã®ã¬ããªã±ã¼ã·ã§ã³ããã«ãã¤ã³ãããªãã£ããã。ããã¨ã³ãã¥ããã£ãã§ããã、åé¡ããã£ãã¨ãã¦ã Google, Yahoo, Facebook ãå ã«ãããéã£ã¦ããã(w
ORM ã« SQLAlchemy ã使ã£ã¦ãããã©、ORM å«ãã ã対å¿ãã¨ã¦ãåä»ã ã£ãããã。çµå± SQLAlchemy ã§ãã¼ã¬ãã«ã§ SQL ãçµã¿ç«ã¦ãããå¤æ´ããããã§ã (å ·ä½ä¾ã®è¨è¼ãç¡ãã®ã§åãããªãã§ããæãããããããã¨?)。
ãã¯ããã¸ã¼ã®é¸æã«éããã¢ããã¤ã¹ã¯、"åä½ã軽éã§、ä»ã®å¤ãã®ãµã¼ãã¹ã§å©ç¨ããã¦ãããã¨、ãããã¯ããã¸ã§ã¯ãã®ã³ã³ããªãã¥ã¼ã¿ã¼ã«ãªããããã®" ãé¸ã¶。
>>> ä½åã«è² è·ãããã
ããå©ç¨ãããã¯ããã¯ã®ã²ã¨ã¤。æ¬çªç°å¢ã§ããã¨ä½åã«è² è·ãããã。ä¾ãã° memcached ã¯å¿ è¦ä»¥ä¸ã«ãªã¼ããã。memcached ãå£ããã、ãã®éè¤ããã¦ãã¯ã¨ãªã¼ãæ¢ãã¦è§£æ±ºã¾ã§ã®æéã稼ã。ãªãäºåã«è¨ç»ãç«ã¦ãªãã。ç£è¦ã§æ¤åºã§ããªããããæ¥ãªé害ãä½åº¦ãçºçãããã。ã¾ã éçãç¥ã ãã¨ãã§ãããã。
>>> åã¢ããªã±ã¼ã·ã§ã³ç¨ã®åæ
æ°åå°ã®ãµã¼ãã®æ°åã®çµ±è¨ãã¼ã¿ãéè¨ããã°ã©ãã便å©。ã»ã¨ãã©ã®ã¢ãã¿ãªã³ã°ã½ãªã¥ã¼ã·ã§ã³ (out of the box - ç®±ããåºãã¦ãã使ãã、ãã³ãã¬ã¼ãçãªãã¤) ã¯、ãã®ç¨®ã®è² è·ã¯èæ ®ããã¦ãªã。memcached, cron, 㨠ganglia ã§å®ç¾。ã°ã©ããè¦ããæã«、ã¹ã¬ãããã¼ã«ã«ã¡ã¢ãªãããã¡ã«ä¿åã§ãã。ãã®çµ±è¨ãæ¯ç§ memcached ã«ã¿ã¤ã ã¹ã¿ã³ããä»ãã¦ä¿å。æ¯åãã®éè¨çµæã ganglia ã«ãã¹ããã¦、memcached ããã¯ãªã¢。ããã«ããä½åãã®çµ±è¨ã調æ»ã§ããããã«ãªã£ã。
縦軸ãå¹³åã¬ã¹ãã³ã¹ã¿ã¤ã 。横軸ã¯æé。ãã®ã°ã©ãã«ãã、ã¬ã¹ãã³ã¹ã¿ã¤ã ã 1:00 ãããã«æ¥ä¸æãã¦ãã¦、MySQL ã®ã³ããããã§ã¼ãºã§ä½ããèµ·ãã¦ãã®ãåãã。CPU ã¯å¹³åå¿çæéããä»ã®ãã¹ã¦ãå·®ãå¼ãããã® (é¢ç¥ãã¦ããªããã¤)。
ã°ã©ãä¸ã«、ãããã¤ã AWS ã®åæ¢æéãªã©ã®ã¤ãã³ãã表示ããã®ãç´ æµ。
>>> bash ã«ããåæ
ã·ã§ã«ã¯ç´ æµã ã!!
ä¾ãã° Web ãµã¼ãã®ãããã°。ãªã«ããæ¥ä¸æãã¦ããªãããã°ãã調æ»ãããå ´å、
Apr 8 2012 14:33:59 POST ... Apr 8 2012 14:34:00 GET ... Apr 8 2012 14:34:00 GET ... Apr 8 2012 14:34:01 POST ...
ãããªãã°ã ã£ãã
cut -d' ' -f1-4 log.txt | xargs -L1 -I_ date +%s -d_ | uniq -c | (echo "plot '-' using 2:1 with lines"; cat) | gnuplot
ãããªã³ãã³ãã§、ããã«ä½ãèµ·ãã¦ããããææ¡ã§ããã°ã©ããåå¾ã§ãã¾ã。
ãå§ããªã³ãã³ããã¡: sed
, awk
, grep
, cut
, head
, tail
, sort
, uniq
, tr
, date
, xarg
ãã使ã sed
, awk
ã³ãã³ãã®ãã¼ãã·ã¼ãã¯ããã¯ãã¼ã¯ãã¦ã: sed
, awk
追è¨: id:torazuka ããã«ããç´ æµãªè§£èª¬ -> "ã¡ã¢: ããã¹ããã°ãgnuplotã§è¡¨ç¤ºããã³ãã³ãã®ä¾"
>>> ãã°ã¹ãã ã¯è¶ å½¹ã«ç«ã¤
Web ãµã¼ãã®ãã°å ã«ã¹ãã ãªãã°ãåãã¦ãã¦、æå³ããä½åº¦ãå©ãããã。ä¾ãã°、競åç¶æ ããããã°ããã®æã« "FUUUCCKKKKKasdjkfnff" ãåºåããã¦ãªãã£ããã¨ã§、ãã®åé¡ãèµ·ãã£ã¦ããå ´æãç¹å®ã§ãã。(å¾®å¦。。
åé·ãªãã°ãåé¤ããã®ã¯é åçã ãã©、ããã§ä½åº¦å¾æãããã¨ã。
>>> æ³å®ãããé害ã確èªãã
é害ãã¤ã³ããææ¡ãã¦、ãã®ãã§ã¤ã«ãªã¼ãã¼ãããå ´åã¯、æã ãã®åä½ããã¹ããã。ç¡ä½çºã«ãããã¯ã¼ã¯ãããµã¼ããåãé¢ã、ãã®ãã§ã¤ã«ãªã¼ãã確èªãã (ãã£ãæ¹ãããã®ã§ããããã©、æ£ç´æã。。
- ãã§ã¤ã«ãªã¼ãã¼å¾ã«è² è·ãããããã¨ã§、ãã§ã¤ã«ãªã¼ãã¼ããã»ã¹ã«ããã«ã¹ã±ã¼ãããããã¨ãææ¡ã§ãã¾ã (ã«ã¹ã±ã¼ããã§ã¤ã«ãªã¼ãã¼)
- ãã§ã¤ã«ãªã¼ãã¼ä»¥é、ã³ã¼ãã®æ¸ãæãã、ãã¼ã¿ãã¼ã¹ã¹ãã¼ãã®å¤æ´ã、å é¨ DNS ã®å¤æ´çãæ³å®ããã¾ã。ãã以éåä½ããã¦ãªãã£ãã¹ã¯ãªããã«ã¯、å¤ãç°å¢ã«ä¾åãã¦ããããç¥ãã¾ãã。
ããã¯å¹³å¸¸æã«ææ¡ããæ¹ãè¯ãã®ã§、æ æã« (cron ã§ããã»ã¹ããªã¹ã¿ã¼ãã、memcached ãã¯ãªã¢ããç) çºçãããã®ããã¹ãã§ã。æ¬çªãµã¤ãã§ãããªãã¹ããããã®ã¯é¦¬é¹¿ãããæãããããã¾ããã、ãã¹ãç°å¢ã§ã¯ååã§ã¯ããã¾ããã、ããã¯è¯ãä¿éºã«ãªãã¾ã。
>>> ãã£ãã«å®è¡ãããªããã®ãå®è¡ãã
ä¸è¨ã¨åãããã«、ãã£ãã«å®è¡ãããªãã³ã¼ããå®è¡ãã。æ¯æ cron ã§å®è¡ãã¦ãããã®ã、æ¯æ¥ dry-run ããããã¨ã«ãã、ã³ãããå¾ãã°ããçµã£ã¦ãããã°ããå¿ è¦ããªããªãã¾ã。ã¢ã¸ã¥ã¼ã«ã®ã¤ã³ãã¼ã確èªã ãã§ãå©ãã«ãªãã¾ã。æåã§å®è¡ãã¦ããããã (ã¦ã¼ã¶ç¶æ ã®å¤æ´ã診æãªã©) ãåæ§。
>>> åçã«ä¿ã¤
以å、ã¦ã¼ã¶ãã¼ã¿ã 2 ã¤ã®ã·ã£ã¼ãã«ä¿åãã¦ãããã©、ãã£ã±ãã«ãªã£ãã®ã§、ã·ã£ã¼ãã 1 å追å ãã。ããã失æã ã£ã。2 ã¤ã®ã·ã£ã¼ãã¯ã»ã¼åããã¼ã¹ã§å¢ãã¦ãã£ããã©、追å ããã·ã£ã¼ãã¯ãã®ãããå¢ãã§å¢ãã¦ãã¾ã£ã。ãªã®ã§å度ãªããã·ã¥ããç¾½ç®ã«。2 ã¤ã®ã·ã£ã¼ããããããåå²ã、åçã«ä¿ã¤æ¹ãè¯ã (ããªããã¼ã ãã©)。
ãã¼ãã¦ã§ã¢ã§ãä¸ç·。æ©ç¨®ã¯å°ãªãæ¹ãè¯ã。ã³ã¹ããããããããããªããã©、価å¤ããã。
>>> ãã¦ã³ã¿ã¤ã ãã°ãä¿æãã
ãµã¤ãã®ãã¦ã³ãæ§è½ä½ä¸ã®çºçæ¯ã«、ãã®éå§æéã¨çµäºæé、åå (ã³ã¼ãã¬ãã¥ã¼ãã¾ããã£ã。ç£è¦ã®ä¸è¶³。ãã°ã®ãªã¼ãããã¼ãªã©) ãè¨é²ãã。ããã«ãã、"ãã¦ã³ã¿ã¤ã ãæå°éã«æããããã«、æãå¹æçãªã®ã¯ä½ã" ãåãã。
>>> UTC
ãã¹ã¦ UTC ã«ãã!ãµã¼ãã¿ã¤ã 、ãã¼ã¿ãã¼ã¹ãªã©。ããã¤ãã®ã½ããã¦ã§ã¢ã¯ UTC 以å¤ãé©åã«åãæ±ããªãã®ã§、絶対ã«ä½¿ããªã!Dropbox ã§ã¯å£æè¨ã¾ã§ UTC ã«ãã¦ã (ã¸ã¼ã¸ã¼ï½ï½ï½
ã¦ã¼ã¶ã«æå»ã表示ããã¨ãã ã、ã¿ã¤ã ã¾ã¼ã³ãå¤æãã。
>>> 試ãåã«、ã·ã¥ãã¬ã¼ã·ã§ã³ã¨åæã
ãããã¯ãã¨ã¯éã、ããã¯ã¨ã³ããã¨ã³ã¸ãã¢ãªã³ã°ããéã®ç®æ¨ (ãã¼ã¸ãã¼ãæéã®æé©åã稼åæéãªã©) ãå¹æãäºæ¸¬ããã®ã¯é£ãã。ä½ããå½¹ã«ç«ã¤ã¨æã£ãéã¯、å®è£ ããåã«ãããã·ãã¥ã¬ã¼ããã。ä¾ãã°ããã»ããµã¼ã®é«éåãå½¹ã«ç«ã¤ã¨æã£ãå ´åã¯、1 ã¤ã®ã¯ã¼ã«ã¼ã§ãããå®è¡ãã¦ã¿ã¦ãã®éããè¦ã¦ã¿ã。ã¾ãã¯、ãã¼ã¿ãã¼ã¹ãµã¼ããã¬ã¤ãã³ã·ãé«ãå ´æã«ç§»åãããã¨æã£ãå ´åã¯、ãã¼ã¬ãã«ã§ã¬ã¤ãã³ã·ã追å ãã¦ã¿ã¦、ä½ãèµ·ããããè¦ã¦ã¿ã。ã¾ãã¯、ãã¼ã¿ãã¼ã¹å¤ã«ä½ãããã£ãã·ã¥ãããã¨æã£ãå ´åã¯、å½±é¿ãã·ãã¥ã¬ã¼ãã、ããããè¨ç®ãããªã©ãªã©
>>> ã»ãã¥ãªãã£ã¨å©ä¾¿æ§ã®ãã¬ã¼ããªã
Dropbox ã«ä¿åããã¦ããã®ã¯å人ã®ãã¡ã¤ã«ãªã®ã§、ã»ãã¥ãªãã£ã¯ã¨ã¦ã大äº。ããã、ãµã¼ãã¹ãç°ãªãã°å¯¾å¿ãç°ãªãã¾ãã、ããã¦ãã®ã»ãã¥ãªãã£å¤æã¯ã¦ã¼ã¶ã¼ãããã°ã©ãã¼ã«ã¨ã£ã¦ä¸ä¾¿ã¨ãªãã¾ã。
ä¾ãã°、ã»ã¨ãã©ã® Web ãµã¼ãã¹ã§、ã¦ã¼ã¶åããã¹ã¯ã¼ãã®ã©ã¡ãããééãã¦å ¥åããå ´å、ééãã¦ãã¨ã¯éç¥ãã¾ãã、ã©ã¡ããééãã¦ãããã¾ã§ã¯éç¥ãã¾ãã。ããã¯ã¦ã¼ã¶åã®æ¨æ¸¬ã«ä½¿ããªãããã»ãã¥ã¢ã§ãã、ã©ã®ã¦ã¼ã¶åã§ç»é²ãããè¦ãã¦ãªã人ã«ã¨ã£ã¦ã¯ä¸ä¾¿ã§ã。ã¦ã¼ã¶åãå ¬éãã¦ããã¾ããªã (å ¬éãã©ã¼ã©ã ã¨ã Pinterest ã¿ãããªãµã¼ãã¹) ã¨å¤æããå ´åã¯、ã¦ã¼ã¶ã«ä¾¿ãããããã«æ å ±ã®å ¬éãæ¤è¨ãã。
æ å ±ãããåãããªããµã¼ãéã«ãã¡ã¤ã¢ã¦ã©ã¼ã«ãè¨ããã¨ã。
ãã。æ訳ã«ãªã£ã¦ãã¾ãã¾ãã。ãããããã£ã!解éééã£ã¦ããæãã¦ããã ããã¨åã³ã¾ã。ã¹ãã¤ãã¯ãªç®æãããã¾ãã、ããããã£ã¦å®å®ãããµã¼ãã¹ãæä¾ã§ãã¦ããã ã¨æãã¾ã。è²ã ã¨åå¼·ã«ãªãã¾ãã!I love dropbox :)
ã³ã¡ã³ã
ã³ã¡ã³ããæ稿