Infrastructure

ဒီနေ့ ရုံးမှာ လက်ရှိလုပ်နေတဲ့ project တစ်ခုအတွက် server ပိုင်း infrastructure တွေကို လိုက်ဖတ်ဖြစ်တယ်။ အဓိက ဖတ်ဖြစ်တဲ့ infrastructure တွေက facebook, foursquare , instagran , digg စတဲ့ လူသုံးများတဲ့ website တွေပါပဲ။

Facebook

လက်ရှိ facebook ကို XHP နဲ့ ရေးပြီးတော့ Hip Hop PHP နဲ့ run ထားပါတယ်။ website ကိုတော့ javascript တွေပဲ သုံးထားတယ်။ C , C++ , Java တွေကို back end မှာ သုံးထားတယ်။ နောက်ပြီးတော့ boost ကိုလည်း သုံးထားပါတယ်။ နောက်ပြီးတော့ အချို့ internal tool တွေကိုတော့ python ကိုသုံးထားပါတယ်။ Chat ပိုင်းကိုတော့ Erlang နဲ့ ရေးထားပါတယ်။ backend service နဲ့ front end web server ကိုတော့ Apache Thrift ကို အသုံးပြုထားပါတယ်။ ((http://www.quora.com/What-programming-languages-are-used-at-Facebook?q=programming+language+in+facebook))

Facebook က 690 billion page views each month ရှိပါတယ်။ လက်ရှိ Internet Traffic 9.5 percent က facebook ကို အသုံးပြုနေတာပါ။ 100 million photo upload နေ့စဉ် ရှိနေပြီးတော့ လစဉ် 30 billion pieces of content ရှိပါတယ်။ 1 million web sites and 550,000 applications က facebook connect ကို အသုံးပြုထားပါတယ်။ လက်ရှိ facebook data center ကိုတော့ Prineville, Oregon မှာ ထားရှိပါတယ်။ ((http://www.datacenterknowledge.com/the-facebook-data-center-faq/)) North Carolina data center ကို တည်ဆောက်ဖို့အတွက် facebook က ပြင်ဆင်နေပါတယ်။ ((https://www.facebook.com/rutherfordDataCenter))

လက်ရှိ data center မှာ အနည်းဆုံး 60,000 servers အသုံးပြုလျက်ရှိပါတယ်။ နောက်ပြီးတော့ MySQL , Memcached, Haystack for photo retrieval, Cassandra, Hadoop and Hive , Scribe for high-speed distributed logging ((http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/)) , Apache HBase for Messaging ((https://www.facebook.com/notes/facebook-engineering/the-underlying-technology-of-messages/454991608919)) တို့ကို အသုံးပြုထားပါတယ်။

Facebook ရဲ့ infrastructure အတိအကျကိုတော့ မသိရပေမယ့် server နဲ့ traffic ကို ကြည့်လိုက်တာနဲ့ အခုတော့ အဲလောက်ထိတော့ မလိုသေးပါဘူး။

Twitter

Twitter ကို စရေးခဲ့တုန်းက ROR နဲ့ mysql + memcache တို့ကို အသုံးပြုခဲ့ပါတယ်။ နောက်ပိုင်းမှာ Scala ကို ပြောင်းခဲ့တယ် ((http://techcrunch.com/2008/05/01/twitter-said-to-be-abandoning-ruby-on-rails/)) ။ Database ကိုတော့ cassandra ကို ပြောင်းခဲ့ပါတယ်။ tweet တဲ့ နှုန်းက နေ့စဉ် 50 million ကနေ 140 million ရှိပါတယ်။ လက်ရှိ twitter က ကိုယ်ပိုင် data center ကို အသုံးပြုထားပါတယ်။ မှန်းခြေ server ပေါင်း 2,000 ကနေ 4,000 အတွင်း ရှိပါတယ်။ ((http://www.quora.com/How-many-servers-does-Twitter-have?q=servers+in+twitter)) ။

Twitter က server ခဏခဏ down တဲ့ ပြဿနာတွေ ကြုံခဲ့ရဖူးပါတယ်။ Twitter က ၃ ရက်လောက် down သွားခဲ့ဖူးတယ် ((http://techcrunch.com/2008/04/22/twitter-may-not-have-to-care-about-uptime-any-longer/)) ။ ဒါကြောင့် နောက်ပိုင်းမှာ ROR ကနေ scala ကို ပြောင်းခဲ့ပါတယ်။ နောက်ပြီး mysql+memcache ကနေ Cassandra ကို ပြောင်းခဲ့ပါတယ်။

Instagram

Instagram ကို ပထမဆုံး Django နဲ့ PostgreSQL နဲ့ စခဲ့ပါတယ် ((http://instagram-engineering.tumblr.com/post/10853187575/sharding-ids-at-instagram)) ။ ပထမဆုံး managed data center တစ်ခုကို အသုံးပြုထားခဲ့ပါတယ်။ နောက်ပိုင်းမှာတော့ Amazon EC 2 ကို ပြောင်းခဲ့တယ်။ ((http://www.quora.com/What-servers-would-Instagram-have-used-in-their-early-stage-and-what-servers-do-they-use-now)) ။ Instagram ကို သဘောကျတဲ့ အချက်က popular ဖြစ်လာပေမယ့် ချက်ခြင်း server ကို upgrade လုပ်နိုင်တာပဲ။ iPhone app နဲ့ web app ကွာတဲ့ အချက်က iphone app က popular ဖြစ်လာလို့ server ကို upgrade လုပ်တာဖြစ်ဖြစ် API အသစ် ပြောင်းတာ ဖြစ်ဖြစ် သတိထားရပါတယ်။ App တစ်ခုကို apple approve လုပ်ဖို့ အမြန်ဆုံး ၂ ရက် အကြာဆုံး ၇ ရက် ရှိပါတယ်။ ဒါကြောင့် IP အသစ်ပြောင်းလိုက်တာနဲ့ လက်ရှိသုံးနေတာတွေ အကုန် down သွားနိုင်တယ်။ နောက်တချက်က server တစ်ခုကနေ တစ်ခု ရွေ့တဲ့ အခါမှာ data တွေ မပျောက်ပျက်သွားအောင် service ကို ခဏလေး down လိုက်ပြီး backup လုပ်။ ပြီးရင် server အသစ်ကို ရွှေ့ စတာတွေ လုပ်ရတယ်။ Instagram က အဲဒီ အဆင့်တွေကို လွယ်လွယ်ကူကူ ဖြတ်ကျော်နိုင်ခဲ့ပါတယ်။

Instagram က အခုနောက်ပိုင်းမှာ database ကို Redis ကို ပြောင်းလိုက်တယ်။ ((http://instagram-engineering.tumblr.com/post/12202313862/storing-hundreds-of-millions-of-simple-key-value-pairs)) ။ Instagram က server side code တွေကို Burbn ကနေ ယူခဲ့ပါတယ်။ Server side မှာတော့ လပေါင်းများစွာ ပေးခဲ့ရတယ်။ App ကိုတော့ ၈ ပတ် ကြာအောင် ရေးခဲ့ရပါတယ်။ ((http://www.quora.com/Instagram/How-long-was-Instagram-in-development-for-before-launch?q=how+long+to+make+instagram)) Instagram က release မလုပ်ခင်ကတည်းက infrastructure ကို ခိုင်ခံအောင် တည်ဆောက်ထားပုံ ပေါ်တယ်။

Flipboard က popular လည်း ဖြစ်တဲ့ အခါမှာ facebook , twitter service တွေ down သွားခဲ့တယ်။ Zite လည်း ထိုနည်းလည်းကောင်းပဲ။ release တကယ်လုပ်ပြီး ရက်အနည်းငယ်မှာ server down သွားခဲ့တယ်။ နောက်ထပ် version အသစ်မှ သာ တော်တော် လေးကို အဆင်ပြေသွားတာပါ။ သို့ပေမယ့် instagram က ပြဿနာ ကြီးကြီးမားမား တစ်ခုမှ မရှိခဲ့တာကတော့ လေးစားဖို့ ကောင်းတယ်။

Foursquare

Foursquare မှာတော့ လက်ရှိ အသုံးပြုထားတာတွေကတော့

  • 15 app servers
  • 4 PostgreSQL servers (being phased out)
  • 2 memcached servers (being phased ou)
  • 10 MongoDB servers
  • 1 frontend (nginx)
  • 1 search server (solr)

Amazone EC2 ကိုပဲ အသုံးပြုထားပါတယ်။ User image တွေကိုတော့ Amazon S3 မှာ သိမ်းထားပါတယ် ((http://www.quora.com/How-many-servers-does-a-site-like-Yelp-or-foursquare-require-with-their-level-of-traffic?q=foursquare+infrastructure)) ။

လက်ရှိ user 10 million ရှိပါတယ်။ တနေ့ကို billion check-ins ရှိပါတယ်။ 500,000 က Merchant Platform ကို အသုံးပြုနေပါတယ်။ ((https://foursquare.com/about)) ။ foursquare website ကို scala နဲ့ ရေးထားပြီးတော့ JVM ပေါ်မှာ run နေပါတယ်။ Life web framework ကို အသုံးပြုထားတယ်။ PostgreSQL နဲ့ စခဲ့ပြီး နောက်ပိုင်းမှာ Mongodb ကို ပြောင်းခဲ့ပါတယ်။ ((https://docs.google.com/present/view?id=dhkkqm6q_13gm6jq5fv))

ဒီ အချက်အလက်တွေကို ကြည့်ရင် grow မဖြစ်ခင်သုံးက PostgreSQL ကို အသုံးပြုကြတာ များပါတယ်။ သို့ပေမယ့် နောက်ပိုင်းမှာတော့ Mongodb သို့မဟုတ် Redis ကို ပြောင်းကြတယ်။ ဒါမှမဟုတ် တစ်ခြား NoSQL တစ်ခုခုကိုပေါ့။ NoSQL နဲ့ ချက်ခြင်း စလိုက်လို့ မရဘူးလားဆိုတဲ့ မေးခွန်း ကျွန်တော် ကိုယ့်ဘာသာကိုယ် မေးဖူးတယ်။ Mongodb နဲ့ စလိုက်ရင် ရပေမယ့် မကျွမ်းကျင်တဲ့အတွက် product ထွက်ဖို့ ကြာမယ်။ အချိန်ကြာမယ်ဆိုရင် ကြားထဲမှာ project က ပျက်သွားဖို့ အကြောင်းတွေ အများကြီး ရှိပါတယ်။ ဒါကြောင့် တော်တော်များများက မြန်မြန် ပြီးအောင် ကျွမ်းကျင်တဲ့ Relational Database ကို အသုံးပြုကြပါတယ်။ NoSQL က RDB နဲ့ ယှဉ်လိုက်ရင် သက်တမ်း အရမ်းနုပါသေးတယ်။

အသုံးများတဲ့ language တွေက PHP , scala , python , ruby စတဲ့ langauge တွေကို အသုံးများတယ်။ လက်ရှိ popular ဖြစ်နေတဲ့ service တွေ အကုန် စကာစ က အကြီးကြီးနဲ့ စခဲ့တာ မဟုတ်ပါဘူး။ သေးသေးလေးလည်း မဟုတ်ပါဘူး။ သဘောအကျဆုံးကတော့ instagram ပဲ။ foursquare တောင် Mongodb ကို ပြောင်းဖို့ အချိန် တော်တော်ကြီးကို ယူပြီး ဖြည်းဖြည်းခြင်းဆီ ပြောင်းခဲ့ရတယ်။

သူတို့ရဲ့ infrastructure အကြောင်းကို detail မသိရပေမယ့် အနည်းငယ် ရိပ်ဖမ်းသံဖမ်း သိလိုက်ရတာ တော်တော်လေးကို အဆင်ပြေသွားတယ်။ သူတို့ လုပ်ထားတဲ့ ပုံစံနဲ့ ကျွန်တော် လက်ရှိ လုပ်နေတဲ့ ပုံစံနဲ့ ယှဉ်လိုက်ရင် တော်တော်လေးကို ကွာခြားတယ်။ လက်ရှိ project မှာ ပြဿနာ အများကြီး တက်လာနိုင်တယ်ဆိုတာကို မဖြစ်ခင် တော်တော်များများ ကြိုတွေ့သွားတယ်။ ဘာပဲ ပြောပြော ၂ ရက်လောက် အချိန်ပေးပြီး ရှာပြီး ဖတ်လိုက်ရတာ တန်တယ်လို့ ဆိုရမယ်။

1 Comment

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.