Как лучше всего разместить мобильное приложение React Native с бэкендом Django на AWS?
Я хочу создать мобильное приложение, используя React Native (фронтенд) и Django (бэкенд). Я никогда этого не делал, но в идеале мое приложение должно иметь простой фронтенд UI, который отображает данные, полученные от Django (бэкенд), который получает их из базы данных MySQL.
Я пытаюсь понять, как я могу разместить это на хостинге с помощью AWS, но у меня проблемы, поскольку я не могу найти такой же вопрос в Интернете. У меня много опыта программирования, но я новичок, когда дело доходит до реального развертывания кода.
Я могу думать об этом совершенно неправильно, я совсем запутался, поэтому любая помощь была бы очень полезна. Заранее спасибо!
Если вы хотите создать свой проект, используя правильный способ, вы должны изучить AWS, конечно. Это зависит от ваших требований, я думаю, у вас есть 2 варианта:
- Ознакомьтесь с AWS для настройки проекта, следуя лучшим практикам. Многое.
- Если вы хотите развернуть свое приложение самым быстрым способом. Вам просто нужно использовать экземпляр AWS. .
От простого к автомасштабированию:
Метод 1.
- Создайте экземпляр EC2,
- ssh к нему и настройте nginx + uwsgi (или аналогичный) как обычно. .
- Убедитесь, что вы создали экземпляр с публичным IP и направьте DNS на него.
Метод 2.
- Создайте экземпляр EC2, как и раньше .
- Упакуйте ваш код django с nginx + uwsgi как контейнер docker и запустите его на экземпляре EC2. .
- Укажите DNS на экземпляр.
Метод 3.
- Создайте кластер ECS
- Упакуйте ваш код django с nginx + uwsgi как контейнер docker .
- Создайте службу и задачу-определение для запуска образа docker на кластере ECS.
- Укажите DNS на IP-адрес экземпляра кластера.
Метод 4.
- Создайте кластер ECS .
- Упакуйте ваш код django с nginx + uwsgi как контейнер docker. .
- Создайте службу и задачу-определение для запуска образа docker на кластере ECS.
- Создайте балансировщик нагрузки ELB и прикрепите ваш сервис django в качестве слушателя к ELB, .
- Укажите ваш DNS на ELB.
- Настройте автоматическое масштабирование, чтобы запустить новый экземпляр сервиса django, например, на CPU > 80% и памяти > 80%, установите сигналы для уменьшения масштаба на CPU/памяти < 40% .
Метод 5.
- Создайте кластер ECS
- Упакуйте ваш код django с nginx + uwsgi как контейнер docker .
- Создайте задачу-определение для запуска образа docker на кластере ECS.
- Создайте балансировщик нагрузки ELB .
- Создайте и запустите два (для избыточности) экземпляра Traefik для использования в качестве Ingress, подключите свои сервисы Traefik в качестве слушателей к ELB .
- Укажите DNS на ELB.
- Добавьте метки docker для маршрутизации трафика к различным сервисам через Traefik.
- Настройте сигналы автоматического масштабирования для запуска нового экземпляра сервиса django, например, на CPU > 80% и памяти > 80%, установите сигналы для уменьшения масштаба на CPU/памяти < 40% .
Для базы данных Создайте управляемый экземпляр RDS, как вы уже поняли, это обычная база данных postgres/mysql, только управляемая AWS, так что вам не нужно делать это самостоятельно.