У меня есть несколько вопросов по архитектуре

#aws-lambda #architecture #amazon-sqs #serverless-architecture

#aws-lambda #архитектура #amazon-sqs #бессерверная архитектура

Вопрос:

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

Я создаю бессерверное приложение, которое состоит из платформы потоковой передачи приложений по требованию.

Клиенты, которые хотят попробовать определенное приложение (обычно большие и дорогие, такие как, например, Photoshop или Solidworks), могут иметь возможность напрямую попробовать его со своих компьютеров в своем браузере, пока приложение работает в инфраструктуре, аналогичной их компьютеру.

Я бы использовал конвейеры CI / CD и технологию IaC для создания инфраструктуры EC2, в которой будут размещены эти приложения, и использовал те же технологии для уничтожения этой инфраструктуры, поскольку она нестабильна.

Итак, чтобы создать / уничтожить эту инфраструктуру EC2, я использую GitLab API.

Поэтому я решил пока использовать AWS Lambda и GitLab.

Теперь вопросы по архитектуре :

  1. Лучше ли иметь одну бессерверную функцию, которая обрабатывает все или несколько функций?
  2. Я планирую уничтожить инфраструктуру EC2 через определенное время (10-15 минут). Как мне следует планировать HTTP-связь? Должен ли я использовать очередь, подобную SQS? Должен ли я использовать какую-либо базу данных и проверять каждую минуту?

Еще раз, большое спасибо за вашу мудрость!

Редактировать: разъяснение по некоторым вопросам.

Комментарии:

1. Не уверен, что я понял ваш вопрос. Вы говорите, что хотите создать бессерверную архитектуру, но затем упоминаете инфраструктуру EC2. Кроме того, не могли бы вы немного лучше объяснить свой 2-й вопрос?

2. Конечно, @Andre. IDK, бессерверное приложение само по себе, ну, в общем, бессерверное. Инфраструктура EC2, о которой я упоминаю, — это инфраструктура, в которой размещаются все приложения, которые клиенты хотят попробовать. Чтобы создать или уничтожить эту инфраструктуру EC2, я запускаю через GitLab API CI / CD конвейеры в GitLab, которые выполняют код Terraform. Мне было интересно, как лучше всего планировать эти HTTP-запросы.

3. Обычной практикой в этом смысле является использование компонентов / технологий, которые подписываются на определенные крючки git. Вариантом может быть создание конвейера Jenkins, который подписывается на определенные события (например, merge / push) и выполняется каждый раз, когда в Gitlab происходит какое-либо из этих событий.

4. Я уже делаю это. Чтобы предоставить доступ к этой инфраструктуре EC2, мне нужны ссылки DNS, и я получаю их через веб-ссылки в конце выполнения конвейера CI / CD. Что я пытаюсь спросить, так это как вы планируете (с моей стороны) HTTP-запросы к GitLab API, чтобы инициировать удаление инфраструктуры EC2 через определенный промежуток времени.

5. Если вы ищете «мнения», было бы лучше спросить по адресу: reddit.com/r/aws