تخطَّ إلى المحتوى

🏗️ شرح المايكروسيرفيس (Microservices)

مشروع متكامل — تصميم الخدمات

الدرس 21 من 25· ⏱ 2 دقائق قراءة

نظرة عامة

المشروع الختامي — نظام منصة تعليمية (E-Learning Platform) بالمايكروسيرفيس.

متطلبات النظام

Requirements:
  - إدارة المستخدمين (طلاب، معلمين، مشرفين)
  - إدارة الدورات والدروس
  - تسجيل الطلاب في الدورات
  - نظام الدفع والفواتير
  - تقييم ومراجعات
  - إشعارات (بريد، تطبيق)
  - لوحة تحليلات وإحصائيات
  - بحث متقدم

تحديد الخدمات

services:
  user-service:     # حسابات المستخدمين والأدوار
  course-service:   # إدارة الدورات والدروس
  enrollment-service: # التسجيل في الدورات
  payment-service:  # معالجة المدفوعات
  review-service:   # التقييمات والمراجعات
  notification-service: # إشعارات
  analytics-service: # إحصائيات وتحليلات
  search-service:   # بحث متقدم
  gateway:          # API Gateway

Bounded Contexts

// user-service — Bounded Context
class User {
  constructor(id, name, email, role) {
    this.id = id;
    this.name = name;
    this.email = email;
    this.role = role; // student | instructor | admin
  }
}

class Instructor extends User {
  constructor(id, name, email) {
    super(id, name, email, 'instructor');
    this.courses = [];
  }

  createCourse(courseData) {
    // التحقق من صلاحيات المعلم
    return courseService.createCourse(this.id, courseData);
  }
}

تصميم API لكل خدمة

user-service:
  POST   /users                    # إنشاء مستخدم
  GET    /users/:id                # بيانات مستخدم
  PATCH  /users/:id                # تحديث مستخدم
  POST   /auth/login               # تسجيل دخول
  POST   /auth/register            # تسجيل جديد

course-service:
  POST   /courses                  # إنشاء دورة
  GET    /courses                  # قائمة دورات
  GET    /courses/:id              # تفاصيل دورة
  PATCH  /courses/:id              # تحديث دورة
  POST   /courses/:id/lessons      # إضافة درس
  PATCH  /courses/:id/publish      # نشر الدورة

enrollment-service:
  POST   /enrollments             # تسجيل في دورة
  GET    /enrollments/user/:id    # دورات المستخدم
  PATCH  /enrollments/:id/progress # تحديث التقدم

payment-service:
  POST   /payments                # دفع
  GET    /payments/user/:id       # فواتير المستخدم
  POST   /refunds                 # استرداد

Event Contracts

events:
  user.registered:
    payload: { userId, email, name }
  user.enrolled:
    payload: { userId, courseId, enrollmentDate }
  course.published:
    payload: { courseId, instructorId }
  payment.completed:
    payload: { userId, courseId, amount }
  payment.refunded:
    payload: { enrollmentId, amount }
  review.submitted:
    payload: { courseId, userId, rating }

Data Store لكل خدمة

data-stores:
  user-service:         PostgreSQL
  course-service:       PostgreSQL
  enrollment-service:   MongoDB
  payment-service:      PostgreSQL
  review-service:       MongoDB
  analytics-service:    Elasticsearch + PostgreSQL
  search-service:       Elasticsearch
  notification-service: Redis (queue)

⚠️ قبل كتابة أي كود — تأكد من تصميم الـ APIs والأحداث بين الخدمات

🎯 التالي: 21-capstone-infra

شرح مشروع متكامل — تصميم الخدمات — المايكروسيرفيس (Microservices) بالعربي
مشروع متكامل — تصميم الخدماتالمايكروسيرفيس (Microservices) بالعربي · The Code Fix

هل كان هذا الدرس مفيدًا؟