How-To Guides

استقرار آپاچی سوپرتس: راهنمای جامع برای تیم‌های داده مدرن

آپاچی سوپرتس به عنوان یکی از قدرتمندترین و محبوب‌ترین ابزارهای هوش تجاری (BI) متن‌باز موجود در امروز ظهور کرده است. این ابزار به دلیل رابط کاربری مدرن، گزینه‌های بصری گسترده و سازگاری با طیف وسیعی از پایگاه‌های داده SQL، انتخابی ایده‌آل برای مهندسان و تحلیلگران داده است که به دنبال دموکراتیک کردن دسترسی به داده‌ها در سازمان‌های خود هستند. با این حال، راه‌اندازی سوپرتس در یک محیط تولید می‌تواند به دلیل معماری پیچیده آن که شامل اجزای متعددی مانند برنامه Flask، کارگران Celery و یک پایگاه داده متادیتا است، ترسناک باشد.

در این راهنما، ما شما را در فرآیند استقرار آپاچی سوپرتس با استفاده از Docker Compose راهنمایی می‌کنیم. این روش برای توسعه‌دهندگان متوسط تا پیشرفته توصیه می‌شود زیرا محیطی تکرارپذیر، ایزوله و مقیاس‌پذیر را بدون شلوغ کردن سیستم میزبان شما فراهم می‌کند. در پایان این پست، شما یک نمونه کاملاً کاربردی از سوپرتس خواهید داشت که به صورت محلی یا روی یک سرور از راه دور در حال اجراست.

پیش‌نیازها و راه‌اندازی محیط

قبل از ورود به فرآیند استقرار، اطمینان حاصل کنید که محیط توسعه شما شرایط زیر را دارد:

  • Docker و Docker Compose: اطمینان حاصل کنید که هر دو نصب و در حال اجرا هستند. می‌توانید این موضوع را با اجرای docker --version و docker-compose --version بررسی کنید.
  • PostgreSQL: سوپرتس به یک پایگاه داده رابطه‌ای برای متادیتای خود نیاز دارد. اگرچه Docker Compose می‌تواند یک کانتینر Postgres را راه‌اندازی کند، اما در محیط تولید، باید از یک سرویس مدیریت شده یا یک نمونه پایگاه داده مستقل استفاده کنید.
  • Redis: این ابزار برای کش کردن و به عنوان بک‌اند نتیجه برای وظایف Celery استفاده می‌شود.
  • برنامه Flask: هسته برنامه سوپرتس.

برای هدف این آموزش، ما از یک پیکربندی Docker Compose یکپارچه استفاده خواهیم کرد که شامل تمام خدمات ضروری است. این گزینه برای محیط‌های توسعه و پیش‌تولید (Staging) عالی است.

ایجاد پیکربندی Docker Compose

یک دایرکتوری جدید برای پروژه خود ایجاد کنید و یک فایل docker-compose.yml را راه‌اندازی کنید. این فایل خدمات، شبکه‌ها و حجم‌های مورد نیاز برای عملکرد صحیح سوپرتس را تعریف می‌کند.

version: '3.8'
services:
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    networks:
      - superset_network

  postgres:
    image: postgres:13
    environment:
      POSTGRES_USER: superset
      POSTGRES_PASSWORD: superset_pass
      POSTGRES_DB: superset
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    networks:
      - superset_network

  superset:
    image: apache/superset:latest
    restart: always
    ports:
      - "8088:8088"
    command: ["/app/docker/docker-entrypoint.sh"]
    environment:
      SUPERSET_SECRET_KEY: 'super-secret-key-for-production'
      DATABASE_HOST: postgres
      DATABASE_PORT: 5432
      DATABASE_USER: superset
      DATABASE_PASSWORD: superset_pass
      DATABASE_DB: superset
    volumes:
      - superset_data:/app/superset_home
    depends_on:
      - redis
      - postgres
    networks:
      - superset_network

volumes:
  postgres_data:
  superset_data:

networks:
  superset_network:
    driver: bridge

راه‌اندازی اولیه و ایجاد کاربر

پس از آماده بودن فایل docker-compose.yml، خدمات را با دستور زیر شروع کنید:

docker-compose up -d

پس از بالا آمدن و اجرای کانتینرها، باید پایگاه داده را راه‌اندازی اولیه کنید و یک کاربر مدیر ایجاد نمایید. دستورات زیر را در ترمینال خود اجرا کنید:

# راه‌اندازی اولیه اسکیمای پایگاه داده
docker-compose exec superset superset db upgrade

# ایجاد یک کاربر مدیر
docker-compose exec superset superset fab create-admin \
  --username admin \
  --firstname Admin \
  --lastname User \
  --email admin@example.com \
  --password admin

دستور superset fab create-admin برای ایمن‌سازی استقرار اولیه شما حیاتی است. دستور superset db upgrade اطمینان حاصل می‌کند که اسکیمای پایگاه داده با نسخه سوپرتسی که اجرا می‌کنید به‌روز است.

ملاحظات محیط تولید

در حالی که تنظیمات فوق برای توسعه عالی است، استقرارهای محیط تولید به سخت‌افزارسازی (Hardening) اضافی نیاز دارند:

  • امنیت: هرگز از کلیدهای پیش‌فرض استفاده نکنید. یک کلید قوی و تصادفی برای SUPERSET_SECRET_KEY تولید کنید.
  • پروکسی معکوس: Nginx یا Traefik را در جلوی سوپرتس قرار دهید تا پایان‌دهی SSL و تعادل بار را مدیریت کند.
  • جداسازی پایگاه داده: کانتینرهای Postgres و Redis را به سرویس‌های خارجی و مدیریت شده منتقل کنید تا در دسترس بودن بالا و پایداری داده‌ها را تضمین کنید.
  • مقیاس‌پذیری: از مقیاس‌پذیری افقی پاد (Kubernetes) یا Docker Swarm برای مقیاس‌پذیری مستقل خدمات superset و celery-worker بر اساس بار کاری استفاده کنید.

نتیجه‌گیری

استقرار آپاچی سوپرتس از طریق Docker Comse فرآیندی روان است که به توسعه‌دهندگان اجازه می‌دهد به سرعت شروع به کار کنند. با بهره‌گیری از کانتینرسازی، شما سازگاری را در محیط‌های توسعه، پیش‌تولید و تولید تضمین می‌کنید. با افزایش نیازهای داده‌ای خود، به یاد داشته باشید که معماری خود را باگ‌زدایی کنید تا شامل نمونه‌های پایگاه داده جداگانه، استراتژی‌های کشینگ قوی و پروکسی‌های معکوس امن شود. با استقرار سوپرتس، تیم شما آماده است تا پتانسیل کامل داده‌های خود را از طریق بصری‌سازی‌های شهودی و قدرتمند آزاد کند.

Share: