1. Compute Engine
    1. Secure and customizable compute service that lets you create and run virtual machines on Google’s infrastructure.
    2. When to use it
      1. Use Compute Engine when you need control over operating systems or lift and shift situations
      2. Licensing requirements
      3. Model
        1. IaaS
    3. Options
      1. Preemptible VM
        1. A highly discounted VM compared to the price of standard VMs
        2. Discount of 60-91% discount
        3. VM might be terminated at any time (24 hours max)
      2. Spot VMs
        1. Are the latest version of Preemptible VMs
        2. No minimum or maximum runtime
      3. Sole-Tenant nodes
        1. Physical Compute Engine server that is dedicated to hosting VM instances only for your specific proyect
        2. For workloads that requires physical isolations from other workloads or virtual machines to meet compliance requirements
      4. Shielded VMs
        1. Offers verifiable integrity
        2. Secure Boot
        3. vTPM
        4. Integrity monitoring
      5. Confidential VMs
        1. Allow you to encrypt data in use
    4. Scaling
      1. Server autoscaling
  2. App Engine
    1. A fully managed serverless platform for complete web applications. App Engine handles the networking, application scaling, and database scaling. You write a web application in one of the supported languages, deploy to App Engine, and it handles scaling, updating versions, and so on.
    2. When to use it
      1. When you just want to code up your HTTP-based application and leave the scalability and deployment of the app to Google Cloud
      2. Model
        1. PaaS
    3. Environments
      1. App Engine Standard
        1. Runs your code in containers provided by Google.
        2. Container instances can start in milliseconds.
        3. Supports many languages including Python, Java, PHP, Go, and JavaScript.
        4. Free tier of 28 instance hours per day
      2. App Engine Flex
        1. Is open and flexible and supports custom runtimes because the application instances run within Docker containers on Compute Engine.
        2. Supports many languages including C#, Go, Java, Node.js, PHP, Python, and Ruby
        3. Does not scale to zero - no free tier
    4. Scaling
      1. Autoscaling managed servers
  3. Google Kubernetes Engine
    1. Managed Kubernetes clusters. Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.
    2. When to use it
      1. When your application needs a specific OS or network protocols beyond HTTP/s
      2. Hybrid and MultiCloud deployments
      3. Strong CI/CD pipelines
      4. Model
        1. Iaas
        2. PaaS
    3. Scaling
      1. Cluster
  4. Cloud Run
    1. A fully managed serverless platform that runs individual containers.
    2. When to use it
      1. Fully-managed infrastructure
      2. Rapid auto-scaling from, and to 0
      3. HTTP/Websockets/gRPC/Events
      4. No fixed infrastructure footprint
      5. Model
        1. PaaS
    3. Deployment methods
      1. Fully Managed
        1. Use when want Google Cloud to manage autoscaling, connectivity, high availability, etc.
      2. Cloud Run for Anthos
        1. Knative running on a GKE cluster
        2. Use when need to
          1. Access VPC network
          2. Tune size of compute engine instance, use GPUs, etc.
          3. Are running knative containers on-premise or in other clouds and want a single pane of glass (Anthos) to manage them
    4. Scaling
      1. Serverless
  5. Cloud Functions
    1. Event-driven serverless functions. You write individual function code and Cloud Functions calls your function when events happen (for example, HTTP, Pub/Sub, and Cloud Storage changes, among others).
    2. When to use it
      1. When your code is a function and just performs an action based on an event/trigger from Pu/Sub or Cloud Storage.
      2. Model
        1. Microservices architecture
    3. Scaling
      1. Serverless