بزرگان از چه استفاده می کنند؟

چند وقت پیش سر یه پروژه ای مجبور شدم برم سراغ scale کردن اپلیکشن های تحت وب.فرض کنید ۳ سال دیگه بازدید وبلاک من به جایی برسه که برای پاسخگویی به درخواست ها مجبور باشم از رم، پهنای باد ، IO و … بیشتری استفاده کنم ، طوری که نشه با سرور فعلی ( که حدود ۲۰ تا سایت دیگه هم روش هاست کردم ) جواب گرفت، خوب می رم سراغ یه VPS جدا واسه وبلاگم. حالا یه سال می گذره و بازدیدش بازهم می ره بالاتر، مجبورم برم سراغ یه dedicate server واسه وبلاگم و هی به اون رم و هارد اضافه کنم. ولی اضافه کردن رم و هارد تا یه جایی جواب می ده. در نهایت مجبور می شم برم سراغ Scale کردن سایت. یعنی اینکه وبلاگ من روی چندین سرور هاست شده باشه. واسه این کار راه های مختلفی هست، مثلا باید دیتابیس رو Shard کنید و … که اگه سرچ کنید به نتایج خیلی بهتری می رسید تا من اینجا بگم.

ولی چیزی که تو این مدت توجه من رو جلب کرد این بود که سایت های بزرگ از چه زبون های برنامه نویسی ای استفاده می کنند؟

 

Googleگوگل:

غول تکنولوژی دنیا ( البته بر اساس مطالبی که من چند جای مختلف خوندم ) برای بیشتر کارهاش داره از Python استفاده می کنه. منظورم از بیشتر کارهاش ، کارهای وب بیس و back end کلی سایت هست. برای بانک اطلاعاتی هم از یک بانک اطلاعاتی که خود گوگل استفاده کرده داره استفاده می شه به اسم BigTable. البته در اوایل کار گوگل از MySQL استفاده می کرد ، بعدتر به اراکل مهاجرت کرد و بعد ترها یه مقاله نوشت که من چیزی دارم به اسم BigTable و دارم ازش استفاده می کنم. BigTable یه بانک اطلاعاتی NoSQL هست.البته نه از نوع MongoDB بلکه چیزی شبیه Casandra ( یعنی مبتنی بر ستون نه سند ) BigTable با C و C++ نوشته شده و کلا فلسفه ساختش اجرا روی هزاران ماشین بصورت همزمان بوده. شما نمی تونید ازش مثل MySQL یا بقیه دیتابیس ها استفاده کنید، یعنی نمی تونید اونو روی سرورتون نصب کنید و فقط اگه از Google App Eng استفاده کنید می تونید توش دیتا ذخیره کنید.

Yahooفیس بوک:

فیس بوک روز اول با PHP و MySQL شروع به کار کرد، بعدترها دید واقعا نمی شه با اینها کار به جایی ببره و شروع کرد از نسخه های customs شده خودش واسه هرکدوم استفاده کنه. مثلا برای mysql یه patch نوشت که کارایی رو خیلی بالاتر ببره یا xhp رو نوشت.البته گفته می شه بخش هاییش رو هم الان با C++، جاوا، پایتون و erlang نوشته. از لحاظ بانک اطلاعاتی هم یک مقداری داره switch می کنه روی بانک اطلاعاتی توسعه یافته شده توسط خودش به اسم Casandra ، چیزی شبیه BigTable گوگل!

YouTube

 

YouTube:

حتما می دونید که الان صاحبش گوگل هست ، و طبق چیزی که من می دونم با پایتون و MySQL هم روز اول نوشته شده.

 

TwitterTwitter:

Twitter در حال حاضر با Scala نوشته شده و یه فریم ورک هم برای لود بالانسینگ داره به نام gizzard که با همین Scala هست.

از MySQL استفاده می کنه ولی چیزی نوشته به اسم FlockDB واسه GraphDB کردن MySQL . هرچند بخشی از کارهاش رو واسه تست برده رو Neo4j. واسه اطلاعات بیشتر در مورد دیتابیس های گرافی به سایت گراف دی بی دات آی آر سر بزنید.

WikiPediaWikiPedia:

ویکی پدیا هم مثل خیلی جاهای دیگه با php و MySQL شروع کرد و الانم داره باهاشون پیش می ره. هرچند چند وقت پیش گفت می خواد بره سراغ MariaDB که یه Clone از MySQL هست.

 

 

 

 

پروژه شبیه سازی فیس بوک

شبیه زاری فیس بوک

یه پروژه ای بود چند وقت پیش انجامش دادم، که خیلی حال داد.خیلی اعصاب خورد کن بود(چون باید توی مدت زمان کمی انجام می شد. یعنی اصلا پروژه توی ۲ روز انجام شد)

توی این پروژه می خواستند چیزی شبیه فیس بوک داشته باشند،ولی برای یک باشگاه.

اینطوری ک هرکسی میاد یه پروفایل می سازه،قدرت بدنیش رو بر اساس یه سری معیار وارد می کنه،هدف تعیین می کنه،وزن و … و تاریخ رسیدن به هرکدوم رو تعیین می کنه.

بعدش می تونه آپدیت کنه،بقیه میان براش لایک و کامنت می زارن،توی نوار سمت راستش باید نشون بده آخرین آپدیت ها رو و …

از پیشرفت نمودار می کشه و کلی چرت پرت دیگه

این با php با فریم ورک CodeIgniter و قسمت جاوااسکریپتش با فریم ورک jQuery انجام شده.

بطبع از css و چیزهای دیگه هم توش استفاده شده.

سعی هم کرده بودم تا اونجایی که سوادم می کشه جلوی انواع حملات رو بگیرم، جلوی brute force,sql injection,session hijacking و …


پروفایل در شبیه سازی فیس بوک