Project-2: 10-Tier Cloud-Native Microservices Deployment on Kubernetes (GKE)

Architecting, Containerizing & Deploying an E-Commerce Application (Online Boutique / JioMart) using Go, Python, Node.js, Java, C#, Redis & GCP GKE

Real-Time Production Project | Microservices & Kubernetes Architecture

🚀 Project Overview & Architectural Foundation

In modern enterprise cloud engineering, moving from monolithic systems to Cloud-Native Microservices Architecture is the gold standard for high availability, fault isolation, and independent scaling. This real-time project demonstrates how to deploy a 10-Tier Cloud-Native Microservices E-Commerce Application (Online Boutique / JioMart) on Google Kubernetes Engine (GKE).

Kubernetes Real-Time Cloud-Native Microservices Project Cover
Figure 1: Project 2 — Kubernetes 10-Tier Cloud-Native Microservices Bootcamp Overview
Source Code (Git)
Docker Container Images
Kubernetes Manifests (.yaml)
GKE Cluster Master
External LoadBalancer IP
Project Goal: Deploy 10 independent microservices written in 5 different programming languages (Go, Node.js, Python, Java, C#) plus Redis Cache and a Locust Load Generator onto a Managed Kubernetes Cluster (GKE), verify self-healing behavior, and test service fault isolation.

🏗️ Monolith vs. Microservices Architecture

Before deploying to Kubernetes, understanding software architectural patterns is vital for making sound infrastructure decisions.

Monolithic vs Microservices Architecture Metaphor
Figure 2: Monolithic vs. Microservices Analogy (Single Restaurant Kitchen vs. Specialized Food Court Stalls)

The Food Court Analogy

  • Monolithic Architecture (Single Kitchen): All dishes (Pizza, Tacos, Sushi, Pasta) are cooked in one big kitchen by one team. If the kitchen oven fails or fire breaks out, the entire restaurant shuts down immediately. Hard to scale individual dishes.
  • Microservices Architecture (Food Court Stalls): Separate, independent stalls for Pizza, Tacos, and Sushi. Each stall operates independently with its own tools and staff. If the Tacos stall closes for maintenance, the Pizza and Sushi stalls continue serving customers without interruption!
6 Key Software Architectural Patterns Overview
Figure 3: 6 Essential Software Architectural Patterns Every DevOps Engineer Should Know

6 Key Architectural Patterns

  1. Event-Driven Architecture: Decoupled services communicating asynchronously via Event Topics (Kafka/RabbitMQ).
  2. Layered (N-Tier) Architecture: Traditional UI ➔ Business Logic ➔ Data Access ➔ Database layers.
  3. Monolithic Architecture: Single unified codebase containing all business domain functions.
  4. Microservices Architecture: Fine-grained, loosely-coupled services delivering specific business goals.
  5. Model-View-Controller (MVC): Standard request/response pattern for rendering UI views from data models.
  6. Master-Slave Architecture: Primary database node handling writes while secondary replica nodes handle read scaling.
Event Driven and Layered Architecture Diagram
Figure 4: Deep Dive into Event-Driven Producer-Consumer & Layered Patterns
Monolithic vs Microservices Structure Breakdown
Figure 5: Monolithic Single Database vs. Microservices Database-per-Service Pattern
MVC and Master-Slave Database Architecture
Figure 6: MVC Web Request Flow & Master-Slave Read/Write Database Replication

📊 Monolithic vs. Microservices Comparison Matrix

Detailed Feature Comparison Matrix Monolithic vs Microservices
Figure 7: In-Depth Technical & Operational Comparison Matrix
Architecture Metric Monolithic Architecture Microservices Architecture
Codebase Structure Single, monolithic codebase for all features. Small, dedicated repositories per microservice.
Startup Time Slow startup time as entire app must load. Ultra-fast startup time for individual services.
Fault Isolation Poor. One bug or memory leak crashes entire app. Excellent. Failure in one service does not crash others.
Coupling Tightly coupled modules. Loosely coupled via gRPC & REST APIs.
Scalability Wasteful. Must scale entire VM/app instance. Independent scaling of high QPS services (e.g. Search/Cart).
Technology Stack Single language & framework locked. Multi-Language (Go, Python, Node.js, Java, C# in one app!).

🛒 10-Tier Cloud-Native Microservices Application Architecture

The application deployed in this project is Online Boutique (originally designed by Google Cloud Engineering), a 10-tier cloud-native microservices e-commerce application where users can browse items, add products to cart, convert currencies, and checkout orders.

Hands-on Agenda and Multi-Language Stack
Figure 8: Hands-On Agenda, Multi-Language Stack & Core Kubernetes Resources
Online Boutique 10 Tier Cloud Native Microservices Architecture Diagram
Figure 9: Online Boutique 10-Tier Microservices Topology & Communication Graph
Microservice Language Mapping Diagram
Figure 10: Multi-Language Distribution across Microservices

Microservices Technical Breakdown

Microservices Catalog Table Responsibilities and Languages
Figure 11: Detailed Service Catalog, Language Specs & Responsibilities Table
Service Name Language / Tech Function & Responsibility
frontend Go Exposes HTTP web server, renders UI views, manages user session IDs.
cartservice C# / .NET Stores and retrieves items in the user's shopping cart using Redis.
redis-cart Redis In-memory key-value cache database storing shopping cart data.
productcatalogservice Go Provides product list from JSON file & product search capability.
currencyservice Node.js Highest QPS service! Converts money amounts using European Central Bank rates.
paymentservice Node.js Charges mock credit card info and returns a transaction ID.
shippingservice Go Calculates shipping costs and handles mock item dispatching.
emailservice Python Sends order confirmation email notifications to users.
checkoutservice Go Orchestrates cart retrieval, payment charge, shipping & email sending.
recommendationservice Python Recommends complementary products based on items in the cart.
adservice Java Provides contextual text banner ads based on product keywords.
loadgenerator Python / Locust Simulates realistic customer traffic flows by sending continuous requests.

⚙️ How Kubernetes Deployment Controller Works

When you execute kubectl apply -f manifest.yaml, Kubernetes Master Control Plane orchestrates object creation across worker nodes automatically.

How Kubernetes Deployment Works Diagram
Figure 12: Kubernetes Master Control Plane & Deployment Controller Workflow
  1. Developer / Deployer: Runs kubectl apply -f kubernetes-manifests.yaml.
  2. Kube-APIServer: Validates authentication, authorization, and manifest schema syntax.
  3. etcd Datastore: Persists the desired state of all 10 Deployments and Services.
  4. Deployment Controller & ReplicaSet Controller: Ensures desired replica count matches actual running pods.
  5. Kube-Scheduler: Assigns pending Pods to healthy Worker Nodes based on CPU/RAM capacity.
  6. Kubelet: Instructs container runtime (containerd/Docker) to pull images and start containers on Worker Nodes.
Project Repository Structure and Manifests
Figure 13: Project Source Repository Structure & `release/kubernetes-manifests.yaml`

Hands-On Guide Deploying 10-Tier Application on GKE

Step-by-step GKE Deployment Commands
Figure 14: Step-by-Step Execution Commands for GKE Deployment & External IP Discovery

Step 1: Create GKE Cluster & Connect via Cloud Shell

In GCP Console, launch a Google Kubernetes Engine (GKE) Standard/Autopilot cluster and authenticate:

GCP Cloud Shell - GKE Authentication
# Set Project ID & Region
gcloud config set project your-gcp-project-id
gcloud container clusters get-credentials online-boutique-cluster --region us-central1

Step 2: Clone Code Repository

Terminal Command
# Clone official repository
git clone https://github.com/GoogleCloudPlatform/microservices-demo.git
cd microservices-demo

Step 3: Deploy All Microservices to GKE

Kubectl Command
# Deploy all 10 microservices, redis cache & load generator in one command
kubectl apply -f ./release/kubernetes-manifests.yaml

Step 4: Watch Pod Creation Status

Kubectl Command
# Watch pods transition from ContainerCreating -> Running
kubectl get pods -w

Step 5: Get Public External LoadBalancer IP

Bash One-Liner
# Fetch the public ingress IP assigned to the frontend service
kubectl get service frontend-external | awk '{print $4}'

Open the printed External IP address in your browser — your 10-Tier E-Commerce Online Boutique is live!

🧪 Self-Healing & Microservices Fault Isolation Verification

Self-healing and Fault Isolation Hands-on Verification Tasks
Figure 15: Self-Healing Pod Recreation & Fault Isolation Tasks

Task 1: Testing Kubernetes Self-Healing

Delete any active running pod manually to test Kubernetes self-healing resilience:

Terminal Command
# Delete a pod manually
kubectl delete pod $(kubectl get pods -l app=emailservice -o jsonpath="{.items[0].metadata.name}")

# Immediately watch pod status
kubectl get pods -l app=emailservice
Result: The Kubernetes ReplicaSet Controller instantly detects the missing pod and launches a replacement pod within 2–3 seconds!

Task 2: Testing Microservice Fault Isolation

Delete an entire deployment (e.g. recommendationservice) to see if the rest of the application breaks:

Terminal Command
# Delete recommendation service deployment
kubectl delete deployment recommendationservice

Observation & Learning:

Refresh the Online Boutique web app in your browser! Notice that the storefront, product catalog, shopping cart, currency conversion, and checkout still work perfectly — only the "Recommended Products" banner displays gracefully handled fallback content! This proves the power of microservices loose coupling and fault isolation.

💼 Resume Bullet Points & DevOps Engineer Responsibilities

DevOps Engineer Resume Points K8s Project JioMart
Figure 16: E-Commerce Kubernetes DevOps Engineer Resume Points & Production Responsibilities

You can add these high-impact production bullet points to your resume based on this project:

  • Architected and deployed a production-grade 10-Tier Cloud-Native Microservices E-Commerce Application on Google Kubernetes Engine (GKE).
  • Authored and maintained comprehensive Kubernetes Manifests (Deployments, Services, ConfigMaps, Secrets, Ingress) for 10 loosely-coupled microservices written in Go, Python, Node.js, Java, and C#.
  • Configured high-availability in-memory caching using Redis for shopping cart state management, reducing database load.
  • Implemented Kubernetes Cluster Autoscaling & Horizontal Pod Autoscaler (HPA) to handle peak traffic spikes seamlessly.
  • Configured gRPC & RESTful service discovery across microservices using Kubernetes internal ClusterIP Services.
  • Demonstrated zero-downtime Rolling Updates and verified Kubernetes self-healing and pod replication resilience.
  • Participated in 24/7 on-call rotation managing production cluster incident response and root cause analysis (RCA).
☸️
Cloud DevOps Hub Production Kubernetes 10-Tier Microservices Deployment Guide