I’m weak at CI/CD

من بداية السنة الميلادية احتجت اسوي مجموعة تعديلات على بعض التطبيقات asp.net (core) وفي هذي الفترة القصيرة كانت عملية النشر للتعديلات مقرفة وتاخذ وقت, فكنت انقل ملفات واكواد عملية البناء build للسيرفر واعمل اعادة تشغيل للتطبيق 🤷🏻‍♂️

في عملية التطوير والتكامل المستمر CI بمجرد عمل commit لاي تعديل لبرانش البرودكشن او release فالمفروض يكون عندك اتمتة بحيث تصير عملية الـ build بشكل تلقائي وفي حال نجاحها يتم نقل المخرجات بشكل تلقائي ايضاً CD لمكان عمل التطبيق بدون اي مجهود اضافي من المستخدم.

وانا ما فكرت من قبل اسوي اتمتة كاملة لهذي الفكرة, بعد الي صار معي في هالفتره قلت ابدأ اعمل حاجة بسيطة من خلال visual studio و دوكر بدون ادوات مخصصة لعمليات CI/CD لأني اصلا مشغل التطبيق على حاوية فبيكون اختيار جيد لي كبداية 🙄

اكمل القراءة

من Google cloud إلى Digital Ocean وفتح المنافذ في راوتر 5G

قبل 3 سنوات نقلت هذه المدونة من استضافة مشتركة بسيطة إلى Google cloud platform -نختصرها gcp- , وكان الهدف الرئيس من النقل هو تجربة وتعلم خدمات السحابة بشكل فعلي وفي بيئة عمل production وكمان استفيد من مساحة تخزين اكبر و نقل بيانات اكبر وسعر اقل.

داخل السحابة الخيارات كثيرة لبناء المدونة منها التطبيقات او الحاويات (managed apps/contianers) وعملها بسيط وبتكون شبه جاهزة, لكن قررت ابني كل شي من الصفر باستخدام جهاز افتراضي VM من خلال Compute Engine في gcp.

اخترت اصغر خطة f1-micro وكانت تكلفتها الشهرية تقريباً 7 دولار مع 10GB وبدون احتساب نقل البيانات outbound traffic حيث تسعيرته متغيرة حسب الاستخدام.

ثبت قواعد البيانات والسيرفر والمدونة ونقلت كل البيانات, ومن ذاك الوقت حتى قبل اسبوعين كان كل شي على gcp يعمل بسلاسة, باستثناء مشكلة بسيطة وهي بعض ادوات قوقل الخاصة باقياس الاداء والمراقبة وبعض ملفات التحديثات تاخذ مساحة كبيرة بعد التحديثات واحتاج احذفها يدويا, حتى لو عملت ترقية للمساحة ارجع لنفس النتيجة بعد فترة, لكن كنت احلها بتنفيذ امر بسيط كل فترة وبس.

اكمل القراءة

من .Net Framework إلى .Net Core:كيف قللت التكلفة بنسبة 98%

في 2016 اطلقت مايكروسوفت إطار عمل جديد مبني من الصفر بإسم .net core (دوت نيت كور) والهدف منه تحويل إطار العمل الاساسي .net framwork (دوت نيت فريمورك) لبيئة مفتوحة المصدر, متوافقة وداعمة لمختلف الانظمة, خفيفة وقابلة للنقل بسهولة.

خلال السنة الماضية تم اطلاق النسخة الاحدث من إطار العمل الجديد بإسم .net 5 (دوت نيت 5) والتخلص من كلمة core وسيكون اطار العمل هذا هو الاساس الذي يتم تطويره واضافة خصائص جديدة له, وسيتم ايقاف تطوير .net framwork عند الاصدار 4.8 مع دعم تحديثات الامان فقط.

هذا الفرق بين النسختين بشكل عام, لكن ايش علاقة تقليل التكاليف؟ نذكر بعض تفاصيل النسختين بشكل سريع 💨🏃🏻‍♂️

اكمل القراءة

كيف تستضيف تطبيقك محلياً Self-hosting

تستخدم خدمات اونلاين كثير؟ تدوين, بريد الكتروني او حتى تخزين ملفات على السحابة. أكيد كلنا نستخدم بعض الخدمات وبشكل يومي وتقريباً كلها خدمات جاهزة للاستخدام مباشرة و نقدر نبدأ في ارسال الايملات على Gmail او نكتب تدوينة على wordpress او نرفع ملفات على dropBox او حتى نغرد على تويتر, كل هذا نسويه بسهولة بمجرد التسجيل في الخدمة المرغوبة.

