← All Projects
Web

Quora Microservices App

February 2023
JavaSpring BootSpring CloudKafkaMongoDBMySQLMaven

Overview

Four services, one gateway, one question at a time — a Quora clone built the way distributed systems actually get built.

Quora Microservices App re-creates the core of a Q&A platform — asking, answering, moderating, and administering content — as a set of independently deployable Spring Boot services. Instead of one monolith handling everything, each concern lives in its own service, reachable through a single API gateway.

Problem

A Q&A platform touches very different concerns — user accounts, question/answer content, moderation, and admin controls — each with different scaling needs and release cadence. Cramming all of that into one codebase makes it hard to deploy a moderation fix without redeploying the entire platform, and hard to reason about which service owns which data.

What I Built

  • Four independent Spring Boot services — userApp, QuoraApp (Q&A), QuoraModeratorApp, and AdminApp — each with its own controllers, services, and persistence layer
  • An Api_Gateway sitting in front of all services, acting as the single entry point and routing incoming requests to the right backend
  • Synchronous inter-service communication via RestTemplate (e.g. AdminApp calling out to other services), alongside Kafka-based asynchronous processing for decoupled, event-driven workflows
  • A dual-persistence setup spanning MongoDB and MySQL across services, matched to each service’s data shape
  • Maven-wrapper-based builds (mvnw) per service, keeping the whole system easy to build and run without extra tooling installed

Key Outcomes

  • Modeled a realistic content-platform architecture — auth/user, content, moderation, and admin cleanly separated into services that scale and deploy independently
  • Combined synchronous (REST) and asynchronous (Kafka) communication patterns in the same system, mirroring how real platforms balance immediate requests against background processing
  • Used an API gateway as the single client-facing entry point, keeping individual service locations and internals hidden from consumers — a pattern directly transferable to production-grade distributed systems
  • Structured the codebase so each domain service can evolve, redeploy, and scale on its own, without touching the rest of the platform