Недавно я перенес небольшое веб-приложение на AWS, используя Fargate и Aurora Serverless. Приложение не получает много трафика, поэтому моя цель - сэкономить, пока его никто не использует. Похоже, что Aurora Serverless делает это для меня автоматически на стороне БД.
Однако я изо всех сил пытаюсь найти какие-либо ресурсы о том, как масштабировать службу Fargate до нуля.
Перед ней стоит ALB, и я знать, что количество запросов ALB можно использовать при масштабировании ... поэтому в идеале, когда в среднем имеется 0 запросов за период, скажем, 10 минут, служба должна масштабироваться до нуля задач. Затем, когда поступает запрос, он запускает масштабирование одной задачи для службы.
Я не знаю, как именно это будет работать. Когда нет исправных целей ALB, ALB возвращает ошибку 503, поэтому ваши посетители будут видеть страницу с ошибкой вместо вашего веб-сайта. Этот может вызвать запуск контейнера Fargate, но это часто занимает десятки секунд, иногда даже более минуты. К тому времени, как ваш контейнер будет готов, ваш посетитель, вероятно, уже уйдет.
Если вам нужен действительно бессерверный веб-сайт с нулевыми простоями, вам придется реализовать его с помощью API.
Эта архитектура ничего не стоит в режиме ожидания и предоставляет мгновенный ответ вашим посетителям.
Обновление: , если вы все еще хотите уменьшить масштаб службы Fargate до 0 задач, вы, безусловно, можете сделать это, установив для службы DesiredCount
значение 0
]. Это можно сделать, например, через aws-cli:
~ $ aws ecs update-service ... --service xyz --desired-count 0
Если вы хотите сделать это в Dev , я предлагаю вам запустить эту UpdateService либо вручную, либо из задания cron, либо из запланированной функции Lambda . В любом случае вы можете установить задачу на 0
ночью и обратно на 1
на следующий рабочий день. Это будет проще, чем полагаться на AutoScaling, которое может оказаться не таким надежным при очень низком трафике.
Надеюсь, что это поможет :)
Если перезапись приложения в соответствии с приведенным выше ответом не является вариантом или дорогостоящей, вы можете обратиться к GCP CloudRun
CloudRun - это бессерверные контейнеры, разработанные GCP. Вы можете упаковать свой сайт в контейнер, а затем CloudRun будет выставлять вам только счета за использование процессора во время запросов и загрузки. У него даже есть действительно хороший бесплатный уровень, который заставит работать ваше приложение с минимальными затратами.
Так что вы можете комбинировать Amazon Aurora с GCP CloudRun за минимальные затраты и без необходимости переписывать ваше приложение.
.