طيب.. تبي تبني احد الخدمات السابقة بنفسك من الصفر؟ تبي تسخدم سطر الاوامر وتعدل ملفات اعدادت؟ تبي كل فترة تسوي تحديثات يدوية وممكن تخبص عليك و تضطر تعيد كل شي من جديد؟ تبي وجع راس؟! 😬 لالا معليش مش وجع راس.. تبي تتعلم احدى طرق استضافة التطبيقات في الشركات؟ تبي تشغل تطبيق خاص فيك اونلاين؟ تبي تسوي لك مدونة زي هذي اونلاين بدون سيرفر خاص او بدون خدمة مدفوعة وتتحكم في كامل بياناتك؟

واحد من المصطلحات الشائعة في الوسط التقني وبين المطورين او اصحاب السيرفرات المنزلية هو Self-hosting وهذا هو موضوعي اليوم وبوضح ايش هو و الهدف منه وكيف تقدر تستفيد منه.

اكمل القراءة

سيرفر جديد ونظام جديد بس هذي المرة Custom Build

👀
في احد هنا

سنتين ونص من اخر تدوينه وكانت خاصة بأيش؟ خاصة بالسنولوجي سيرفر و الي خدمني لأكثر من 5 سنوات ومازال، كان الوحيد والفريد من نوعه في حياتي وكان اساسي في استخدامات كثيرة والان احيل للتقاعد كسيرفر اساسي وصار الملاذ الاخير وقت المشاكل offline-onsite-last-resort-backup وحل مكانه R1Land والي بأتكلم عنه بعدين.

السيرفر القديم عبارة عن صندوق صغير يشيل 4 هاردسكات وغير قابل للترقية (باستثناء الرام) او اضافة كروت توسعه مع معالج entry-level بأربع انويه باستهلاك طاقة كلي 30-40 واط! بصراحة كان مدخل ممتاز لعالم الـ NAS ونظام تشغيل السنولوجي DSM كان خادمني بشكل كامل ومميز (كنت اظن) رغم السعر المرتفع بالنسبة للمواصفات, في موديلات بسعر معقول لكن حدها تكون nas فقط لاغير.

شغلت السيرفر القديم بثلاث هاردسكات فقط وكان في درج مشبوك مباشرة في الكهرباء وعلى كثر انقطاع الكهرباء ظل صامد ومعروف ان الهاردسكات حساسة جداً جداً لانقطاع الكهرباء المفاجيء, بعد 3 سنوات ونص تقريبا فللت الهاردسكات الثلاث وفي نفس الوقت طلع لي اول bad sector ⚡️ والي كان خلفه العشرات منهم , اضفت الهاردسك الرابع وكانت هذي لحظة الحقيقة تم اضافة الهاردسك وبدأت عملية إعادة بناء المصفوفة لأربع هاردسكات, تعتبر هذي العملية قوية/خطيرة على الهاردسكات وتشغلة بكامل طاقته وتأثر على الحياة الافتراضية له لكنها ضرورية حتى تعمل توسعة بالهاردسك الجديد ومع اخذ البادسكتورز بالحسبان………. TLDR تم الامر بنجاح, تم بدون مشاكل تقريباً.

في نص 2019 جاتني هذي الرسالة والمشكلة مو في قرب انتهاء المساحة المشكلة اني ماعاد اقدر اوسع نهائياً (REMEMBER! only 4 HDD) و من وقتها بديت التفكير في التوسعة, الخدمات الجديدة الي ممكن استخدمها و الأهم من كل ذا كيف اتجنب حالة مثل كذا في المستقبل.

اكمل القراءة

تثبيت rtorrent على سيرفر synology باستتخدام docker

قبل فترة شرحت طريقة تركيب برنامج rtorrent وواجهة rutorrent بشكل يدوي وبطريقة كانت نوعاً ما متعبة وتحتاج فهم لسطر الاوامر خصوصاً عند التعطل احيانا مع التحديثات, بالرغم من وجود ملف تثبيت مباشر من خلال الاستور مقدم من مستودعات Synocommunity إلا انني واجهت ايضاً بعض المشاكل والتي قد تختلف من مستخدم لآخر ولصعوبة توضيح حلها بطريقة واضحة لذلك لم اتطرق لها.

تكلمت كثير عن حاويات لينكس هنا و هنا وانها تقنية رائعة في مجال dev-ops او حتى للمستخدم العادي, و من قبل سنة تقريباً بدأت استخدام docker بشكل مباشر على اي جهاز وفي اي مشروع اعمل عليه حتى لو مجرد تشغيل قاعدة بيانات لتفادي التثبيت وعوار الراس :)

دوكر منصة سطر اوامر بالكامل ولكن شركة synology وفرت GUI لعملائها في نظام تشغيلها وصار استخدامه سهل لاي شخص, الان بشرح طريقة انشاء حاوية تحتوي على برنامج التورنت الشهير rtorrent كذلك يحتوي على واجهة ويب rutorrent و معظم الاضافات المهمة مثل اضافة auto-dl وبطريقة بسيطة وبدون اي اوامر في الطرفية.

اكمل القراءة