The monolith is the risk

Tommy Høglund OlsenTommy Høglund Olsen
Jun 23, 2026

Why your CMS architecture is now a board-level decision

Disclosure: The author is an employee of Optimizely.

 

There is a particular kind of silence in a boardroom when someone finally says what everyone has been thinking: "We can't ship fast enough."

The marketing team wants to launch a campaign next week. The developers say the backlog is three months deep. The CFO asks why the platform that cost seven figures five years ago now requires a seven-figure overhaul just to keep the lights on. The CTO has been quietly reading about composable architecture for a year, knowing the conversation is coming — but unsure how to frame it without sounding like every other vendor pitch.

This article is for that CTO. And for the CMO sitting across the table wondering why publishing a landing page still requires a Jira ticket. And for the economic buyer who needs to understand, in concrete terms, why the architecture underneath your website is no longer a technical detail; it is a strategic asset or a strategic liability. There’s no neutral position anymore.

The real cost of standing still

Let’s be direct about the pain, because euphemisms waste everyone's time.

If your organisation runs a monolithic CMS — a tightly coupled system where content, presentation, business logic, and infrastructure are welded together — you’re carrying a specific set of costs that compound every quarter:

1

Development velocity is throttled. Your frontend developers can’t ship a redesign without coordinating with the backend team, because the templates live inside the CMS. Every visual change is a full deployment. Every full deployment is a risk window. Every risk window requires a change advisory board, a staging environment, a rollback plan. A button color change becomes a two-week affair.

2

Your content is trapped. The words, images and structured data your team creates exist in a format that only your current CMS can read. Want to push that content to a mobile app? Build a connector. A digital kiosk? Another connector. An AI-powered search experience? You’ll need to extract, transform and reload, if the data is structured enough to extract at all. Most monolithic CMS content isn’t. It’s freeform rich text pasted into WYSIWYG fields, with formatting baked into the content itself. That content has no value outside its current container.

3

Your talent pipeline is shrinking. Developers don’t want to work in legacy frameworks. This isn’t snobbery; it’s economics. A developer skilled in .NET Framework, WebForms, or a proprietary templating language has a narrower career path than one working in React, Next.js and GraphQL. Your monolith makes recruiting harder and retention more expensive. The technical debt isn’t just in the codebase; it’s in the organisational capability to maintain it.

4

You are invisible to AI. And this is the one that should keep you up at night. Large language models, generative search engines, and AI agents do not read your beautifully designed web pages. They read structured data. They consume APIs. They parse schema.org markup and JSON-LD. If your content is locked inside a monolithic rendering engine with no API layer, it does not exist in the emerging AI-driven discovery landscape.

This isn’t a future problem. According to Gartner traditional search engine volume is projected to decline by 25% in 2026 as AI-generated answers absorb top-of-funnel queries, and that curve is not slowing. This reflects what Google is saying as well. Meanwhile, Crackle’s GEO for tech brands benchmark report states that 40 to 60 percent of B2B tech buyers now consult an AI assistant at some point in their vendor evaluation process, up from under 20 percent just two years ago. If your content cannot be read, parsed and surfaced by those AI systems, you’re not losing rankings. You are losing the room entirely.

Your competitors who have structured, API-accessible content will be found. You won’t.

The total cost of ownership for a monolith is not the license fee. It is the sum of lost speed, lost talent, lost content value and lost market presence, compounding annually and accelerating.

The architecture that solves this

The answer goes further than "go headless" as a slogan. The answer is a composable architecture with a clear separation of concerns, where each layer does what it does best and nothing more

Three layers, clearly separated

  • Layer 1: The Content Platform: Optimizely CMS

This is where editors, content producers and administrators work. It is the system of record for structured content. Not "pages with text" but structured, typed content objects with explicit relationships and validation rules.

A news article is more than a rich text field. It is a composition of a headline (string, max 200 characters, searchable), a subtitle (string, max 500 characters), a body (rich text, localised), an author (a reference to a Person content type), a category (enum: Research, Education, Corporate) and tags (array of strings, max 10). Each field has a data type, validation rules and indexing configuration.

