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

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

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

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

5
задан 30 January 2019 в 07:48
2 ответа

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

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

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

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


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

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

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

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

6
ответ дан 3 December 2019 в 01:17

Если перезапись приложения в соответствии с приведенным выше ответом не является вариантом или дорогостоящей, вы можете обратиться к GCP CloudRun

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

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

.
2
ответ дан 3 December 2019 в 01:17

Теги

Похожие вопросы