/ DESIGN, PROJECT1

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

Notes