
Для своего следующего проекта я собираюсь попробовать AWS и server-less, но я не уверен, как рассуждать о различных сервисах AWS. Поэтому надеюсь, что кто-то здесь хорошо разбирается в этом.
В настоящее время проект состоит из трех различных интерфейсных приложений, каждое из которых размещено на отдельном поддомене:
- Корневой домен + [www]: Основная веб-страница, которая в основном состоит из «продающего» контента.
- [администрирование]: Фронтенд-приложение для наших систем администрирования
- [пользователь]: Фронтенд-приложение для нашего пользовательского опыта
Затем, на данный момент, есть одно приложение backend, которое обслуживает все frontend-приложения. Этот backend должен быть обратно проксирован по крайней мере поддоменами [administration] и [user] (т. е. как user.domain.com/service/backend). Мой backend-сервис в настоящее время работает как контейнер docker и использует WebSockets для некоторых частей, так что это должно поддерживаться.
Я рассматривал несколько вариантов для своих фронтендов, либо AWS Amplify, либо S3+Cloudfront. Однако я не уверен, что это то, что я ищу.
То же самое касается моего бэкенда. Я рассматриваю AWS Fargate, AWS API Gateway и возможный AWS AppSync (поскольку большая часть моего бэкенда — это приложение GraphQL).
Но я немного запутался. Может кто-нибудь подтолкнуть меня в правильном направлении? Надеюсь, я дал достаточно и ясной информации, в противном случае я был бы рад расширить! :)
Спасибо!
решение1
Если кому интересно, то у меня получилась примерно такая же конфигурация, как описано здесь:https://aws.amazon.com/blogs/networking-and-content-delivery/dynamic-whole-site-delivery-with-amazon-cloudfront/
Если я маршрутизирую все через Cloudfront, то с помощью «Поведений» я маршрутизирую трафик на разные сервисы. Например, /service/user и /service/schedule направляются на мой экземпляр ALB, а все остальное направляется на мой S3-bucket, действующий как статическая веб-страница.
Используя немного магии Lambda@Edge, я могу переписывать запросы, пересылаемые на мой экземпляр ALB, который затем может сопоставлять входящие запросы и пересылать их дальше в правильные нижележащие контейнеры (в настоящее время я использую кластеры в Fargate).
Это очень хорошо работает для моего варианта использования, даже если это не "лучшая практика". Так что я, конечно, продолжу изучать AWS и узнавать что-то новое. :)
Если это кому-то поможет, здорово. Если кто-то имеет вклад в вышеизложенное, я был бы рад услышать!
Ваше здоровье!