Lesson 1: Why the Cloud?
Cloud services generally provide:
On demand self-service
You don't have to wait for IT to get you a new server "real soon."
Ubiquituous network access
Not just from inside the corporate firewall.
Location transparent resource
You know where your servers live.
You can scale your service up or down in a matter of seconds.
You can save money by scaling back when need is low, but scale up (and pay more) when you need the computing power.
Lesson 2: Heroku
Heroku provides "platform-as-a-service" (PAAS). A PAAS provides not just a virtual machine, but the full infrastructure typically needed to run a modern web app, such as a database, a load balancer, a data cache, and connections to other popular platforms.
Lesson 3: Kubernetes and Docker
Docker is useful for containerizing an application and deploying it to the cloud. But, as noted in the section above, a modern web app typically consists of a fair number of independent services. With a microservice architecture, even the basic business logic may be split among several servers. What if we want to deploy these different services in multiple containers? How do we make sure we have the right number of each? How do we make sure some vital service hasn't gone down?
The most common answer today is Kubernetes. Kubernetes acts as an orchestrator of a number of inter-related Docker containers. (The name is from the Greek word for "captain.") The basic unit in Kubernetes is called a pod: a number of Docker containers co-located on a server. Some number of pods can provide a service (such as search or payment authorization), so that the load can be balanced among the pods, and if one pod goes down, the service can just use the other pods. An organized group of pods is called a cluster.
Lesson 4: Cloud Providers
Major cloud providers include:
Amazon Web Services
The most complete cloud environment.
Google Cloud Platform
A strong focus on AI.
Good on enterprise integration.
- Digital Ocean
- IBM Cloud
Some comparisons of cloud providers: