Как лучше организовать структуру сервера на aws с docker контейнерами?

Есть REST api на java, сайт на React, и база MySQL. Соответственно api написанное на java работает с базой, и по запросу с фронта, который написан на React, отдает ему данные. Я хочу развернуть все это на aws с использованием docker контейнеров. Вопрос заключается в том, как правильно это все организовать. Мне не нужен подробный туториал с описанием как это делать, просто вкратце рассказать, как организовать это дело.
Развернуть 3 docker контейнера внутри одного инстанса aws?
Или же под базу докер не нужен, а пусть она работает непосредственно на самом инстансе, а сделать 2 докера, один под api другой под react?
Мне на ум пришли только эти два варианта, как можно поступить ещё?
  • Вопрос задан
  • 597 просмотров
Пригласить эксперта
Ответы на вопрос 3
deksden
@deksden
Enterpreneur
Имхо - для начала каждую сущность оборачиваем в контейнер, заставляем уметь работать или в единственном экземпляре, или в режиме нескольких инстансов. То есть, к API должен быть какой-то load balancer, веб сервер тоже с несколькими воркерами надо дружить, база тоже по мануалам масштабируется при появлении нескольких контейнеров.

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

Как то так.
Ответ написан
Комментировать
Yeah
@Yeah
Так как в вопросе фигурирует AWS, то и поднимать все нужно с учетом сервисов, которые предоставляет AWS. Никаких трех контейнеров на инстанс!
Итак, по пунктам:

  1. Для начала поднимаем и настраиваем VPC. Соевую заюзать готовый шаблон для Cloudformation. их можно легко найти на Github
  2. БД - AWS RDS - легко сетапится, можно с репликацией, можно без
  3. для API поднимаем Elastic Beanstalk с load balancer
  4. статику грузим в S3
  5. к S3 со статикой прикручиваем Cloudfront - в качестве CDN, так как раздача статики с S3 дороже, чем с Cloudfront
  6. Настраиваем Route53: корневой домен через ALIAS -> Cloudfront, api.domain.com, через CNAME на URL от Elasticbeanstalk


Итого: нужен только один докер контейнер - для API.
Ответ написан
Комментировать
Зачем Вам докер в принципе при наличии всего 1 инстанса?
как можно поступить ещё?

Вынести базу на отдельный инстанс. Завернуть в докер и апи и сайт. В зависимости от нагрузки, просить/отдавать еще инстансы под докер.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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