4.8 KiB
Executable File
4.8 KiB
Executable File
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
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
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. 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)
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)
# 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
- Functional & Non-functional requirements specified
- Product selection deferred during discovery and resolved in design phase
- Regional High Availability and Security IAM boundaries configured
- Mermaid diagram follows valid graph syntax
- 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
- Initialize Terraform:
terraform init - Validate Configuration:
terraform plan -var="project_id=YOUR_PROJECT_ID" - Deploy Blueprint:
terraform apply