The problem

I have just graduated and realized I don’t know anything about cloud platforms of any kind. I regularly see videos from Fireship (he does tech abstracts, tech news, tech stacks) and don’t understand half of the content in his videos and how they connect with each other. And that’s the key point! How do all of these technologies interface with each other, and how do I prevent myself from wasting time on an overly complicated solution for my silly web app? Gone are the days of writing my program in a java and pressing a green run button in my compiler.

I am currently trying to create a portfolio website and keep asking myself questions.

How do I host it?
What if I want a backend of some kind for a separate project?
Can I have multiple hosts? What are the differences?
What if I want CI/CD?
Is it reasonable to use it as a playground for learning new tech?
If so, what options would give me the most flexibility?
How do I make it cheap? Simple? Fast? Scalable?

Here are some popular cloud platforms whose names I see thrown around:

  • AWS, Azure, Google Cloud
  • Digital Ocean
  • Cloudflare
  • Firebase
  • Vercel
  • Heroku
  • Netlify
  • Render

Let’s break it down

Or jump to Summary

Infrastructure as a Service (IaaS)

This is just raw infrastructure and resources like storage, networking, and virtual machines. While I am sure they are highly customizable and feature rich, it’s relatively rudimentary and low level.

AWS, Azure, Google Cloud, and Digital Ocean would fall into this category.

I have actually used Digital Ocean, they gave me a virtual machine that I could remote into which was my server where I had free reign to do anything, like opening ports and running a server.

Platform as a Service (PaaS)

I still don’t fully understand this. These abstract the infrastructure management, focusing more on deploying and running applications.

Heroku and Render fall into this category.

Looks like it’s ideal for small/medium apps and rapid prototyping.

Backend as a Service (BaaS)

Even more abstract than PaaS, these handle backend functionality like databases and authentication. This requires minimal backend development and allows for focus on frontend. Great for getting an app off the ground very quickly.

Firebase falls into this category and is a very popular choice with a strong free tier.

Serverless Platforms

Runs code (in response to events) without managing servers? I’m not not at all sure what use cases this has, although I will inevitably find out.

AWS (Lambda), Azure (Functions), and Google Cloud (Functions) fall into this category.

Static Hosting/Deployment Platforms

Just that, high level but limited featured software that allows for hosting static content (no backend). They often will facilitate builds, deployments, and hooking up your domain. Usually free.

Netlify, Cloudflare Pages, GitHub Pages, and Vercel fall into this category.

I hear that Vercel is optimized for frontend frameworks like next.js, but I suspect all four of these could handle a frontend framework. (No evidence to back up that claim).

Summary

  • For Static Websites: Vercel, Netlify, Cloudflare Pages, GitHub pages.
  • For Full-Stack Apps: Render, Heroku, Firebase, or AWS.
  • For Raw Infrastructure: AWS, Azure, Google Cloud, or DigitalOcean.
  • For Mobile Apps: Firebase (real-time backend and hosting).

In conclusion regarding my problem, it may be best to just use GitHub pages and hope a front end framework works for my portfolio. For any more complicated future projects, Firebase and Digital Ocean will likely be where I check first.