فصل ششم: استقرار و آینده

استقرار میکروسرویس‌ها با Docker Compose

یک محیط توسعه‌ی چندسرویسی

پیش از رفتن به سراغ ابزارهای پیچیده‌ی ارکستراسیون، docker compose (که در دوره‌ی داکر آموختیم) گزینه‌ای عالی برای اجرای یک مجموعه‌ی کوچک از میکروسرویس‌ها در محیط توسعه یا حتی محیط تولید با مقیاس محدود است:

services:
  gateway:
    build: ./gateway
    ports:
      - "80:80"
    depends_on:
      - orders
      - catalog

  orders:
    build: ./order-service
    environment:
      - DATABASE_URL=postgres://orders_db:5432/orders

  catalog:
    build: ./catalog-service
    environment:
      - DATABASE_URL=postgres://catalog_db:5432/catalog

  rabbitmq:
    image: rabbitmq:3-management

در این فایل، هر میکروسرویس یک بلوک مستقل با Dockerfile مخصوص خودش دارد و همگی از طریق network داخلی docker compose با هم ارتباط برقرار می‌کنند. این ساختار برای تیم‌های کوچک تا متوسط با تعداد محدودی سرویس (مثلاً کمتر از ده) کاملاً کافی و قابل‌نگهداری است.

محدودیت‌های docker compose در مقیاس بزرگ

اما وقتی تعداد سرویس‌ها زیاد می‌شود یا نیاز به مقیاس‌پذیری خودکار (Auto-scaling)، توزیع بار بین چند سرور فیزیکی، بازیابی خودکار از خرابی، و بروزرسانی بدون قطعی (Rolling Update) پیدا می‌کنید، docker compose که برای یک سرور واحد طراحی شده، دیگر کافی نیست و باید به سراغ ابزارهای ارکستراسیون واقعی مثل Kubernetes بروید که در درس بعد معرفی می‌شود.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.