Идеи для архитектуры приложений на AWS (ECR + ECS Fargate + RDS + Lambda (?)) - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в этом, и я пытаюсь выяснить, что было бы лучшей архитектурой и рабочим процессом для следующего варианта использования (я использую React спереди и nodejs на сервере, но это может быть неуместным, учитывая, что это вопрос об архитектуре) :

Вариант использования:

Пользователь попадает на мою страницу, где у меня есть таблица, уже заполненная клиентами из таблицы RDS. У пользователя есть возможность либо удалить клиента (соответствующая строка), либо отредактировать этого клиента, и все изменения, сделанные во внешнем интерфейсе, должны быть записаны в базе данных, чтобы в следующий раз, когда пользователь посещает страницу, он / она получает последнее состояние базы данных. Проблема в том, что мне поручено реализовать эту архитектуру с использованием таких сервисов, как ECR, ECS (я выбрал Fargate, как бессерверное решение), RDS, но я понятия не имею, как должен выглядеть рабочий процесс и какую роль будут иметь лямбды. если они необходимы (или есть?). Учитывая также, что мне нужно использовать RDS, какой вариант PostgreSQL / MySQL / Aurora лучше всего подходит для этого варианта использования?


То, что я пробовал до сих пор:

То, что мне удалось сделать до сих пор, - это докеризация моего приложения для реагирования (содержащего таблицу внешнего интерфейса, в которой клиенты будут go), отправил его в ECR, создал кластер внутри ECS с определением задачи по умолчанию, содержащим роль ecsTaskExecution, контейнер, содержащий изображение из ECR, и службу, отвечающую за выполнение задачи. Я также добавил Application Load Balancer перед кластером ECS, чтобы мое приложение для реагирования было доступно из браузера (планируется добавить мой личный домен).


Проблема:

Я не понимая, кто должен «говорить» с кем, когда дело доходит до всех этих отдельных сервисов, сколько контейнеров у меня должно быть, являются лямбда-выражениями как функции, которые будут выполнять необходимое удаление и обновление, или они служат только как триггеры, которые оставят все обработка задач ECS? В основном мне трудно представить себе всю картину рабочего процесса. Любые идеи?

Заранее спасибо. :)

1 Ответ

0 голосов
/ 16 июня 2020

После нескольких дней экспериментов и чтения я придумал такую ​​архитектуру:

ReactJS приложение, размещенное на S3, NodeJS приложение (Express сервер), контейнерное на docker, перемещается в ECR, а затем в ECS (я выбираю EC2 Linux + Networking для кластера ECS, а затем в соответствии с этим я выбираю EC2 для задачи, которая отвечает за запуск моего контейнера ECR), а для базы данных я выбираю MySQL внутри RDS.

Итак, в основном связь происходит между S3 -> ECS -> RDS (ReactJS -> NodeJS -> MySQL).

...