Technology Stack
Overview
The Event Sourcing Reference Platform is built using modern Microsoft technologies and Azure Platform as a Service (PaaS) offerings. The technology selection reflects a production-oriented architecture focused on scalability, maintainability, security and operational simplicity.
The objective of this project is not simply to demonstrate individual technologies, but to showcase how they can be combined to implement a robust, cloud-native event-sourced system.
Application Stack
| Layer | Technology |
|---|---|
| Frontend | Angular |
| Backend | ASP.NET Core (.NET 10) |
| Language | C# 14 |
| Authentication | Microsoft Entra ID |
| API Documentation | OpenAPI (Swagger) |
Azure Platform
| Service | Purpose |
|---|---|
| Azure App Service | Hosts the Web API and Angular application |
| Azure Cosmos DB | Event Store |
| Azure SQL Database | Read Model Projections |
| Azure Service Bus Topics | Event distribution |
| Azure Blob Storage | Static assets and future archival |
| Application Insights | Application telemetry |
| Log Analytics | Centralised logging and diagnostics |
Data Platform
The solution intentionally separates write and read persistence.
Azure Cosmos DB
Azure Cosmos DB stores immutable domain events that represent the complete history of each aggregate.
Benefits include:
- Append-only event storage
- Optimistic concurrency
- Horizontal scalability
- High availability
- Flexible partitioning
Azure SQL Database
Azure SQL Database stores denormalised read models generated by projection workers.
Benefits include:
- Fast query performance
- Reporting
- Dashboard support
- Independent scaling from the write model
Messaging
Azure Service Bus Topics distribute committed domain events to downstream consumers.
Projection Functions consume events asynchronously to build and maintain SQL read models without impacting command processing performance.
Benefits include:
- Loose coupling between producers and consumers
- Independent scaling of event producers and consumers
- Reliable message delivery with retry and dead-letter support
- Publish/subscribe event distribution
- Asynchronous processing
Authentication
Authentication is provided using Microsoft Entra ID.
Security principles include:
- OAuth 2.0
- OpenID Connect
- HTTPS throughout
- Role-based authorization
- Managed Identity (planned)
- Azure Key Vault integration (planned)
Infrastructure as Code
Infrastructure is provisioned using Bicep.
Benefits include:
- Repeatable deployments
- Version-controlled infrastructure
- Automated environment provisioning
- Environment consistency
- Reduced configuration drift
Continuous Integration & Deployment
Azure DevOps pipelines automate:
- Build
- Unit testing
- Static code analysis
- Infrastructure deployment
- Application deployment
Planned enhancements include:
- Integration testing
- Automated security scanning
- Deployment approval gates
Observability
Operational visibility is provided through:
- Structured logging
- Application Insights
- Azure Monitor
- Log Analytics
- Health endpoints
- Performance metrics
These capabilities provide rapid diagnosis of failures while supporting production monitoring.
Development Tools
| Tool | Purpose |
|---|---|
| Visual Studio 2026 | Primary IDE |
| Git | Source Control |
| GitHub | Source repository and documentation |
| Azure DevOps | CI/CD pipelines |
| Bicep | Infrastructure as Code |
| Structurizr DSL | C4 architecture diagrams |
| Postman | API testing |
Technology Selection Rationale
.NET 10
Provides a modern, high-performance framework for building scalable cloud-native services with excellent tooling and long-term Microsoft support.
Angular
Provides a mature, enterprise-ready frontend framework suitable for large business applications.
Azure Cosmos DB
Selected as the Event Store because it supports scalable append-only event streams with optimistic concurrency.
Azure SQL Database
Selected for read model projections due to its excellent support for reporting, dashboards and relational queries.
Azure Service Bus Topics
Provides reliable distribution of committed domain events while allowing projection workers to scale independently.
Microsoft Entra ID
Provides enterprise-grade authentication using industry-standard OAuth 2.0 and OpenID Connect protocols.
Azure App Service
Provides a fully managed hosting platform with built-in scaling, monitoring and deployment capabilities.
Design Principles
Technology choices throughout this project are guided by the following principles:
- Cloud-native first
- Managed Azure services over self-managed infrastructure
- Independent scalability
- Loose coupling
- Infrastructure as Code
- Security by design
- Observability by default
- Production-oriented architecture
Planned Enhancements
Future iterations of this project will introduce additional technologies and architectural capabilities, including:
- Azure Key Vault
- Managed Identity
- OpenTelemetry
- Snapshotting
- Outbox Pattern
- Inbox Pattern
- Distributed tracing
- Blue/Green deployments
- Multi-region deployment