واحدة من اكبر المشكلات في بناء السوفتوير و اللي بقابلها كتير هي مشكلة انك تستخدم tech stack كبير و كتير من غير تفكير كويس هل الستاك ده كدا مناسب علي مستوي الشركه، المهندسين اللي هيشتغلوا، المنتج نفسه (ثريد)
مع ظهور tools & technologies جديده في بناء السوفتوير، بقت كل الشركات اساسي انها تستخدم اكتر من programming language, framework, tool. و رغم ان فيه انظمه من المنطقي جدا فيها استخدام التنوع ده. الا ان الغالبيه العظمي مش محتاجينه اطلاقا.
لو اخدنا مثال انك بتشتغل علي موقع دار نشر كتب معمول Laravel & MySQL. والدنيا شغاله تمام بس ظهرت مشكله مثلا ان صفحه عرض مؤلفات كاتب بدات تبقي بطيئه شويه بسبب ان عدد المؤلفين و الكتب زاد.
فجاه تلاقي حد بيقولك احنا كدا نعمل Caching Service نحط عليها المؤلفين بالكتب بتاعتهم علشان تبقي سريعه.
بس هو اكيد انك تحط caching layer زياده ف البروجكت بتاعك مش ببلاش
مثلا انت محتاج تشوف حجم الداتا اللي هتعملها كاش علشان تشوف هل السيرفر اللي معاك هيشيل ولا هتزود سيرفرات جديدة.
بس هو اكيد انك تحط caching layer زياده ف البروجكت بتاعك مش ببلاش
مثلا انت محتاج تشوف حجم الداتا اللي هتعملها كاش علشان تشوف هل السيرفر اللي معاك هيشيل ولا هتزود سيرفرات جديدة.
هل هنخزن كل المؤلفين بالكتب بتاعتهم في الكاش ولا هنخزن بيانات المؤلفين اللي الناس بتفتح الصفحات بتاعتهم بس و نخزنها لفتره موقته LRU caching
- طيب هل نحط الكاشينج سيرفس دي علي سيرفر واحد؟
- طيب لو السيرفر ده حصل فيه مشاكل ووقع؟
- هنخليهم علي اكتر من سيرفر؟ طيب هنتاكد ان البيانات موجوده عليهم كلهم ازاي؟
- طيب لو البيانات بقت كبيره و محتاجين نقسمهم علي اكثر من سيرفر sharding. هنعمل ده ازاي؟
- طيب لو السيرفر ده حصل فيه مشاكل ووقع؟
- هنخليهم علي اكتر من سيرفر؟ طيب هنتاكد ان البيانات موجوده عليهم كلهم ازاي؟
- طيب لو البيانات بقت كبيره و محتاجين نقسمهم علي اكثر من سيرفر sharding. هنعمل ده ازاي؟
كل دي حاجات محتاج تحسبها قبل ما تاخد خطوه انك تزود component في الابلكيشن اللي بتعمله و الا هتتفاجئ بكل ده علي ال production و الدنيا هتخبط في بعض جامد
في حين ان المشكله ممكن تكون انك بس نسيت تعمل index علي ال foreign key اللي بيربط الناشر بالكتب علشان تحل المشكله و الدنيا ترجع اسرع من الاول كمان (حصلت معايا قبل كدا 😄)
قيس نفس الكلام ده علي اي تكنولوجي او حاجه تستخدمها. عاوز تستخدم Kubernetes علي الابليكشن الوحيد اللي عليه يا دوب ١٠٠ يوزر. طب هل هو مناسب؟ هل عندنا معرفه كفايه بيه؟ و ازاي نشغله؟ و ايه مشاكله اللي ممكن نقابلها؟
عاوزين نشتغل Microservices بقي و نقسم كل سيرفس لوحدها و الدنيا كلها تكلم بعضها Kafka علشان تبقي الدنيا كلها independent و ان سيرفس واحده لما تقع متوقعش الباقي.
طب هل انت اصلا فاهم ال Microservices بالكونسبتس بتاعته؟ عارف مشاكله؟ هل عندك فريق يقدر يشتغل علي الحاجات دي كلها و يبقي فيه documentation واضح و Architecture الناس قادرة تقيم منه الشغل اللي هيتعمل و النتيجه الكيلة؟
غير كدا ف موضه التريند و الانجنيير اللي بيحط PHP, Go, Java, Python, NodeJS, MySQL, NoSQL, Docker, Kubernetes في كل بروجكت علي حاجات مش مستاهله اصلا كل ده هو تلبيسه لاي شركه هيشتغل فيها و اللي شايفنهم حوالينا كتير.
و ف الاخر دي وجهه نظر مبنيه علي مواقف و ناس اتعاملت معاها او اعرفها و قد يكون رايي خطا بس حبيت اتكلم عن النقطه دي و نسمع لو فيه اراء تانيه
جاري تحميل الاقتراحات...