The Problem
Assessment-Training.com is a live, multilingual test-prep platform used by 100,000+ candidates preparing for employer aptitude and cognitive tests (Watson Glaser, Raven's, SHL, Saville, and more). Built on Umbraco 7 / .NET Framework, the platform needed production hardening — occasional instability under transient Azure/API failures with no resilience pattern in place, gaps in CDN/WAF coverage, and a backlog of SEO issues (missing structured data, unresolved Search Console errors) holding back organic growth for a business that depends on search traffic to reach job seekers.
The Solution
As full-stack developer on the platform, I hardened the production environment on Azure App Service: added retry logic with circuit-breaker patterns around external calls, wired up Azure Blob Storage for media/asset handling, and put Cloudflare in front of the site for CDN caching and WAF protection. I also built out CI/CD pipelines in Azure DevOps so releases became repeatable and low-risk, then ran a full SEO pass — a Google Search Console audit, structured schema markup, and performance optimizations across the stack.
Key Features
Retry & circuit-breaker resilience — transient Azure/API failures no longer cascade into user-facing errors; failing calls back off and recover automatically instead of taking the site down.
Cloudflare CDN + WAF — static assets are cached at the edge and the origin is shielded from bot and attack traffic, cutting load on the Umbraco backend.
Azure DevOps CI/CD — build, test, and deployment are pipeline-driven, replacing ad hoc manual releases.
Azure Blob Storage integration — media and file assets are served from blob storage rather than the app server, reducing app-tier load.
SEO & schema markup — Search Console errors resolved and schema.org structured data added, so search engines correctly parse test-prep pages, multilingual variants, and pricing.
Technical Highlights
The stack — Umbraco 7 on .NET Framework — predates most modern .NET tooling, so a lot of this work meant fitting resilience patterns and CI/CD onto an older CMS without a rewrite. Infrastructure changes like the Cloudflare cutover and the blob storage migration were rolled out with zero downtime, keeping the platform live for candidates across every supported language throughout.
Results
The platform runs with far fewer production incidents, faster page loads through edge caching, and a cleaner technical SEO footprint feeding organic acquisition — for a site serving 100,000+ candidates worldwide across multiple languages.
FAQ
Why did an older Umbraco 7 / .NET Framework platform need modern reliability patterns added?
The platform was live and serving 100,000+ real candidates, so a rewrite onto a newer stack wasn't an option without real risk and downtime. Retry logic, circuit breakers, CI/CD, and CDN/WAF coverage were all fitted onto the existing Umbraco 7 codebase instead, hardening it in place.
What does a circuit-breaker pattern actually protect against here?
When an external API or Azure service has a transient failure, a circuit breaker stops the app from repeatedly hammering the failing dependency and causing a cascading outage — it backs off, retries on a schedule, and only resumes normal calls once the dependency is healthy again, instead of every failed call surfacing as a user-facing error.
How did adding Cloudflare change the site's performance and security?
Cloudflare sits in front of the origin server, caching static assets at the edge (closer to candidates around the world) and filtering out bot/attack traffic through its WAF before it ever reaches the Umbraco backend — reducing both load on the origin and its exposure to malicious traffic.
What SEO problems were actually fixed, specifically?
Unresolved Google Search Console errors were cleared, and schema.org structured data was added so search engines can correctly parse test-prep pages, multilingual page variants, and pricing information — all of which affects how (and whether) the platform's pages show up properly in search results.
Was any of this infrastructure work done with downtime for existing candidates?
No — the Cloudflare cutover and the Azure Blob Storage migration were both rolled out with zero downtime, since candidates across every supported language were actively using the platform throughout the process.