I’m weak at CI/CD

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

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

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

Continue reading

من 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 يعمل بسلاسة, باستثناء مشكلة بسيطة وهي بعض ادوات قوقل الخاصة باقياس الاداء والمراقبة وبعض ملفات التحديثات تاخذ مساحة كبيرة بعد التحديثات واحتاج احذفها يدويا, حتى لو عملت ترقية للمساحة ارجع لنفس النتيجة بعد فترة, لكن كنت احلها بتنفيذ امر بسيط كل فترة وبس.

Continue reading

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

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

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

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

Continue reading

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

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

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

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

Continue reading

سوالف #6 مشروع التخرج و nodeJS

تكلمت في اخر بوست عن مشروع التخرج كمادة ومتطلباتها وطريقة اجتيازها وان المطلوب في الاخير هو تنفيذ عملي لفكرة تكون بشكل او بآخر حل لمشكلة او تطوير حل متوفر حالياً, فكرة مشروع تخرجي عبارة عن منصة خاصة بطلاب الكلية توفر كل مايحتاجة الطالب من مصادر تعليمية (كتب, سلايدات وغيرها) و برامج وبيئات تطوير (Netbeans, Eclips, Android Studio, MySQL,PacketTracer) و برامج Office وغيرها حسب حاجة الطالب وجدولة الدراسي, بمعنى ان كل طالب سيجد الكتب الخاصة بالمواد في الترم الدراسي الحالي وسيجد البرامج والادوات الي يحتاجها مع تلك المواد.

طبعاً ربط الكتب والبرامج مع المواد كان بناء على مادرسته خلال الاعوام السابقة وما احتجته كطالب ومن خلال نتائج الاستبيانات في فترة بناء التوثيق لمشروع التخرج.

كيف؟

التطبيق يجب ان يكون مرتبط  بقاعدة بيانات طلاب الكلية وعند استخدام الطالب للتطبيق (تسجيل الدخول باستخدام الرقم الجامعي) يتم جلب بيانات الجدول الدراسي للترم الحالي عن طريق الرقم الجامعي ثم تكون عملية انشاء بيئة العمل (تحميل الكتب والبرامج والادوات لنظام التشغيل), يتم تحميل سطح المكتب الخاص بالطالب ويكون جاهزا للاستخدام عن بعد عن طريق المتصفح  (_0

Continue reading

docker containers

كمديري انظمة, مطورين , مبرمجين أو حتى مستخدم عادي دائماً مانصل لنقطة معينة في عملنا لنستوعب اننا نكرر هذه الخطوات كثيرا بين فترة و اخرى!, احيانا اقول هذا الشغل سويته الظهر/العصر/امس/ الاسبوع الي راح (المقصد انه عملته اكثر من مره) ليش اكرره الحين؟ او احيان يحصل خطأ بسيط واعيد كل هذا!

او احياناً ابغى اسوي شيء (غالباً شغلي اخذ نسخ من مطورين قت هب واعدل) لكنه يخبص النظام عندي او ينزل ملفات وبكجات تخرب شغلي وسلبيات كثيرة, احتاج عزل او بيئة ثانية اعمل فيها الشغل, لكل المشكلتين السابقة كنت غالباً استخدم نظام افتراضي او في اخر سنتين استخدم سيرفر الـ nas الي عندي.

حاويات لينكس بشكل عام و دوكر بشكل خاص حلت مشاكل كثيرة و فتحت افكار وحلول ومجالات كثير قاعد استفيد منها كل يوم وبنيت مشروع تخرجي بالكامل عليها -ان شاء الله هالصيف نتخرج (_36 – , حل مشكلة التكرار او ايجاد عزل مناسب شيئين او مشكلتين تقدر تحلها بإستخدام دوكر لكن دوكر يقدم حلول لكثير من الحالات – These are not the best use-cases, docker is bigger than that.

Linux containers

بإختصار وللتسهيل الحاوية هي مثل النظام الافتراضي Virtual machine ولكن خفيف جداً (يحتوي على الملفات الاساسية لتشغيل النظام و يتشارك الكرنال مع النظام الاساسي) لا يستهلك ذاكرة ومعالجة عالية, الحاوية عند تشغيلها لا تستغرق اكثر من ثانية واحدة! نعم ثانية واحدة لذلك لن ازيد في التحدث عن حاويات لينُكس.

Continue reading