You are raising all the right architecture questions given the load. Simpler architecture for this requirement will help with lower costs and better operational efficiency. Answering directly for your raised questions:
- No, its not necessary to have a ELB
- Depends. Advisable if you intend to implement a 'Usage Plan' for users. (Ref: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html)
I would recommend using serverless technologies. You can find a reference architecture here. No need for load balancers, tasks that are running all time, etc.
+1 for serverless, API Gateway, Lambda and DynamoDB. To answer the last point, yes, you definitely want to use a CloudFront distribution in front of your React app stored in S3. This allows you to keep your S3 bucket private, and together with the CloudFront Security Savings bundle you can save up to 30% on data transfer costs as well as get credits for AWS WAF rules.
You can refer this AWS Whitepaper on this topic, it also explains key components in this architecture:
Also see Web Application Architecture reference architecture:
For a detail discussion on Architecture suggest getting in touch with an AWS Solutions Architect.
+1 for serverless as recomended by URI. Spring Boot is not the best idea for microservices, if is a new project, try first AWS lambda. Stay on ECS if you have some requirements hard to solve with lambda. Don't use a load balancer, API Gateway should be enough. Consider use dymamoDB instead of RDS
Also take a look over this new features from reinvent 2022.
- Lambda SnapStart only valid for native lambdas, not docker.
- Amazon ECS introduces Service Connect
- Accepted Answerasked 10 months ago
- asked a year ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated 4 years ago
- How can I configure a custom domain endpoint for multiple API Gateway APIs behind a CloudFront web distribution?AWS OFFICIALUpdated a year ago
- AWS OFFICIALUpdated a year ago
- EXPERTpublished 3 months ago
- EXPERTpublished 2 years ago