A person is a reusable structured component, not a paragraph buried on an "About Us" page. Name, title, email, phone, photo, department, defined once as a _component base type and referenced from any page type that needs to display a human being. Change the person's title once, and it updates everywhere they appear across every site.

This is what Carrie Hane calls atomic content, and what the COPE principle (Create Once, Publish Everywhere) demands. The content model is the product. The CMS is the tool that enforces it.

In Optimizely CMS 13, content types are defined in TypeScript using the Content JS SDK, the same language your frontend developers already think in:

 

export const PersonBlockCT = contentType({

 

  key: 'PersonBlock',

 

  displayName: 'Person',

 

  baseType: '_component',

 

  properties: {

 

    name:       { type: 'string', required: true, indexingType: 'searchable' },

 

    title:      { type: 'string', localised: true },

 

    email:      { type: 'string' },

 

    phone:      { type: 'string' },

 

    photo:      { type: 'contentReference', allowedTypes: ['_image'] },

 

    department: { type: 'string', localised: true, indexingType: 'queryable' },

 

  },

 

});

 

Define it in code. Push it to the CMS with npx @optimizely/cms-cli config push. The content type appears in the editorial interface, gets indexed in the API layer and generates strongly typed objects for your frontend, all from a single source of truth. No XML configuration files. No admin UI clicking. Code-first, version-controlled, reviewable content modelling.

  • Layer 2: The Content Graph: Optimizely Graph

Here’s where it gets interesting. Every content type defined in the CMS is automatically indexed into Optimizely Graph, a global scalable GraphQL service with edge caching via Cloudflare. This is the single API that all frontend applications consume.

Frontend developers don’t need to know anything about the CMS application, .NET, C# or the backend platform. They write GraphQL queries. They get strongly typed responses. They filter, sort, paginate, and full-text search across content types in a single query.

One query. Multiple content types. Strongly typed results. Edge-cached globally. No backend coupling.

 

query SearchContent($term: String!) {

 

  _Content(

 

    where: { _fulltext: { match: $term } }

 

    limit: 20

 

  ) {

 

    items {

 

      _metadata { displayName, types, url { default } }

 

      ... on StorePage { heading, storeLocation }

 

      ... on ProductPage { heading, productCode }

 

      ... on NewsArticle { heading, subtitle }

 

    }

 

  }

 

}

 

This is the content hub that eliminates data silos. The same structured content feeds your main website, your intranet, your campaign microsites and any future digital surface, with no duplication, no synchronisation scripts, and no middleware hacks.

Relationships between content types (a product referencing a category, an article referencing an author, a department page containing sub-pages) are all explicit, typed references that Graph indexes automatically. You can traverse the entire content graph in a single query to build rich, composite views without N+1 problems or waterfall API calls.

  • Layer 3: The Frontend: Your Choice

Next.js, React, Astro, Vue, and Remix: whatever your team knows best, whatever serves your users best. Each "head" is an independent application that fetches content from Graph and renders it with its own design system. You can redesign the entire frontend without touching a single line of CMS configuration. You can deploy a new head for a mobile app without asking the CMS team for permission. You can run multiple websites, public site, intranet, news portal, all from a single CMS instance with shared content types and independent visual presentation.

The Content JS SDK makes this almost absurdly simple. It takes a URL path, automatically resolves the content type, generates the right GraphQL query, returns a fully typed object and dynamically loads the correct React component. Your developers write two things: content type definitions and rendering components. The SDK handles routing, data fetching, and component resolution.

 

const result = await client.getContentByKey(

 

  ProductPageCT,

 

  'premium-widget-x200',

 

  { locale: 'en' }

 

);

 

// Fully typed: IDE autocomplete on every field

 

console.log(result.heading);       // string

 

console.log(result.productCode);   // string

 

console.log(result.category);      // 'hardware' | 'software' | ...

 

console.log(result.relatedItems);  // ProductPage[] reference

 

Here’s what people miss about headless: editors don’t lose visual control. Optimizely's Visual Builder lets content producers compose pages by dragging sections, rows, columns and elements into a layout, with live preview rendered by the actual frontend application, not a CMS approximation. The frontend registers itself as a headless application. The CMS generates a preview token. The frontend receives it, fetches unpublished content from Graph and renders it with its own components, exactly as end users will see it.

True WYSIWYG in a fully decoupled architecture. No compromise.

The AI accelerator:why 2026 changes the migration calculus

Here’s the part that changes the economics of this decision fundamentally.

Eighteen months ago, migrating from a legacy CMS to a composable architecture was a six-to-twelve month  project with significant risk. Content modelling, data migration, frontend rebuilds, and integration rewiring: each phase required deep expertise and careful sequencing. The business case was strong, but the execution risk gave economic buyers legitimate pause.

That calculus has shifted on two fronts simultaneously, and the combination is what makes waiting irrational.

First, AI-assisted development has compressed migration timelines dramatically. Content type definitions that took days of domain analysis and whiteboard sessions can now be prototyped in hours with AI agents that understand both the source system's data model and the target platform's content modelling API. Frontend component scaffolding that required weeks of design-to-code translation can be generated, reviewed and refined in a fraction of the time. The risk profile of a migration in 2026 is materially lower than it was in 2024.

Second, and this is the part that does not get enough boardroom airtime: the performance delta has been measured. Enterprises running headless architectures are reporting page load times roughly twice as fast as organisations on comparable monolithic setups. Page load time isn’t a developer vanity metric. It correlates directly with conversion rate, bounce rate, and search ranking — a revenue number dressed in a technical label.

But the more profound shift is on the content side. Structured, API-accessible content is not just easier to migrate; it is the fuel that AI models need to generate value for your organisation. Every content type with explicit properties, typed relationships and semantic metadata becomes a node in a knowledge graph that AI can reason about, search across, personalise from and generate against.

An Optimizely Graph instance with well-modelled content types is more than a delivery API. It is a semantic layer that enables:

AI-powered search that understands the difference between a person, a product and a news article, able to answer natural language questions by traversing typed relationships between them.

Generative content assistance grounded in your actual structured data, not hallucinated from general training data.

Answer Engine Optimization (AEO) where your content is structured with JSON-LD and schema.org markup that AI crawlers can consume directly, placing your organisation in AI-generated answers rather than buried in traditional search result pages that are already beginning to hollow out.

The organisations that structure their content now are building the foundation for every AI-driven interaction of the next decade. The organisations that wait are accumulating a new form of technical debt, specifically semantic debt, that will be far more expensive to remediate than any codebase migration.

Freedom for engineering, control for marketing

This is the part that matters in the boardroom, because architecture decisions are ultimately resource allocation decisions.

What Engineering gets

A modern standards-based stack that developers want to work in. TypeScript, React, GraphQL, CI/CD pipelines, independent deployments, testable components, and no proprietary lock-in. The ability to choose best-of-breed tools for each layer: a design system for UI consistency, a hosting platform for performance (Vercel, Netlify or Azure), and a monitoring stack for observability. Recruitment becomes easier. Retention improves. Velocity increases. Migration to .NET Core from .NET Framework delivers server-side response time improvements of up to 50%, before you even touch the frontend.

What Marketing gets

A CMS with Visual Builder that lets editors compose pages visually with live preview, rendered by the real frontend and not a backend simulation. The ability to create new landing pages, campaign surfaces and content combinations without developer involvement. Structured content that feeds every channel simultaneously. Content localization with per-field language control, independent publishing workflows per locale and fallback language support built in. Personalization and experimentation capabilities native to the platform, not bolted on as afterthoughts.

What the CFO gets

