Концептуальный вопрос по масштабированию REST API - PullRequest
0 голосов
/ 07 марта 2020

У меня есть общий вопрос относительно того, как масштабируются API. У меня есть базовый c RESTful API на основе Django rest Framework, бэкэнд использует RDS для управления базой данных. Прямо сейчас я развертываю свое приложение django на капле digitalocean, но думаю о переходе на EC2 или, возможно, EKS. Верно ли мое понимание того, что я могу эффективно указать свое приложение на конечной точке RDS и запустить несколько экземпляров EC2 с одним и тем же приложением Django, запущенным ELB? Будет ли это заботиться о входящем трафике c и масштабируемости приложения django?

Это не совсем вопрос кодирования, поэтому я не уверен, что это лучший сайт для обмена стеками, чтобы задать этот вопрос. ,

Ответы [ 2 ]

2 голосов
/ 07 марта 2020

Мои два цента здесь:

Я уже давно использую лямбду для подачи Django и Flask apis, и это прекрасно работает. Вам вообще не нужно беспокоиться о масштабируемости, если только не существует вероятность того, что ваш API получит более 10000 запросов в секунду (очень маловероятно для большинства сценариев ios). Это будет намного дешевле, чем EKS, даже дешевле, чем EC2. У меня есть приложение с 400 000 активных пользователей, которое обслуживается API, работающим на Lambda, я никогда не платил более $ 25 за вызовы.

Вы можете использовать Zappa (что исключительно для python, Я рекомендую) или S erverless framework , они позаботятся о большей части тяжелой работы и сделают развертывание очень простым.

Но имейте в виду, что лямбда не очень хороша для длительных задач, таких как cronjobs. Если у вас есть кроны, выполнение которых может занять некоторое время, ваши вызовы могут стоить немного дороже, если вы вызываете их из четырнадцати (лямбда может работать до 15 минут, но эти 15 минут будут намного дороже, чем EC2). Кроме того, apigateway перед лямбда-функцией имеет тайм-аут 30 секунд, поэтому ваши запросы должны быть обработаны до этого. Если вы считаете, что ваши запросы будут занимать больше времени, вам нужно будет использовать некоторые асин c запросы. Я думаю, что это очень маленькая цена, чтобы иметь полное обслуживание, не беспокоясь об инфраструктуре.

1 голос
/ 07 марта 2020

Вы правы, но вы можете думать не только о ec2 и EKS. Вы также можете посмотреть на варианты ECS и Fargate. ELB распределяет трафик c по вычислительным ресурсам внутри целевой группы, и это может быть Autoscaling Group для EC2. Кроме того, с помощью RDS можно масштабировать реплики чтения для обработки трафика чтения c независимо от главного узла

...