Cloud Deployment

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 pooling
    You know where your servers live.
  • Rapid elasticity
    You can scale your service up or down in a matter of seconds.
  • Consumption-based pricing
    You can save money by scaling back when need is low, but scale up (and pay more) when you need the computing power.
The Microsoft Azure Cloud:
(The above material was largely drawn from this video.)
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.

Introduction to Heroku
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.

Kubernetes in Nine Minutes
Containers, pods, and services in a Kubernetes cluster.

From IBM: Kubernetes and Docker: It's not "either/or".

Lesson 4: Cloud Providers

Major cloud providers include:

  • Amazon Web Services
    The most complete cloud environment.
  • Google Cloud Platform
    A strong focus on AI.
  • Microsoft Azure
    Good on enterprise integration.
  • Digital Ocean
  • IBM Cloud

Some comparisons of cloud providers:

Other Readings
Quiz

    Hosting in the cloud adds to our agility because...?

    1. cloud hosting means we don't need version control
    2. cloud hosting eliminates the need for testing
    3. we can easily add services as our users need them
    4. all of the above

    "Location-transparent resource pooling" means...?

    1. all of your resources get pooled into one location
    2. you don't need to pay any attention to where your resources are
    3. you know where on the globe your servers are located
    4. none of the above

    "PAAS" stands for...?

    1. Please Authenticate All Services
    2. Pull Authorization Activated Soon
    3. Pods Across All Subnets
    4. Platform as a Service

    Hosting our services in the cloud generally gets us...?

    1. high availability
    2. agility
    3. fault tolerance
    4. all of the above

    If we want to coordinate a number of Docker containers, the most popular tool today is...?

    1. Kubernetes
    2. Travis CI
    3. GitHub
    4. Heroku

    Our main cloud platform, PythonAnywhere, is an example of...?

    1. IaaS
    2. PaaS
    3. SaaS
    4. GaaS

    In Kubernetes, a number of Docker containers co-located on a server is called...?

    1. a plod
    2. a codpiece
    3. a scrod
    4. a pod

    IaaS means...?

    1. infrastructure as a service
    2. idempotency as a service
    3. integration as a service
    4. identity-checking as a service

    A strong point of Google Cloud is...?

    1. its complete suite of services
    2. its focus on AI
    3. its focus on the enterprise
    4. none of the above.

    The main operational difference between the different recovery zones is...?

    1. how far away they are from your data center
    2. what temperature the machines run at
    3. how fast you can recover from the different zones
    4. how much RAM they have