27

كيف نبني #1: كيف نبني تويتر؟

هذا الموضوع ليس طلباً للمساعدة بل موضوع لمشاركة الخبرات، ودعونا نفكر كيف نقوم ببناء خدمة معينة ومن ثم نقترح التقنيات المختلفة التي يمكن أن نستخدمها في بناء خدمة مشابهة، ولم علينا أن نتجنب إستخدم لغة برمجة معينة او تقنية قواعد بيانات معينة.

اليوم فكرت بأن نبدأ بتويتر:

  • ماهي لغات البرمجة المناسبة؟

  • قواعد البيانات؟

  • هل سيكون هناك أكثر لغة برمجة مستخدمة؟

  • كيف سيتم خزن البيانات؟

بالطبع توجد بعض المحاضرات التي تتحدث عن تويتر وكيف تم بناؤه ولكن الفكرة ليس تقليدهم بل إقتراح حلول مناسبة شبيهة أو بديلة مع شرح الأسباب.


اعتقد بعدم أهمية نوعية اللغة مقارنة بطريقة تطبيقها على المشروع المراد تنفيذه، والمفترض في حالة تطوير مشروع كبير جداً استخدام عدة لغات في نفس الوقت في افضل مكان له، مثلا نستخدم Node.js مع socket io في تنفيذ الخواص التي تعمل دائماً مثل push notification و chat. و PHP لعرض الصفحات في البداية مثلاً مع مسرعاتها الخاصة مثل Alternative PHP Cache و spdy. وبالنسبة لقواعد البيانات فالاسهل هي mysql لكن لا تخدم بطريقة سهله في حالة وجود استخدام كبير ومعلومات كثيرة , يمكن استخدام No sql db للتوسع مثل MongoDB أو cassandra.

غالباً المواقع الكبيرة تعمل على تقليل كمية الكود من خلال استخدام متكرر لل css ومكتبات الجافا سكربت و Jquery وعن طريق حفظها في الكلاينت باستخدام ال Cache. ومنها اذكر بعضها :

1- ارسال المعلومات للسيرفر والتأكد من صحة البيانات المدخلة Validation والتعامل مع الاخطاء بشكل اوتوماتيكي.

2- دوال لعرض المعلومات وقولبتها بدون الحاجة لكتابة دالة في كل صفحة وتكون قابلة للوصول في كل الموقع.

واحب أن اؤكد أن المفترض عند بداية مشروع جديد مثل تويتر وغيره, أن تبدأ بالاسهل والي ينفذ العمل بشكل اسرع, وليس الافضل، وحسب كلام مؤسس لعبة second life عند التقائي به, أن السرعة أهم من الجودة.