1. Cloud Functions
    1. Serverless environments for running Node.js, PHP, Go, and Python function
    2. Just upload the code
    3. Microservice architecture where each function performs one job
    4. Each invocation creates a new instance of the runtime
    5. Environments are cached for lower latency across multiple invocations of the function
    6. Cloud functions are useful for building microservice style applications
    7. Each Cloud Function typically performs a specific task in an application
    8. Cloud Functions are event driven
    9. Common use cases include responds to Cloud Storage changes, Pub/Sub messages, or web requests
    10. Incredibly fast and scalable
    11. Very inexpensive with free tier
  2. App Engine
    1. Standard
      1. Google Cloud application platform
      2. Supports Python, Java, PHP, Go, Node.js
      3. Fast scale-up time (seconds)
      4. Free tier, very low cost
      5. If no traffic, no hot instance
    2. Flexible
      1. More customizable, more management overhead
      2. Any application in a docker container
      3. Gradual scale up/down
      4. VPC access (including VPN connections)
    3. Memcache
      1. In-memory storage of commonly cached queries
      2. Shared and dedicated service levels
      3. Shared is the free and default option
      4. Best effort basis on caching query operations
      5. Fixed cache capacity assigned to application
      6. Dedicate memcache capacity improves query times to Cloud SQL backend
    4. Versions
      1. Split traffic by percentage between versions of application
      2. Slowly direct traffic to risky update as canary deployment
      3. --no-promote flag prevents new version from serving traffic
    5. Database
      1. Use VPN to connect App Engine app to on-premises database
      2. Use on-premises firewall to restrict traffic to App Engine app
      3. Use Flexible Environment to deploy to VPC
  3. Cloud Run
    1. Cloud Run is a managed service serverless platform
    2. Automatically scales stateless containers
    3. Can run any language, library, and binary
    4. Users only pay when their application is running
    5. To run applications, create a docker image, and deploy to Cloud Run