Django и AWS: Что лучше - лямбда или фаргейт

В настоящее время я использую docker-compose.yml для развертывания своего django приложения на экземпляре AWS EC2. Но я чувствую необходимость в масштабировании и балансировке нагрузки.

У меня есть два варианта

  1. AWS lambda (using zappa - but heard that this is no longer maintained. There are limitations memory consumption and execution time (It was increased to 15 mins recently from the earlier 5 mins) and also 3GB memory limit (CPU increases proportionally). Also if it is used sporadically it may need to be pre-warmed (called on a schedule) for extra performance.)

  2. AWS fargate (not sure how to use the docker-compose.yml file here)

Моему приложению django требуется несколько больших библиотек, таких как pandas и т.д.

В настоящее время я использую docker-compose.yml файл для запуска приложения django. Мой файл docker-compose.yml выглядит следующим образом

Я использовал следующие образы django-app, reactjs-app, postgres, redis и nginx.

# My version of docker = 18.09.4-ce
# Compose file format supported till version 18.06.0+ is 3.7
version: "3.7"
services:
  nginx:
    image: nginx:1.19.0-alpine
    ports:
      - 80:80
    volumes:
      - ./nginx/localhost/configs:/etc/nginx/configs
    networks:
      - nginx_network

  postgresql:
    image: "postgres:13-alpine"
    restart: always
    volumes:
      - type: bind
        source: ../DO_NOT_DELETE_postgres_data
        target: /var/lib/postgresql/data
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      PGDATA: "/var/lib/postgresql/data/pgdata"
    networks:
      - postgresql_network

  redis:
    image: "redis:5.0.9-alpine3.11"
    command: redis-server
    environment:
      - REDIS_REPLICATION_MODE=master
    networks: # connect to the bridge
      - redis_network

  celery_worker:
    image: "python3.9_django_image"
    command:
      - sh -c celery -A celery_worker.celery worker --pool=solo --loglevel=debug
    depends_on:
      - redis
    networks: # connect to the bridge
      - redis_network
      - postgresql_network

  webapp:
    image: "python3.9_django-app"
    command:
      - sh -c python manage.py runserver 0.0.0.0:8000
    depends_on:
      - postgresql
    stdin_open: true # Add this line into your service
    tty: true # Add this line into your service
    networks:
      - postgresql_network
      - nginx_network
      - redis_network

  node_reactjs:
    image: "node16_reactjs-app"
    command:
      - sh -c yarn run dev
    stdin_open: true # Add this line into your service
    tty: true # Add this line into your service
    networks:
      - nginx_network

networks:
  postgresql_network:
    driver: bridge
  redis_network:
    driver: bridge
  nginx_network:
    driver: bridge

и доступ с помощью

domain-name:80 for accessing reacts app
api.domain-name:80 for accessing the django rest apis

который я настроил в nginx.

Итак, в моем сценарии, как я могу перейти на AWS

Вернуться на верх