Skip to content
Sanjay Singh Bhandari
ShowcaseCase StudiesJourneyExpertiseLeadershipAI EngineeringEducation
ResumeContact

Explore

  • Engineering Showcase
  • Case Studies
  • Engineering Journey
  • Technical Expertise
  • Leadership
  • Architecture
  • AI Engineering

Credentials

  • Achievements
  • Education
  • Resume

Contact

  • Professional Hub
  • LinkedIn
  • LinkedIn
  • GitHub

© 2026 Sanjay Singh Bhandari.

Built with Next.js, TypeScript, and Tailwind CSS · v1.2.0

    1. Home/
    2. Architecture Gallery

    Architecture Gallery

    How the decisions get made, not just what got built.

    Not a tutorial and not documentation — a curated look at how architectural decisions actually get made: patterns organized by engineering concern, five named production systems examined in depth, the specific decisions behind them, and the principles that keep recurring. Every pattern either comes from a verified system, linked below it, or is explicitly labeled a generic pattern with no claimed production instance.

    10 categories · 12 patterns · 9 decision records

    On this page

    • Architecture Categories
    • Architecture Cards
    • Verified Architecture Showcase
    • Architecture Decision Records
    • Technology Relationships
    • Engineering Principles

    Architecture Categories

    Ten engineering concerns, each with at least one pattern below — grouped by what the pattern is for, not by which technology implements it.

    Backend Architecture

    1 pattern

    How an enterprise Java backend is structured so it can keep changing.

    View patterns →

    Microservices

    1 pattern

    Splitting a system into independently deployable, independently scalable services.

    View patterns →

    Authentication

    2 patterns

    Establishing who a caller is, and trust across an organizational boundary.

    View patterns →

    API Design

    1 pattern

    The integration surface a service exposes to the rest of the system.

    View patterns →

    Messaging

    1 pattern

    Moving state between services as an explicit sequence of events.

    View patterns →

    Caching

    1 pattern

    Keeping latency-sensitive read paths fast without overloading the system of record.

    View patterns →

    Observability

    2 patterns

    Making a running system's behavior inspectable without reproducing it locally.

    View patterns →

    Deployment

    1 pattern

    Getting a change from merged to running in production, repeatably.

    View patterns →

    AI Systems

    1 pattern

    Grounding and structuring LLM-based systems around real source data.

    View patterns →

    Security

    1 pattern

    Enforcing access control centrally rather than scattering it through business logic.

    View patterns →

    Patterns that recur across categories

    A handful of shapes show up in more than one category above — each is explored as individual cards and decision records elsewhere on this page.

    • Identity, authentication, and cross-boundary trust. Two of the case studies are fundamentally about establishing trust across a boundary the platform doesn't fully control: standardizing OAuth2 across independently-run client deployments, and isolating tenants in the Beckn adapter using the protocol's own Ed25519 signature model instead of a bespoke mechanism.oauth2 authentication platformbeckn protocol verification adapter
    • Service decomposition driven by change and scale profile, not by team boundaries. The Enterprise Exchange Platform's 16-service split follows the natural seams in the domain (order intake, matching, settlement, notification) — each with different scaling and change characteristics — rather than being split to match a team org chart.enterprise exchange platform
    • Event-driven flow for multi-step, asynchronous business processes. Both the Exchange Platform's order-to-settlement flow and the Beckn adapter's verification lifecycle are modeled as explicit sequences of state transitions (Kafka events in one case, a state machine in the other) rather than as a single synchronous call chain.enterprise exchange platformbeckn protocol verification adapter
    • Individual ownership inside team-scale systems. Across every case study, there is a specific piece with individually-attributable ownership (the WRI Connector build, the OAuth2 rollout, the 16-service architecture, InterGlobe's financial backend modules) even though the surrounding system was built with a team — architecture decisions were made and owned, not just distributed.enterprise exchange platformbeckn protocol verification adapteroauth2 authentication platformfinancial transaction platform

    Architecture Cards

    Each card names a real decision behind it, or is labeled a generic pattern with no claimed production instance — never a blend of the two.

    Backend Architecture

    How an enterprise Java backend is structured so it can keep changing.

    Layered Backend, Evolved Incrementally

    Verified · production

    Give a growing enterprise codebase a structure that can absorb new features and a growing team without a rewrite.


    Microservices

    Splitting a system into independently deployable, independently scalable services.

    Domain-Seam Service Decomposition

    Verified · production

    Let independently-changing parts of a system scale and deploy on their own schedule.


    Authentication

    Establishing who a caller is, and trust across an organizational boundary.

    Standardized OAuth2 Across Independent Deployments

    Verified · production

    Give every deployment of a multi-tenant platform the same, centrally-reviewable authentication model.

    Protocol-Native, Signature-Based Trust

    Verified · production

    Establish trust and tenant isolation across an organizational boundary the platform doesn't fully control.


    API Design

    The integration surface a service exposes to the rest of the system.

    REST as the Default Integration Surface

    Verified · production

    Give a service a well-understood, broadly-tooled integration surface for both internal and external callers.


    Messaging

    Moving state between services as an explicit sequence of events.

    Event-Driven Flow for Multi-Step Business Processes

    Verified · production

    Make a multi-step business process inspectable and recoverable at every intermediate step.


    Caching

    Keeping latency-sensitive read paths fast without overloading the system of record.

    Redis for Low-Latency Lookup Paths

    Verified · production

    Keep latency-sensitive read paths fast without adding load to the system of record.


    Observability

    Making a running system's behavior inspectable without reproducing it locally.

    Structured Logging and Centralized Metrics

    Generic pattern

    Make a distributed system's behavior inspectable without attaching a debugger to a specific instance.

    Circuit Breakers and Bounded Retries

    Generic pattern

    Stop a failing downstream dependency from taking the calling service down with it.


    Deployment

    Getting a change from merged to running in production, repeatably.

    Containerized Deployment with CI/CD

    Verified · production

    Make releases repeatable and reduce the manual steps between a merged change and it running in production.


    AI Systems

    Grounding and structuring LLM-based systems around real source data.

    Retrieval-Augmented Generation to Ground LLM Output

    Verified · personal project

    Reduce an LLM's tendency to answer confidently from its parameters alone by grounding its output in real source data.


    Security

    Enforcing access control centrally rather than scattering it through business logic.

    Centralized Authorization with Spring Security

    Verified · production

    Enforce a single, consistent authorization model at the framework layer rather than scattering access checks through business logic.

    Verified Architecture Showcase

    Five named, verified systems — architecture summary, decisions, and stack from each case study.

    OAuth2 Authentication Platform

    Opal BPM India Pvt Ltd

    A standardized OAuth2 authentication and authorization system rolled out across multiple client deployments of Opal's platform.

    An OAuth2-based authorization layer sitting in front of Opal's Spring MVC / Spring Boot services, using Spring Security for enforcement, providing a single, consistent authentication and authorization model that every client deployment adopts instead of a bespoke per-client scheme.

    Standardize on OAuth2 as the single authentication/authorization model across all client deployments.

    Why — A common, well-understood standard reduces the security review burden per client and lets the platform team reason about access control once instead of per-deployment.

    Technology stack

    JavaSpring BootSpring SecurityOAuth2JWTREST APIs
    Read the full case study →

    Enterprise Exchange Platform

    Opal BPM India Pvt Ltd

    A 16-microservice trading platform matching buyers and sellers across multi-tenant e-waste categories, run at 99.9% uptime.

    The platform is composed of 16 interconnected microservices on Java 21 and Spring Boot 3.4.13, covering buyer/seller order management, trade matching, settlement, and notifications. PostgreSQL is the system of record; Kafka carries the event flow between services (orders → matching → settlement → notification); Redis supports low-latency lookups and caching in the matching/notification path.

    Decompose the platform into 16 focused microservices rather than a smaller number of broader services.

    Why — Order intake, trade matching, settlement, and notification have distinct scaling and change profiles per tenant and waste category — separating them let each evolve and scale independently.

    Tradeoff accepted — More services to operate, deploy, and monitor, and more discipline required in inter-service contracts and versioning.

    Use Kafka as the backbone for order-to-settlement event flow.

    Why — Trade matching and settlement are inherently event-driven (an order placed, matched, and settled is a sequence of state transitions across services) — Kafka gives durable, ordered delivery and lets notification consume the same event stream without coupling to the transactional path.

    Technology stack

    Java 21Spring Boot 3.4.13MicroservicesPostgreSQLKafkaRedisAWSDocker
    16
    Microservices
    99.9%
    Production uptime
    <100ms
    Notification delivery
    5
    Waste categories supported
    Read the full case study →

    Enterprise Artwork Management Platform

    Opal BPM India Pvt Ltd

    Opal's core product lifecycle, regulatory compliance, and packaging artwork management platform for private-brand retailers — architected and built from the company's second employee onward.

    A distributed, service-oriented enterprise application built on the Spring stack (Spring MVC → Spring Boot as the platform matured), with ExtJS and later React on the client side, deployed via AWS EC2 and Docker with Jenkins-driven CI/CD.

    Evolve the platform from Spring MVC toward Spring Boot and Microservices as it scaled.

    Why — As the client base and feature surface grew, moving toward Spring Boot and a microservices decomposition supported independent scaling and deployment of platform capabilities rather than a single monolithic release train.

    Migrate the frontend from ExtJS toward React over the platform's lifetime.

    Why — ExtJS met the platform's early enterprise-UI needs; React was adopted as the ecosystem and hiring pool shifted, without a full-stop rewrite.

    Technology stack

    JavaSpring MVCSpring BootSpring SecurityMicroservicesExtJSReactAWSDockerJenkinsCI/CD
    9+
    Years in continuous production
    Read the full case study →

    HiringEasy

    Personal project

    A personal product built to make part of the hiring workflow easier — full scope to be confirmed.

    Technology stack

    Python
    Read the full case study →

    RAG Applications

    Personal project

    Retrieval-augmented generation work applying LangChain-based pipelines to ground LLM output in real source data.

    Technology stack

    LangChainRAGPythonPrompt Engineering
    Read the full case study →

    Architecture Decision Records

    Every decision already on record for the five case studies above, one ADR per decision — collapsed by default; expand any of them for context, alternatives, and consequences.

    Enterprise Exchange Platform

    Beckn Protocol Verification Adapter

    OAuth2 Authentication Platform

    Enterprise Artwork Management Platform

    Financial Transaction Platform

    Technology Relationships

    A conceptual layering for a Java enterprise backend — each layer shows only the verified technology that actually belongs there.

    1. Java

      Java 21Java
    2. Spring Boot

      Spring Boot 3.4.13Spring BootSpring MVC
    3. REST APIs

      REST APIs
    4. Security

      Spring SecurityOAuth2JWT
    5. Messaging

      KafkaCelery
    6. Databases

      PostgreSQLRedis
    7. Deployment

      AWSDockerJenkinsCI/CD

    Conceptual, not a deployment diagram

    This is a typical layering shape, not a literal request path — a real request doesn’t necessarily pass through every layer in this order on every call.

    Engineering Principles

    Five maxims, each tied to one already-verified decision that put it into practice.

    Design for maintainability.

    An architecture only earns its keep if it can be changed later without a rewrite — Opal's platform moved from Spring MVC toward Spring Boot, and its frontend from ExtJS toward React, incrementally and in production, rather than as a stop-the-world migration.

    Read the case study →

    Prefer composition over duplication.

    Standardizing OAuth2 across multiple independently-run client deployments replaced N separate, bespoke authentication implementations with one shared, centrally-reviewable capability every deployment composes with.

    Read the case study →

    Measure before optimizing.

    The 30% reduction in production-issue resolution time at InterGlobe is a measured before/after outcome of a specific ownership change, not a general performance claim.

    Read the case study →

    Automate repetitive work.

    Deployment for Opal's platform runs through a Jenkins-driven CI/CD pipeline rather than manual release steps, once the team and release cadence grew past what manual deployment could keep up with.

    Read the case study →

    Build reusable platforms.

    Opal's artwork-management platform is one codebase serving its entire private-brand retail client base, not a fork per client — the same reuse principle behind standardizing OAuth2 once across those same deployments instead of per-client.

    Read the case study →
    Back to top

    On this page

    • Architecture Categories
    • Architecture Cards
    • Verified Architecture Showcase
    • Architecture Decision Records
    • Technology Relationships
    • Engineering Principles