Reduced time-to-market for content changes, from weeks to hours. Lower total cost of ownership through SaaS-managed infrastructure, with no self-hosted servers, continuous updates without downtime and automatic security patching. For organisations using Opal’s AI agent capabilities, Optimizely’s own 2025 benchmark data showed over 50% reduction in time per campaign and close to 80% increase in experiments created. And critically, a migration path that preserves every investment in content models, frontend code, and integrations, because CMS 13 shares its headless architecture (Graph, SDK, APIs) with the full SaaS platform. Upgrade incrementally. No big bang required.

What the Board gets

A digital platform that works as a strategic asset. One that scales globally with edge caching, integrates with existing and future systems via open standards (GraphQL, OpenID Connect/OAuth 2.0, webhooks, REST, and JSON-LD/Schema.org), and positions the organisation to exploit, rather than be disrupted by, the AI transformation that is already underway.

The decision framework

Here are the five criteria that separate modern platforms from legacy dressed in new marketing. Run your current system against them honestly. If it fails two, you have a problem. If it fails three, you have an emergency.

Technical freedom. Can your developers choose their own frontend framework? Can they deploy independently of the CMS? Can they define content models in code and push them via CI/CD? Can they work entirely in TypeScript and GraphQL without touching C# or the backend platform?

Content as a platform. Is your content structured, typed and API-accessible? Can the same content serve web, mobile, digital signage and AI without duplication? Are relationships between content types explicit, typed and traversable via a single query?

Editor empowerment. Can your content team publish without developer dependency? Can they preview content in the actual frontend design, including unpublished drafts? Can they compose pages visually with drag-and-drop and see live results?

AI readiness. Is your content semantically structured for machine consumption? Do you output schema.org markup and JSON-LD? Do you have a GraphQL API that AI agents and generative search engines can query natively? When someone asks an AI assistant a question your organisation should own the answer to, your content should be the source of that answer.

Migration economics. Can you get there incrementally, using the Strangler Pattern to migrate piece by piece, or does it require a risky Big Bang rewrite? Does the target platform protect your investment if you evolve toward a full SaaS model later?

Optimizely CMS with a composable frontend answers yes to all five. Not because it is the only platform in the market, but because it was architected from the ground up as a headless-first content platform with a managed GraphQL delivery layer, a TypeScript-native SDK for frontend development, a Backend for Frontend pattern for complex integrations, and a Visual Builder that gives editors real-time preview in a fully decoupled architecture.

How to take the first step

Start with a content model audit, not a technology evaluation.

Take your five most important page types. Map every field. Ask whether this is structured data or freeform markup, whether the relationships are explicit or implied by URL proximity, and whether an AI agent could extract meaningful, typed information from this content without scraping HTML.

If the answers disappoint you, and for most monolithic CMS implementations they will, you have found your business case. The gap between what your content is and what it needs to be for a composable, AI-ready architecture is the scope of your transformation.

Then build a proof of concept. Not a slideshow but a working implementation with real content types, real GraphQL queries, real frontend components, and real editor workflows. A PoC that demonstrates Visual Builder preview, multi-site from a single instance, content reuse across channels, and schema.org output for AI readiness. A working prototype converts more stakeholders than any analyst quadrant ever will.

Go back to that boardroom silence. The CTO who has been reading about composable architecture for a year. The CMO who can’t ship a landing page without a Jira ticket. The CFO doing the math on what the monolith actually costs when you count the speed it takes from you, the talent it drives away, and the AI-era market presence it can’t build.

Someone in that room is eventually going to say: we’re going to fix this. The only question is whether they say it this quarter, when the migration tools are better, the AI opportunity is still open and the decision is theirs to make. Or three years from now, when a competitor made it for them.

The monolith is the risk. The composable architecture is the strategy. The boardroom already knows it. Someone just has to say it out loud.

This article draws on real-world composable architecture implementations using Optimizely CMS 13 with headless frontends, Optimizely Graph (GraphQL), Content JS SDK, Backend for Frontend patterns and Visual Builder. Technical details reference production architectures designed for large-scale organisations with multiple websites, multilingual content and complex integration requirements.