انتقل إلى المحتوى الرئيسي

MODULE 12 - النشر والإنتاج

مرحبًا بكم في الوحدة 12! 🚀​

تطبيقك يعمل في التطوير... لكن كيف تضعه في الإنتاج؟ يغطي هذا الوحدة دورة النشر بالكامل: التغليف، Docker، CI/CD، والسحابة.


🎓 أهداف التعلم​

في نهاية هذه الوحدة، ستكون قادرًا على:

  1. ✅ إعداد تطبيق للإنتاج
  2. ✅ إنشاء صور Docker محسّنة
  3. ✅ تكوين خط أنابيب CI/CD
  4. ✅ النشر على السحابة (Heroku، Railway، AWS)
  5. ✅ إدارة التكوينات حسب البيئة

📚 المتطلبات الأساسية​

قبل أن تبدأ هذه الوحدة، يجب أن تكون قد:

  • ✅ أكملت الوحدات من 1 إلى 11
  • ✅ تم تثبيت Docker Desktop
  • ✅ لديك حساب GitHub
  • ✅ أساسيات Git (commit، push، branches)

🗺️ خطة الوحدة​

الجزء النظري (4 فصول)​

الفصل 1: التحضير للإنتاج​

المدة: 45 دقيقة

المحتوى:

  • JAR قابل للتنفيذ مقابل WAR
  • ملفات تعريف Spring (dev، prod، test)
  • التكوين الخارجي
  • متغيرات البيئة
  • أمان الأسرار

لماذا هو مهم؟ إعداد التطبيق بشكل صحيح


الفصل 2: حاويات Docker​

المدة: 1 ساعة

المحتوى:

  • Dockerfile لـ Spring Boot
  • بناء متعدد المراحل
  • Docker Compose
  • التحسينات (الطبقات، JVM)
  • الصور الخفيفة

لماذا هو مهم؟ معيار الصناعة


الفصل 3: CI/CD مع GitHub Actions​

المدة: 1 ساعة

المحتوى:

  • مقدمة عن CI/CD
  • GitHub Actions workflows
  • البناء والاختبارات الآلية
  • نشر صور Docker
  • النشر التلقائي

لماذا هو مهم؟ أتمتة عمليات النشر


الفصل 4: النشر السحابي​

المدة: 45 دقيقة

المحتوى:

  • Heroku / Railway
  • AWS (Elastic Beanstalk، ECS)
  • أساسيات Kubernetes
  • قواعد البيانات المدارة
  • المراقبة في الإنتاج

لماذا هو مهم؟ وضعه على الإنترنت


الجزء العملي (2 تمارين)​

TP12.1: Dockerisation كاملة​

المدة: 1 ساعة و30 دقيقة

الهدف: تحويل التطبيق إلى حاوية

ستقوم بـ:

  • إنشاء Dockerfile محسّن
  • بناء صورة متعددة المراحل
  • تكوين Docker Compose (تطبيق + قاعدة بيانات)
  • اختبار محلي

TP12.2: خط أنابيب CI/CD​

المدة: 1 ساعة و30 دقيقة

الهدف: أتمتة النشر

ستقوم بـ:

  • إنشاء workflow لـ GitHub Actions
  • أتمتة الاختبارات والبناء
  • النشر على Docker Hub
  • النشر على Railway/Heroku

📊 المدة الإجمالية​

النوعالمدة
نظري3 ساعات و30 دقيقة (4 فصول)
عملي3 ساعات (2 تمارين)
الإجمالي6 ساعات و30 دقيقة (~2 جلسات)

🎯 ما الذي ستفهمه​

قبل هذه الوحدة​

# تطوير محلي فقط 😰
mvn spring-boot:run

# "كيف أضع هذا على الإنترنت؟"
# "ما هو Docker؟"
# "CI/CD؟"

بعد هذه الوحدة​

# بناء تلقائي عند كل دفع
git push origin main

# → GitHub Actions:
# ✅ اختبارات ناجحة
# ✅ صورة Docker مبنية
# ✅ منشورة على Docker Hub
# ✅ منشورة في الإنتاج

# تطبيقك متاح على:
# https://my-app.railway.app
# Dockerfile محسّن
FROM eclipse-temurin:17-jre-alpine
COPY target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

🚀 لماذا هذه الوحدة أساسية​

1. مهارة لا غنى عنها​

عروض العمل 2024:
✓ "Docker" - 90% من العروض
✓ "CI/CD" - 85% من العروض
✓ "Cloud (AWS/GCP/Azure)" - 80% من العروض
✓ "Kubernetes" - 60% من العروض

2. ثقافة DevOps​

قبل:
Dev: "يعمل على جهازي"
Ops: "لا يعمل في الإنتاج"

الآن (DevOps):
- نفس البيئة في كل مكان (Docker)
- نشر تلقائي (CI/CD)
- البنية التحتية ككود

3. السرعة​

بدون CI/CD:
- نشر يدوي: 2 ساعات
- خطر الخطأ البشري
- توتر يوم الجمعة

مع CI/CD:
- نشر تلقائي: 5 دقائق
- قابل للتكرار
- انشر عندما تريد

🗺️ التقدم في التدريب​

الوحدة 12 = تطبيقك متاح للعالم!


📖 كيفية التعامل مع هذه الوحدة​

التقدم الموصى به​

  1. الفصل 1 → فهم التغليف
  2. الفصل 2 + TP12.1 → إتقان Docker
  3. الفصل 3 + TP12.2 → خط أنابيب CI/CD
  4. الفصل 4 → خيارات النشر

المتطلبات التقنية​

# تحقق من أن لديك:
docker --version # Docker Desktop
git --version # Git
java -version # Java 17+
mvn -version # Maven

✅ التقييم الذاتي​

قبل أن تبدأ، أجب:

  1. هل لديك Docker مثبت؟ ☐ نعم ☐ لا
  2. هل لديك حساب GitHub؟ ☐ نعم ☐ لا
  3. هل تعرف ما هو Dockerfile؟ ☐ نعم ☐ لا
  4. هل تعرف CI/CD؟ ☐ نعم ☐ لا
  5. هل سبق لك نشر تطبيق؟ ☐ نعم ☐ لا

هذه الوحدة ستجعلك متمكنًا من كل ذلك!


🎯 الخطوة التالية​

جاهز للنشر في الإنتاج؟

➡️ ابدأ مع الفصل 1: التحضير للإنتاج


⬅️ العودة إلى خطة الدورة