Skip to contentSkip to main content

KubeShop

A polyglot microservices e-commerce platform deployed on AWS EKS to showcase a complete DevSecOps pipeline.

KubeShop

Overview

KubeShop is a full-fledged e-commerce platform that I built to really dig into modern cloud-native architecture. Instead of just building a simple monolithic app, I decided to go all out and create a polyglot microservices setup. It has a Next.js frontend, and the backend is split into multiple services written in Go, Python, Node.js, and Java. The whole thing runs on AWS EKS and is wired up with a complete DevSecOps pipeline from day one.

What I Did

I set up the entire infrastructure from scratch using Terraform to provision the EKS cluster and networking on AWS. For the deployment side, I implemented a GitOps workflow using Argo CD, paired with Jenkins for continuous integration. I also dove deep into observability by wiring up Prometheus and Grafana to keep an eye on all the moving parts, and I even threw in Locust for load testing to make sure the cluster could handle real traffic.

Tech Stack

AWS EKSKubernetesTerraformArgo CDJenkinsNext.jsGoSpring Boot

Technical Decisions

I went with a polyglot backend intentionally to prove out the idea that Kubernetes doesn't care what language you write in, as long as it's containerized. For the infrastructure, Terraform was a no-brainer for managing AWS resources reliably. I chose Argo CD for deployments because I wanted that single source of truth—knowing that whatever is sitting in my Git repository is exactly what's running in my cluster gives you so much peace of mind.

Architecture

KubeShop Architecture

What I Learned

This project was a massive learning experience in distributed systems. Managing a bunch of different databases (MongoDB, PostgreSQL, Redis) across different services really forced me to figure out data persistence in Kubernetes. I also got a lot more comfortable with infrastructure-as-code and saw firsthand why GitOps is such a game-changer for keeping deployments safe, predictable, and out of the terminal.