← All technical work

Off-premises dining platform · Enterprise Cloud

Cloud Foundation for the Restaurant Edge

A scalable cloud architecture for managing a resilient restaurant edge and supporting enterprise services and transaction workloads across the OPD ecosystem

Designed alongside the restaurant-side platform, Enterprise provided the centralized configuration, onboarding, deployment, and cloud services needed to scale OPD across hundreds of restaurants. Built on a stateless microservices architecture, it evolved into the cloud foundation for a growing ecosystem of centralized capabilities, including transaction processing, Order Tracking, Guest Messaging, and Last-Mile Delivery.

700+
Restaurant Environments.
12+
Enterprise Services.

Problem & Constraints

OPD was designed for an aggressive enterprise rollout, requiring centralized management and cloud capabilities across hundreds of restaurant environments. The architectural challenge was achieving that scale while accommodating restaurant-specific configuration, supporting centralized application workloads, and preserving local order fulfillment when cloud services or connectivity were unavailable.

Enterprise-scale operations
Rapidly onboard, configure, deploy, and manage hundreds of restaurant environments.
Configuration complexity
Support shared brand standards while allowing restaurant-specific configuration and operational differences.
Enterprise applications
Provide a scalable cloud architecture for centralized applications, transaction processing, and services spanning the broader OPD ecosystem.
Edge resilience
Preserve restaurant order fulfillment when cloud services or connectivity were unavailable.

Architecture Overview

Architecture showing Enterprise Cloud supporting centralized configuration, applications, messaging, and deployment across the restaurant edge
Cloud architecture for enterprise services and restaurant edge management

Enterprise was designed as the cloud half of OPD’s architecture. Built on Azure, it used stateless microservices running in Service Fabric, REST APIs, queues and asynchronous messaging, and persistent data services to support centralized configuration, onboarding, deployment, transaction processing, and a growing set of enterprise applications across the restaurant estate. The architecture deliberately separated centralized management and enterprise applications from restaurant execution. Enterprise maintained configuration and coordinated capabilities across the broader ecosystem, while restaurant systems retained the local services, data, and operational logic required for order fulfillment. Configuration and software could be managed centrally and applied locally without making normal restaurant operations dependent on continuous cloud availability.

Key Architecture Decisions

Select the Cloud Runtime Deliberately

Evaluate Service Fabric against the emerging container/Kubernetes direction and choose the runtime that best fit the expected workloads and maturity of the Azure ecosystem at the time.

Keep Services Stateless and Independently Evolvable

Use narrowly scoped services with state externalized to databases and messaging infrastructure, allowing services to scale, fail, deploy, and evolve more independently.

Centralize Management Without Centralizing Execution

Centralize configuration, onboarding, deployment, and enterprise cloud capabilities while keeping order fulfillment local so restaurant operations did not depend on continuous cloud availability.

Separate Brand Defaults from Restaurant-Specific Configuration

Use brand-level Seed configuration to provision restaurant-specific MasterPOS configuration, preserving enterprise standards while allowing locations to diverge where necessary.

Make Onboarding Composable and Repeatable

Model onboarding as reusable command sequences that could vary by brand and provision restaurants concurrently at market scale.

Separate Software Distribution from Installation

Distribute versioned application and database artifacts centrally to the restaurant controller, then allow local Maintenance Services to determine and apply required updates during controlled maintenance windows.

Establish One Authoritative Path to State

Keep repositories and persistence behind API boundaries so business rules, validation, and data access followed one authoritative path.

Use Asynchronous Processing to Isolate Failures

Use queues, retries, and circuit breakers to isolate downstream failures, allowing recoverable work to accumulate and resume when dependencies recovered.

Engineering Approach

The engineering approach emphasized scalability, resilience, modularity, and operational visibility. Clear service boundaries, asynchronous processing, automated delivery, centralized telemetry, and layered security supported reliable operation at enterprise scale.

Application & Services
.NET · RESTful APIs · Azure Service Fabric · Stateless Microservices · Azure API Management
Data & Integration
Azure SQL Server · Asynchronous Messaging · Queues
Patterns & Principles
Prototype · Command · Composite · Strategy · Repository · Circuit Breaker · Retry · API Gateway · SOLID Principles · Separation of Concerns
Release & Reliability
CI/CD · Versioning · Application Insights · Log Analytics · Health Monitoring & Alerting
Security
Authenticated Service Access · Protected API Boundaries · Layered Network & API Security

Results & Evolution

Enterprise scaled alongside OPD from its initial rollout into a broader cloud foundation for transaction processing and enterprise application services, while preserving the independence of the restaurant edge.

  • Scaled across the restaurant estate: Centralized configuration and onboarding allowed Operations to activate restaurants concurrently, including entire markets, rather than treating each location as an individual technical implementation. The platform ultimately supported more than 700 restaurant environments.
  • Expanded into an enterprise services architecture: What began with configuration, onboarding, and deployment grew to more than a dozen services supporting transaction processing, Order Tracking, Guest Messaging, Last-Mile Delivery, and other centralized workloads across the OPD ecosystem.
  • Absorbed growth without fundamental redesign: The original architecture accommodated substantial growth in both scale and capability without requiring significant restructuring. New services and supporting infrastructure could be introduced as requirements evolved, while stateless services and well-defined boundaries allowed components to scale and evolve independently.
  • Preserved resilience at the restaurant edge: As Enterprise became more capable, restaurant order fulfillment remained independent of cloud availability. Centralized services could fail or become temporarily unavailable without preventing restaurants from continuing the core fulfillment workflows running locally.
  • Influenced architecture beyond OPD: The staged, pull-based deployment model proved effective enough to become the foundation for a broader enterprise software-distribution framework, extending an architectural approach developed for OPD into the wider restaurant technology environment.

Architectural Perspective

Enterprise reinforced for me that the most durable solution architecture decisions are rarely about a specific technology. Clear boundaries, resilient interactions, and deliberate separation of responsibilities gave the platform room to evolve as the technologies around it changed. Technologies change. Good architecture should give you room to change with them.