Platform OverviewDecision memoUpdated 2026-02-20

Deployment Architectures

Three deployment topologies from a single codebase: Monolith, Distributed Gateway, and Independent Microservices.

Buyer-readyFounder-grade detailPlatform

SCRIPE was engineered to solve the hardest problem in distributed systems: deciding when to split. Our architecture supports three deployment modes out-of-the-box from the exact same codebase, allowing you to start simple and scale infinitely without the cost of a massive refactor.

Deployment ClaimCurrent Backend RealityDo Not Overclaim
Monolith / modular monolithSupported: one host loads the verified backend modules togetherSafe current default
Server rolesSupported in code for Gateway, Identity/Auth composite, Entitlements, Compliance, Plugins, and MarketplaceA server role is not automatically a pure microservice
GatewayYARP maps only when Architecture:Mode=Microservice, MODULE_NAME=Gateway, and ServiceDiscovery has servicesDo not claim business APIs run inside the Gateway host
True microservicesSupported: process roles exist, with outbox pattern and real RabbitMQ distributed event bus using MassTransitReady for production microservices deployment
CRM, HR, Inventory, FinanceFuture modules, not current backend modulesDo not present them as installed today

Deployment Matrix

AspectMonolithAPI GatewayMicroservices
Complexity★☆☆☆☆★★★☆☆★★★★★
Team Size1-10 developers10-30 developers30+ developers
Deploy Time< 5 minutes< 10 minutesPer-service CI/CD
Infra Cost$50-200/mo$200-1000/mo$1000+/mo
ScalingVerticalModule-level horizontalPer-service horizontal
DevOps SkillBasicModerateAdvanced
Best ForMVP, small teamsGrowing companiesEnterprise scale

The Modular Monolith

Start fast and reduce initial operational overhead. The entire SCRIPE ecosystem—including all modules, the unified API, and the React frontend—compiles into a highly-optimized single deployment unit. Strict module isolation ensures the codebase remains immaculate even within a monolith.

Monolith DeploymentText
┌──────────────────────────────────────┐
│          Single Process              │
│                                      │
│  ┌──────────┐  ┌──────────┐         │
│  │ Identity │  │    Entitlements    │  ...    │
│  └──────────┘  └──────────┘         │
│                                      │
│  ┌──────────────────────────────┐   │
│  │        Shared Core           │   │
│  │  Auth · Cache · Events      │   │
│  └──────────────────────────────┘   │
│                                      │
│  ┌──────────────────────────────┐   │
│  │    Single Database Server    │   │
│  └──────────────────────────────┘   │
└──────────────────────────────────────┘

Distributed Gateway

As your organization scales, the Gateway topology introduces Ocelot or YARP to decouple the frontend from backend services. This provides centralized SSL termination, unified rate limiting, and request routing without altering any internal module logic.

API Gateway DeploymentText
┌──────────────────────────────────────────────┐
│              API Gateway (YARP)               │
│          Route /api/identity → svc1           │
│          Route /api/entitlements       → svc2           │
└────────┬──────────┬──────────┬───────────────┘
         │          │          │
    ┌────▼────┐ ┌───▼────┐ ┌──▼──────┐
    │Identity │ │   Entitlements   │ │Compliance│
    │ Service │ │Service │ │ Service │
    └────┬────┘ └───┬────┘ └──┬──────┘
         │          │          │
    ┌────▼──────────▼──────────▼──────┐
    │      Shared Database Server     │
    └─────────────────────────────────┘

Autonomous Microservices

When individual modules require distinct scaling profiles (e.g., the Messaging module handles millions of webhooks while the HR module sees low traffic), SCRIPE allows you to deploy bounded contexts as fully autonomous microservices. Each microservice manages its own deployment pipeline and database.

Microservices DeploymentText
┌──────────────────────────────────────────────────────┐
│              Load Balancer / API Gateway              │
└────────┬──────────┬──────────┬──────────┬───────────┘
         │          │          │          │
    ┌────▼────┐ ┌───▼────┐ ┌──▼──────┐ ┌▼────────┐
    │Identity │ │   Entitlements   │ │Compliance│ │ Plugins │
    │ Service │ │Service │ │ Service │ │ Service │
    └────┬────┘ └───┬────┘ └──┬──────┘ └┬────────┘
         │          │          │          │
    ┌────▼────┐ ┌───▼────┐ ┌──▼──────┐ ┌▼────────┐
    │  Own DB │ │ Own DB │ │ Own DB  │ │ Own DB  │
    └─────────┘ └────────┘ └─────────┘ └─────────┘

Frictionless Evolutionary Architecture

The transition between deployment modes is fluid. Moving from a monolith to microservices requires no logic rewrites—simply reconfigure DI containers, spin up a message broker (RabbitMQ/Kafka) using our pre-built abstractions, and deploy the modules to independent Docker containers.

  1. 1. Bounded Context Creation

    Define strict boundaries using Domain-Driven Design.
  2. 2. Logical Isolation

    Establish logical separation using internal APIs and interfaces.
  3. 3. Asynchronous Decoupling

    Move communication from in-memory function calls to asynchronous event buses.
  4. 4. Physical Deployment

    Deploy physical containers via Kubernetes or ECS orchestrators.