Project 1 Design
Technical Design Options for Project 1
Diagram for analysis
Preface
- Assumed scope of deployment is public cloud/AWS.
- No external services (ie Firebase, Heroku, etc).
Option 1
- Summary
- Traditional PAAS approach.
- Monolithic, middleware is runtime for business logic.
- Some cloud services are integrated.
- Pro
- Some robustness through multi-node/common session cache.
- Popular pattern/approach for private datacenter teams looking to dip toes in the public cloud.
- Middleware can support a traditional MVC web server (say Django or Rails), that elimiates need for front-end framework. Simplfying codebase and team skillset needs.
- Con
- Heavy, monolithic, not industry current design.
- Costliest of three options.
- EC2 maintenance overhead.
- Blue/Green deployment challenges
- Object bloat/”garbage collection”
- Orchestration
- Live traffic timeouts/ELB visibility
- etc
- Not cloud native.
- You’ll be “rolling your own” on several major components (eg: user management, via middleware and db).
- Modifications
- ECS/containers for eliminating some of the foot-shooting that comes with lifecycle of ec2 hosts w/ middleware.
Option 2
- Summary
- Serverless, REST backend.
- JS framework front-end, hosted from cloudfront, backed by S3.
- Pro
- JS front-end takes load and cost out of system
- Cognito for user management, don’t have to reinvent the wheel
- More native approach by building on AWS services
- More cost effective/capacity effect for small project than option #1
- Con
- Writing Cloudformation templates for API Gateway is not fluid, there is quite a bit of bloaty boilerplate.
- Front-end skillset needed.
Option 3
- Summary
- Serverless, GRAPHQL backend
- JS framework front-end, hosted from cloudfront, backed by S3.
- Pro
- JS front-end takes load and cost out of system
- Cognito for user management, don’t have to reinvent the wheel
- More native approach by building on AWS services. Use of AWS Amplify library is a big win for abstracting services and easy wiring.
- Most cost effective/capacity effect for small project than option #1
- Con
- Front-end skillset needed