Сервис 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 за минимальные затраты и без необходимости переписывать ваше приложение.