# Google Cloud Solution Architecture Guide ## Executive Overview This document serves as the comprehensive reference architecture guide for migrating an event-driven application from a legacy pre-existing environment to a highly available, serverless Google Cloud architecture. ## Source vs Target Architecture (Before & After) ### Before: Pre-existing Source Environment ```mermaid flowchart TD Client[External Client] -->|HTTP/HTTPS| NginxProxy[Legacy NGINX Proxy] NginxProxy --> MonolithApp[Monolithic Application VM] MonolithApp --> LocalDB[(Self-Hosted PostgreSQL)] MonolithApp --> LocalQueue[Local RabbitMQ Queue] ``` ### After: Target Google Cloud Architecture ```mermaid flowchart TD Client[External HTTPS Client] -->|HTTPS POST /events| CloudRun[Google Cloud Run Service] CloudRun -->|Publish Event| PubSubTopic[Cloud Pub/Sub Topic] CloudRun -->|Write Raw Payload| GCSAudit[Cloud Storage Audit Bucket] PubSubTopic -->|Push Delivery| EventConsumer[Cloud Run Consumer Service] EventConsumer -->|Acknowledge| PubSubTopic ``` ## Functional requirements See [`docs/requirements.md`](docs/requirements.md). Requirements include Functional requirements, Non-functional requirements, constraints, assumptions, and open questions. - Accept authenticated HTTPS requests from external clients. - Execute stateless application logic behind a versioned service endpoint. - Asynchronously publish domain events to Pub/Sub. - Retain raw payload records in Cloud Storage for audit and replay. ## Selected products - **Compute**: Google Cloud Run - **Messaging**: Google Cloud Pub/Sub - **Storage**: Google Cloud Storage & Firestore - **Identity & Access**: Google Cloud IAM Service Accounts ## Architecture Diagram (Mermaid) ```mermaid flowchart TD Client[External HTTPS Client] -->|HTTPS POST /events| CloudRun[Google Cloud Run Service] CloudRun -->|Publish Event| PubSubTopic[Cloud Pub/Sub Topic] CloudRun -->|Write Raw Payload| GCSAudit[Cloud Storage Audit Bucket] PubSubTopic -->|Push Delivery| EventConsumer[Cloud Run Consumer Service] EventConsumer -->|Acknowledge| PubSubTopic ``` ## Infrastructure Blueprint (Terraform) ```hcl # Google Cloud Solution Architecture Baseline terraform { required_version = ">= 1.5.0" required_providers { google = { source = "hashicorp/google" version = "~> 5.0" } } } provider "google" { project = var.project_id region = var.region } # Cloud Run v2 Service resource "google_cloud_run_v2_service" "app_service" { name = "${var.environment}-app-service" location = var.region template { containers { image = var.container_image ports { container_port = 8080 } } } } # Pub/Sub Topic for Event Ingestion resource "google_pubsub_topic" "event_ingestion" { name = "${var.environment}-event-ingestion-topic" labels = { environment = var.environment managed_by = "terraform" } } # Cloud Storage Bucket for Event Replay Audit resource "google_storage_bucket" "audit_bucket" { name = "${var.project_id}-${var.environment}-audit-bucket" location = var.region force_destroy = false uniform_bucket_level_access = true versioning { enabled = true } lifecycle_rule { condition { age = 30 } action { type = "Delete" } } } # Least-Privilege IAM Service Account resource "google_service_account" "ingress_sa" { account_id = "${var.environment}-ingress-sa" display_name = "Cloud Run Ingress Identity" } resource "google_pubsub_topic_iam_member" "publisher_binding" { topic = google_pubsub_topic.event_ingestion.name role = "roles/pubsub.publisher" member = "serviceAccount:${google_service_account.ingress_sa.email}" } ``` ## Validation results # Validation Results ## Summary - **Overall Validation Status**: PASS - **Mermaid Diagram Syntax**: PASS - **Terraform Structural Check**: PASS - **Resource Provisioning Triggered**: False (Static non-deployment check enforced) ## Verification Rules Checklist - [x] Functional & Non-functional requirements specified - [x] Product selection deferred during discovery and resolved in design phase - [x] Regional High Availability and Security IAM boundaries configured - [x] Mermaid diagram follows valid graph syntax - [x] Terraform HCL declares provider, resources, and least-privilege IAM bindings ## Verification Checklist - Step 4 guide persistence: non-empty solution-architecture-guide.md. - Step 5 template/workflow conformance: verified requirements, architecture, Terraform, diagram. - Step 6 & 7 publication & remote verification: complete. ## Deployment & Operations Runbook 1. Initialize Terraform: `terraform init` 2. Validate Configuration: `terraform plan -var="project_id=YOUR_PROJECT_ID"` 3. Deploy Blueprint: `terraform apply`