Back to home

Selected Work

Architecture case studies: the problem, the approach, the decisions weighed, and the outcome, drawn directly from engagements led end to end.

Selected architecture work

Real problems, the approach taken, and the outcome. Drawn directly from engagements led end to end.

Containerizing Sitecore onto AWS, where most deployments don't go

Sitecore workloads are built for Azure by convention. Running one on AWS instead meant no well-trodden path for the container topology, and disaster recovery that could not depend on Azure-native tooling.

Containerized the Sitecore IaaS applications onto AWS EKS behind an ALB, fronted by CloudFront and WAF for caching and edge protection, with CloudWatch for monitoring and alerting. Built a CI/CD pipeline with automated health checks and rollback, and implemented Velero-based disaster recovery across AWS regions.

Architected and led the migration end to end, including raising the platform gap directly with AWS.

Considered AWS ECS/Fargate as a more fully managed alternative to EKS, but Windows container support was still early-stage industry-wide at the time, and Fargate had no Windows container support at all. EKS also gave finer-grained control over logging, monitoring, alerting, and image customization for the Sitecore deployment that Fargate didn't allow.

~$30,000/month (~20%) in infrastructure savings, and Velero-based disaster recovery across AWS regions with an RTO under 2 hours.

20-40% faster page loads (CloudFront)~$30K/mo (~20%) infrastructure cost cut~60% less deployment support effort~30% faster releasesRTO under 2 hours (cross-region DR)~40% fewer incidents (CloudWatch + autoscaling)
A Windows worker node support gap surfaced along the way in EKS/Container Insights. Raised as a feature request, it was implemented and publicly announced by AWS in April 2024.
AWS EKSALBCloudFrontWAFCloudWatchVeleroSitecore XM Cloud
Icon-Resource/General-Resource/Res_Users_48_LightUsers
Icon-Architecture/48/Arch_Amazon-CloudFront_48CloudFront
Icon-Architecture/48/Arch_AWS-WAF_48WAF
Icon-Architecture/48/Arch_Elastic-Load-Balancing_48ALB
Icon-Architecture/48/Arch_Amazon-Elastic-Kubernetes-Service_48 AWS EKS
Sitecore
Services
Icon-Architecture/48/Arch_Amazon-EC2_48SolrStandalone EC2
Icon-Architecture/48/Arch_Amazon-RDS_48RDS
Icon-Architecture/48/Arch_Amazon-Simple-Storage-Service_48S3Velero backups
Icon-Architecture/48/Arch_Amazon-CloudWatch_48CloudWatch
Velero-based disaster recovery across AWS regions: RTO under 2 hours
Release Engineering

Decoupling a forms-processing service from the CMS it happened to run next to

A forms-processing microservice was tightly coupled to the Sitecore/EKS cluster: a slow Sitecore server degraded it too, any change to the microservice's code required a full Sitecore deployment, and the client had already decided to migrate the front end from Sitecore to AEM.

Rearchitected the service as a stateless, serverless, event-driven system on AWS Lambda (.NET 10) with EventBridge, keeping its REST interface for submissions but dropping any session-state dependency, so it processes form data independently of whichever CMS sits in front of it.

Architected the microservices topology and the event-driven integration layer, including the decision to decouple it entirely from the CMS's own infrastructure lifecycle.

Considered SQS/SNS for the queuing layer, but discarded it: a retry mechanism already existed, and a second retry queue on top would have been redundant. With the Sitecore-to-AEM migration already decided, staying platform-agnostic mattered more than optimizing for the CMS currently in place, which ruled out any design that stayed coupled to Sitecore's own infrastructure.

15+ independently deployable services, 2x traffic growth absorbed with zero downtime, and a service architecture that no longer depends on any single CMS platform's infrastructure or release cycle.

AWS Lambda.NET 10EventBridgeMicroservices

Modernizing airport kiosks into location-aware information systems

An international airport authority's kiosks were static, map-only displays with no path to the location-aware experience the authority wanted next.

Led client discovery, scoping, and solution design using ASP.NET MVC and React, owning requirements, effort estimation, system and network architecture, and the Azure DevOps setup.

Led discovery, solution design, and delivery for the modernization program.

Transformed static map-only kiosks into next-generation location-aware information systems with a zero-defect production rollout.

ASP.NET MVCReactAzure DevOpsCoveo

SNOMED CT: a reusable clinical-terminology feature, not a one-off integration

A global diagnostics leader's custom-built .NET application platform needed standardized clinical terminology to compete for enterprise procurement in the UK healthcare market, without hard-coding the capability into a single client's deployment.

Designed the SNOMED CT integration as a reusable, configurable feature within the broader application platform, rather than a one-off build, so it could be configured differently and reused across separate hospital deployments.

Led the technical architecture and implementation of the feature, working across the application/platform boundaries needed for each hospital deployment.

Commercially deployed as a reusable feature across multiple UK hospital implementations, and of major financial importance in winning those clients.

SNOMED CT.NETHealthcare Integration