Goal
Identify and evaluate viability of hosting and deployment options for application considering research costs versus mid-term benefits.
Background
Part of my research this week has been looking into various hosting options. There’s a few components involved here.
The primary is going to be physically how/where to host our full stack application. The second is going to be where/how to store database.
Criteria
– Free
– Some optimal balance of tradeoffs — e.g. “saves time later” against “learning curve now”
RIP Heroku. Free tier ends soon. Godspeed old chap.
Option 1: FLIP
+ Free
+ Familiar
+ Easy to deploy (backend, at least)
– Thought I read some additional work about where to place frontend and how to route incoming traffic to that, unclear at this time
– In 290/340 MySQL came pre-baked — can’t recall if there’s setup or requests needed to setup in Capstone
– Since FLIP is tied to individual accounts, the responsibility of deployment and database management would fall onto ONE person, not ideal
– No built-in CI/CD
Summary: Flip is great because it’s a free student resource, but there’s some research related to frontend placement and routing, as well as DB & deployment responsibilities that are not able to be spread across all teammates.
Option 2: AWS
+ Well communicated Free Tier options
+ Cloud DB has options for both NoSQL and SQL
+ Cloud DB means all team members can help with data setup, debugging, connections, etc.
+ Multiple deployment options
+ CI/CD functionality available
– High learning curve, too many options
– EC2 instance deployment requires setting up nginx for server proxy for incoming traffic, what a pain — also if we are using EC2, we are literally just provisioning a machine to host the entire application — how is this different/more beneficial than FLIP other than guaranteed uptime?
– Alternatively can setup EC2 for backend, S3 bucket/Cloudfront for frontend,
– Security everywhere means many places for possible error in just “getting setup”
– Using serverless backend (e.g. lambda) or amplify frontend doesn’t even feel like real code, what is this drag and drop programming stuff about
– Creating initial architecture requires further research
Summary: many options are available which requires greater startup cost in research. But, after the initial (possibly painful) setup — all the pieces are made to work with each other seamlessly. Generous free tier means unlikely to incur costs, but need to be judicious with the fine print.
Option 3: GCP
Mostly same as AWS services but with these additions:
+ Greater emphasis on containerized deployment makes “works here works everywhere” easy
– no free-tier SQL cloud DB (free tier is NoSQL only)
Summary: higher research as with AWS but seems to have friendlier containerized option via Cloud Run service. Although initial setup cost could be higher, if a docker container can be setup appropriately it is basically guaranteed to work on all team machines AND for deployment.
Note: I recognize I am a neophyte and many parts of this could be (completely?) incorrect. I accept that and wave my Student ID in return. This was one week’s research.