Сервис AWS Fargate: масштаб до нуля?

Недавно я перенес небольшое веб-приложение в AWS, используя Fargate и Aurora Serverless. Приложение не получает много трафика, поэтому моя цель - сэкономить, пока его никто не использует. Aurora Serverless, кажется, делает это для меня на стороне БД автоматически.

Однако я изо всех сил пытаюсь найти какие-либо ресурсы о том, как масштабировать сервис Fargate до нуля.

Перед ним есть ALB, и я знаю, что при масштабировании можно использовать счетчик ALB-запросов... поэтому в идеале, если в течение 10 минут, в среднем, 0 запросов, служба будет уменьшена до нуля. Затем, когда приходит запрос, он запускает масштабирование одной задачи для службы.

2 ответа

Решение

Я не уверен, как именно это будет работать. Если целевых ALB нет, ALB возвращает ошибку 503, поэтому ваши посетители увидят страницу с ошибкой вместо вашего веб-сайта. Это может вызвать запуск контейнера Fargate, но это часто занимает десятки секунд, иногда даже более минуты. К тому времени, когда твой контейнер закончен, твой посетитель, вероятно, ушел.

Если вам нужен действительно безсерверный веб-сайт с нулевыми затратами на простое, вам придется реализовать его с помощью API.

  • Поместите ваши файлы интерфейса (HTML, CSS, JS) в S3
  • Загрузите ваш динамический контент через API
  • Реализовать динамическую функциональность в лямбда-функциях
  • Используйте API-шлюз для вызова Lambdas
  • БД может быть Aurora Serverless или DynamoDB On-Demand

Эта архитектура ничего не стоит в режиме ожидания и обеспечивает мгновенный отклик для ваших посетителей.


Обновление: если вы все еще хотите уменьшить сервис Fargate до 0 задач, вы, безусловно, можете сделать это, установив Сервис DesiredCount в 0, Это можно сделать, например, через aws-cli:

~ $ aws ecs update-service ... --service xyz --desired-count 0

Если вы хотите сделать это в Dev, я предлагаю вам запустить UpdateService либо вручную, либо из cron-job, либо из запланированной функции Lambda. В любом случае вы можете установить задачу 0 ночью и обратно 1 на следующий рабочий день. Это будет проще, чем полагаться на автоматическое масштабирование, которое может быть недостаточно надежным для очень низкого трафика.

Надеюсь, это поможет:)

Если вы переписываете свое приложение так, чтобы оно отвечало вышеприведенному ответу, это не вариант и не дорого, вы можете посмотреть в GCP CloudRun

CloudRun - это серверные контейнеры, разработанные GCP. Вы можете упаковать свой веб-сайт в контейнер, и тогда CloudRun будет выставлять вам счета только за использование ЦП во время запросов и загрузки. Он даже имеет действительно хороший бесплатный уровень, который позволит запускать ваше приложение с минимальными затратами.

Таким образом, вы можете объединить Amazon Aurora с GCP CloudRun за минимальные затраты и без необходимости переписывать ваше приложение.

Другие вопросы по тегам