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