Goal: Pass the GCP Professional Cloud Developer exam while progressively moving FlightScanner to GCP. Constraint: 8 hours/week max. Exam priority > Project priority.
| Activity | Hours/Week | Purpose |
|---|---|---|
| Videos | 4h | Content coverage |
| Labs (Qwiklabs) | 2h | Guided hands-on |
| Practice Questions | 1h | Exam pattern recognition |
| FlightScanner Migration | 1h | Real-world application |
Course: Google Cloud Fundamentals: Core Infrastructure Videos:
- Introduction to Google Cloud Platform
- Resources & Access in the Cloud
- Virtual Machines & Networks in the Cloud
- Storage in the Cloud
- Containers in the Cloud
- Applications in the Cloud
- Developing, Deploying and Monitoring in the Cloud
- Big Data and Machine Learning in the Cloud
Task: Deploy fs-service to Cloud Run
- Add Jib to
pom.xml. - Push container to Artifact Registry.
- Deploy to Cloud Run (allow unauthenticated).
Deliverable:
https://fs-service-xxx.run.app/flightsreturns data.
Course: Developing Applications with Google Cloud: Foundations Videos:
- Best practices for cloud application development (1 & 2)
- Handling authentication and authorization
- Using Secret Manager
- Getting started with Google Cloud development
- Cloud APIs and the Google Cloud SDK
- The Google Cloud CLI
- Compute options for your application (Compute Engine, GKE, Cloud Run)
Task: Health Checks + Graceful Shutdown
- Add
/health/liveand/health/readyendpoints. - Configure startup, liveness, and readiness probes in Cloud Run.
- Add
@PreDestroyhook for graceful shutdown logging. Deliverable: Graceful shutdown log message appears on instance termination.
Course: Developing Applications with Cloud Run on Google Cloud: Fundamentals Videos:
- Fundamentals of Cloud Run
- Container lifecycle & Autoscaling
- Service Identity and Authentication
- Application Development, Testing, and Integration
- Managing service deployments and revisions
- Integrating with Google Cloud services
Task: Load Balancing + Traffic Splitting
- Deploy a new revision of
fs-service(e.g., change a header). - Split traffic 90% (old) / 10% (new) using
gcloud. Deliverable:curlloop shows mixed responses.
Course: Developing Applications with Cloud Run Functions Videos:
- Introduction to Cloud Run functions
- Calling and connecting Cloud Run functions
- Triggering functions
- Connecting Cloud Run functions with workflows
- Integrating functions with cloud databases
Task: Replace RabbitMQ with Pub/Sub
- Create Pub/Sub topic
flight-events. - Update
fs-serviceto publish to this topic (replace RabbitMQ code). - Create Push subscription targeting
fs-warehouseendpoint. Deliverable: Message published from service arrives at warehouse via Pub/Sub.
Course: Developing Applications with Google Cloud: Foundations (continued) Videos:
- Storing Application Data (Lab/Module)
- Cloud Storage use cases
- Cloud SQL vs Cloud Spanner vs Firestore
Task: Cloud SQL Setup
- Create Cloud SQL PostgreSQL instance (Private IP preferred).
- Configure Cloud SQL Auth Proxy for local connection. Deliverable: Connect to remote DB from local machine via proxy.
Course: Developing Containerized Applications on Google Cloud Videos:
- Introduction to Containers on Google Cloud
- Building and Packaging Container Images
- Storing Images in Artifact Registry
- deploying Applications to Google Kubernetes Engine (Start watching)
Task: Connect fs-warehouse to Cloud SQL
- Configure
fs-warehouse(Quarkus) to use Cloud SQL JDBC connection. - Configure connection pooling (HikariCP). Deliverable: Data persists across Cloud Run restarts.
Course: Developing Applications with Google Cloud: Foundations (continued) Videos:
- Monitoring and performance tuning
- Managing performance
- Google Cloud Observability
- Logging and metrics
Task: Add Memorystore (Redis)
- Create Memorystore Redis instance.
- Configure Serverless VPC Access connector.
- Implement Cache-Aside pattern in
fs-servicefor flight searches. Deliverable: Repeat requests show significantly lower latency.
Course: Deploy Kubernetes Applications on Google Cloud Videos:
- Introduction to Google Kubernetes Engine
- Kubernetes Architecture: Pods, Services, Deployments
- Creating GKE Clusters
- Deploying Workloads to GKE
Task: Signed URLs for Uploads
- Create GCS bucket.
- Implement
getSignedUrlendpoint infs-service. - Test upload with
curl -X PUT. Deliverable: File uploaded directly to bucket using generated URL.
Course: Developing Applications with Cloud Run on Google Cloud (Revisit Security Modules) Videos:
- Service Accounts and Identity
- Principle of Least Privilege
- Implementing Least Privilege IAM Policy Bindings
- Secrets and Environment Variables
Task: Security Audit (Workload Identity)
- Create Service Accounts in GCP.
- Configure Workload Identity (Bind K8s SA to GCP SA).
- Remove any JSON key files; use
GoogleCredentials.getApplicationDefault(). Deliverable: Application works with NO credential files.
Course: Developing Applications with Google Cloud: Foundations (Observability Module) Videos:
- Google Cloud Observability (Deep Dive)
- Cloud Trace and Cloud Profiler
- Error Reporting
- Debugging Applications
Task: Observability (Tracing)
- Add OpenTelemetry dependencies.
- Propagate trace context in Pub/Sub messages. Deliverable: Single trace in Cloud Trace spanning service -> queue -> warehouse.
Course: Streamline App Development with Gemini Code Assist Videos:
- Gemini Code Assist: AI-powered code generation
- Accelerate App Development with Gemini CLI
- Integrating Applications with Gemini 1.0 Pro
Task: CI/CD (Cloud Build)
- Create
cloudbuild.yaml. - Steps: Test -> Jib Build -> Scan -> Deploy. Deliverable: Git push triggers deployment.
Course: Review weak areas + Practice Exams Focus:
- Re-watch complex topics (Networking, IAM)
- Complete official sample questions
- Take full practice exams
Task: Final Review
- Final end-to-end test.
- Ensure all 12-Factor principles are met. Deliverable: Validated, running architecture.
- Week 1: Cloud Run
- Week 2: Reliability
- Week 3: Traffic Splitting
- Week 4: Pub/Sub
- Week 5: Cloud SQL Setup
- Week 6: SQL Integration
- Week 7: Redis Cache
- Week 8: Signed URLs
- Week 9: Workload Identity
- Week 10: Tracing
- Week 11: CI/CD
- Week 12: Done
- Practice First: Practice questions (20/week) are mandatory.
- Time Box: Deep dives are limited to 1 hour. If stuck, stop and move to theory.
- Exam Focus: This project is a learning tool, not a production deliverable. Prioritize exam topics over code perfection.
- Matt Lui's Study Notes - Covers all 91 exam topics
- Whizlabs (~$20)
- Udemy (in28minutes) (~$15)