Professional Cloud Developer

Google Cloud Certification Notes

Section 0: Cloud Computing Fundamentals (GCP)

expand

course: Cloud Fundamentals

Cloud Computing

IaaS (Infrastructure as a Service)

PaaS (Platform as a Service)

SaaS (Software as a Service)

Serverless

Google Network

Locations

Regions

Zones

Google Infrastructure Security

Hardware

Services

User

Internet Communication Layer

Operational Security Layer

Pricing and Billing

Quotas

GCP Hierarchy

  1. Organization node (root node | overall policies)
  2. Folder (assign policies | create hierarchy e.g. business departments)
  3. Project (e.g. API, Billing, Collaborators, Google Services)
    • Project ID (globally unique)
    • Project Name (not unique)
    • Project Number (internally used by google)
  4. Resources (belongs to one project | e.g. VM, Storage etc.)

IAM and Authentication

IAM - Identity and Access Management

course: Cloud Fundamentals + Securing and Integrating Components of your Application

Roles

= collections of permissions

OAuth 2.0 Access

Identity-Aware Proxy (IAP)

flowchart TD
1((User)) --> 2((IAP))
2 --> 3(Google_Authentication)
3 --> 4(IAM_Authorization)
4 --> 5(Access)

Identity Authentication

Service Accounts

Interactions with GCP


Section 1: GCP Resources

expand

course: Cloud Fundamentals + Getting Started With Application Development + Application Development with Cloud Run

Cloud Source Repositories

Cloud Build

Cloud Networking

VPC - Virtual Private Cloud

secure, individual, private cloud-computing model hosted in a public cloud

Connect VPC to other Networks (e.g. On Premise)

Cloud NAT

Cloud Load Balancing

GLB - Global Load Balancer

Frontend
URL Map
Backend Services
Serverless NEG - Network Endpoint Group
Backend

Google Cloud Armor

Cloud CDN (Content Delivery Network)

Cloud DNS


Google API Tools

Cloud Endpoints

API Gateway

Apigee API Platform


Cloud Storage


Database Overview

Cloud SQL

Cloud SQL with Cloud Run
flowchart TD
1(Application) --> 2(Cloud SQL Auth Proxy Client)
2 -- SA access token --> 3(Cloud SQL Auth Proxy Server)
3 --> 4(IAM)
4 --> 5(Cloud SQL Database Server)

Cloud Spanner

Cloud Firestore (/ Datastore)

Features\Mode Native Mode Datastore Mode
mobile and web client libraries ✔️
real-time and offline features ✔️
ideal for: mobile, web, IoT, real-time applications (no heavy writes) Server Apps (heavy read/write)

Memorystore (Redis or Memcached)

BigQuery

Cloud BigTable


Compute Options

Reminder: Containerization and Kubernetes (not GCP specific)

expand

Containerization

  • Container is a box containing partition, code and dependencies
  • portable Code and OS/Hardware of Host is a black box
  • starts as quickly as a process
  • requires container runtime

Kubernetes

  • Manage and orchestrate containers in a cluster with open source Kubernetes
  • support of stateless and stateful apps
  • consists of: Control Plane, Nodes, Pods
    • Kubernetes Cluster contains nodes which contain pods
    • Pod (smallest unit) = Running Process/App
    • Service (load balanced pods) - stable Endpoint
  • Automation of: deployment, scaling, load balancing, logging, monitoring
  • Efficiency: Containers are placed based on Compute Nodes their Hardware Requirements
  • Declarative: Explain what the goal state looks like
    • Declaration by Configuration File (deployment.yml)
    • achieve and maintain desired state with watch loop
  • Self-Healing: Automatically replaces unhealthy or failed containers
  • kubectl cli: kubectl [command] [type] [name] [flags]
    • e.g. kubectl get pods
    • e.g. kubectl get pod myApp -n flux
Kubernetes Object Model
  • each kubernetes managed item is an object
  • contains attributes and state
  • can be viewed or edited
  • Object spec - desired state
  • Object status - current state (provided by Control Plane)
  • representation of a 'type' or kind
Control Plane
  • consists of:
    • kube-ApiServer:
      • accepts commands for view/change of cluster
    • kubectl:
      • connect to kube-ApiServer
      • communicating using the Kubernetes API
      • authenticating
      • managed admission control
    • etcd:
      • clusters database
      • store state of the cluster
      • cluster configuration / nodes / pods
    • kube scheduler:
      • schedule pods onto the nodes
    • kube controller manager:
      • continuously monitors cluster for desired state
      • attempt to make changed achieving the desired state
    • kube cloud manager:
      • manages controllers that interact with underlying cloud providers
Nodes
  • each contains a
    • kublet: (kubernetes agent)
      • kube-ApiServer connects to kubelet (e.g. start pod)
      • kublet reports back
    • kube-proxy
      • maintain network connectivity among pods
Manifest declaration

Pod definition explained:

apiVersion: v1 #kubernetes api version  
kind: Pod #object
metadata: # identifier object name, unique id and optional namespace
  name: nginx #unique string per namespace
  	#uid: 4dd... #generated by kubernetes 
  labels: #key value pairs that tag objects
    app: nginx
	env: dev

Example Deployment Configuration for 3 nginx pods

apiVersion: apps/v1  
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3 #scale
  selector:
    matchLabels:
      app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest

Compute Engine - VM's

Google Kubernetes Engine (GKE)

Hybrid- or Multi-Cloud (Anthos)

course: Hybrid Cloud Modernizing Applications with Anthos

Migrate for Anthos and GKE / Migrate to containers
StratoZone
Fit Assessment Tool

Cloud App Engine

Cloud Run

Ingress Proxy (Cloud Run)
VPC Egress
IAM (Cloud Run)
Buildpacks

Cloud Functions


Messaging / Event Communication

Pub/Sub

Cloud Tasks

EventArc


Cloud Workflows

Machine Learning Intelligence

course: Securing and Integrating Components of your Application


Section 2: Build and test an application

expand

course: Getting Started With Application Development

CI (Continuous Integration)

(Code) Repository Solutions

CI/CD Pipeline Solutions


Section 2: Deploy an application

expand

course: App Deployment, Debugging, and Performance + Application Development with Cloud Run

CD - Continuous Delivery

Deploy Solutions

Terraform

Deployment Target Solutions

Serving web traffic with custom domains

3 options:

Controlling Inbound traffic


Section 3: Observability and Operations | Manage application

expand

course: Getting Started With Application Development + Application Development with Cloud Run

Observability

Monitoring

"Collecting, Processing, Aggregating and displaying real-time quantitative data [...]" e.g. Query counts, Error counts, Processing times, Server lifetimes Reference: Google's Site Reliability Engineering Book

SLI, SLO, SLA

SLI (Service Level Indicator)

Monitoring Metric, measuring one aspect of service's reliability

SLO (Service Level Objective)

Combines SLI with target reliability

SLA (Service Level Agreement)

Commitments made to your customers

Logging

Error Reporting

Cloud Trace

Cloud Profiler

Disaster Recovery


Sources