Skip to content

operationalwrocław--:-- cet

RITE NRG

∕ insights / system-architecture-design.md

System Architecture Design

System Architecture Design: A Practical Guide for 2026

System architecture design explained for SaaS and legacy modernization: patterns, requirements, scalability, security and governance, with a clear next step.

>_article.meta

published
2026-11-06
reading_time
20 min read
topics
system architecture design, software architecture, legacy modernization, SaaS architecture, architecture patterns

#01/article

System Architecture Design: A Practical Guide for 2026

Your SaaS team shipped the MVP quickly, but now every feature takes longer and launch-day traffic makes everyone nervous. You need faster delivery without paying for outages, runaway infrastructure costs, or a rewrite nobody budgeted.

Why System Architecture Decides Speed, Cost and Risk

System architecture design means deciding how a system is split into parts, how those parts communicate, where data lives, and how the platform survives failure. Those choices determine whether your next business opportunity needs a routine release or a disruptive engineering project.

Say a founder launches a subscription product with billing, account management, and reporting tightly connected. The arrangement helps the team ship initially. Later, a reporting change requires testing checkout, an import competes with customer requests for database capacity, and every release needs the same senior engineer.

The problem isn't that the team chose a monolith. It's that nobody established boundaries around capabilities with different business priorities.

Design boundaries that outlast infrastructure

On April 7, 1964, IBM launched System/360 as a compatible family rather than separate machines for scientific and commercial workloads, allowing software written for one model to run on others, according to IBM's System/360 history.

That separation between software compatibility and physical hardware remains useful. Your application should depend on explicit contracts, not accidental details of its current environment. Changing a payment provider, database deployment, or hosting arrangement shouldn't require rewriting unrelated business rules.

For a SaaS founder, this means protecting the ability to change pricing, onboard customers, and expand capacity. For an enterprise, it means replacing infrastructure without losing the behavior that keeps operations running.

Architecture is a business decision about the future cost of change. Ask the architect to explain a boundary in terms of release independence, failure containment, ownership, or migration cost. A diagram full of recognizable technologies isn't enough.

Turn the design into business commitments

Pattern selection should match the product's stage and the team's operating capacity. Requirements should turn customer expectations into measurable acceptance criteria. Failure design should establish what customers can still accomplish during disruption.

Security needs explicit access boundaries and accountable approvals. AI workflows need operational controls beyond a convincing demonstration. Modernization needs an economic case for each component, including the option to leave it alone.

The next step isn't selecting a framework. The product owner and architect should agree which outcomes matter, identify the decisions that could block them, and record who will validate each assumption.

A useful architecture explanation connects every important technical choice to a business consequence.

Before approving a design, ask:

  • What changes most often? Give those capabilities clear boundaries and practical test coverage.
  • What must never fail? Define the customer action or business obligation, not an entire technology stack.
  • What would cost the most to undo? Validate those choices before implementation makes them expensive.

Choosing an Architecture Pattern for Your Stage and Team

Architecture patterns compared by fit and trade-off

These team sizes are illustrative planning signals, not validated thresholds. Ownership boundaries and operating capability matter more than headcount.

Pattern Best fit Main trade-off Team size signal
Monolith Very early product with one small team Hard to scale or change parts independently 1 to 5 engineers
Modular monolith SaaS MVP that must grow without a rewrite Requires discipline to keep module boundaries clean 3 to 15 engineers
Microservices Several independent teams and high, uneven scale Operational overhead and distributed failure modes 15 or more engineers across several teams
Event-driven Asynchronous workflows and many integrations Harder debugging and eventual consistency Integration load, not headcount, sets the threshold
Serverless Spiky workloads with a small operations team Platform limits, cold starts and vendor lock-in Small teams with limited operations capacity

In IcePanel's 2024 software-architecture survey, 67% of respondents used microservices and 62% used event-driven architecture. Both are mainstream. Neither percentage tells you what your product needs.

The visual comparison highlights the different operating commitments behind these patterns.

A comparison chart outlining different software architecture patterns including monolith, modular monolith, microservices, event-driven, and serverless systems.

Default to a modular monolith for a SaaS MVP

Premature microservices turn local programming problems into network, deployment, and coordination problems. Your engineers must diagnose partial failures, maintain compatible interfaces, and operate separate services before independent deployment creates meaningful value.

Start with one deployable application and clear internal modules. Organize those modules around business capabilities such as subscriptions, customer accounts, and fulfillment. Keep business rules behind module interfaces, and stop unrelated modules from writing directly into each other's data.

Enforce the boundaries through dependency checks, code review, and tests. Folder names alone don't create modularity.

Extract a service when you can name the problem it solves. Perhaps a compute-heavy workload needs independent scaling, or a separate team needs release autonomy. Extraction should remove a demonstrated constraint, not satisfy an architectural preference.

Choose combinations deliberately

These patterns aren't mutually exclusive. A modular monolith can publish events and use serverless functions for document conversion. A microservices platform can still contain tightly coupled services that must deploy together.

Serverless removes some infrastructure administration, but your team still owns application behavior, permissions, observability, and recovery. Event-driven processing separates the timing of work, but it also requires someone to explain delayed or out-of-order outcomes.

Have the engineering lead answer these questions before approving the pattern:

  • Parallel ownership: How many teams will change this system independently, and where will they collide?
  • Independent scale: Which workload has a demonstrably different capacity requirement?
  • Operational capacity: Who will handle deployments, incidents, dependency upgrades, and support?

Use the answers to select the simplest pattern that keeps the next twelve months of planned changes safe. Treat that horizon as a planning exercise, not a demand to predict every future requirement.

Non-Functional Requirements to Define Before You Build

A 99.9% availability SLO permits a 0.1% error budget; with 1,000,000 requests over four weeks, that means 1,000 failed requests, as illustrated in Google's error-budget policy. That's a decision mechanism, not just a monitoring statistic.

The same policy recommends halting feature releases and nonessential changes when the budget is exhausted, while allowing urgent security and priority fixes. Engineering effort then shifts toward restoring reliability rather than adding more change to an unstable service.

Agree on these terms before selecting infrastructure:

  • Service-level indicator, or SLI: The measurement of what users experience, such as successful subscription renewals or response latency.
  • Service-level objective, or SLO: The target the team commits to achieving over an agreed measurement window.
  • Error-budget policy: The action owners take when performance falls outside the agreed allowance.

Make availability understandable

Availability targets and the downtime they allow

The downtime equivalents below are arithmetic illustrations using a hypothetical 365-day year and 30-day month. They describe time-based availability, not the request-based error budget above.

Availability target Allowed downtime per year Allowed downtime per month Typical use
99% About 3.65 days About 7.2 hours Internal tools with accepted interruptions
99.9% About 8.76 hours About 43.2 minutes Most B2B SaaS features
99.95% About 4.38 hours About 21.6 minutes Business-critical customer workflows
99.99% About 52.6 minutes About 4.3 minutes Flows with exceptionally low interruption tolerance

These application categories are starting recommendations, not industry mandates. A customer's contractual or operational needs should determine the actual target.

Availability alone isn't a complete requirement. Define latency, throughput, data durability, security, and cost per transaction as well. Specify measurement boundaries: a fast gateway response doesn't prove the customer completed their purchase.

Use sample non-functional requirements to turn broad expectations into testable statements. Replace “the system must be fast” with a named customer action, measurement method, target, and accountable owner.

Define requirements against real flows

  1. Draw request and data flows. Show the path from customer action to confirmed outcome, including background processing.
  2. Identify critical dependencies. Mark which database, identity provider, or partner service can prevent completion.
  3. Define an indicator for each user-visible path. Measure the outcome at the boundary customers experience, then add internal diagnostics to explain failures.

The product owner should approve the business expectation. The architect should demonstrate how the design supports it, and the operations owner should confirm that it can be measured.

Choose an availability target for each customer-facing flow. Don't give an administrative export and a revenue-critical checkout the same target merely because they share a platform.

Designing for Peak Load, Failure and Recovery

Provisioning exactly enough capacity for peak traffic is an incomplete design. During maintenance, rolling deployment, or host failure, you no longer have enough healthy capacity to meet the same demand.

Google's SRE guidance describes N+2 provisioning: the system can handle peak demand with N instances, potentially in degraded mode, while two additional instances are unavailable because of planned and unplanned outages. The important principle is to size for the failure state, not just the healthy state.

Don't apply the formula mechanically to every component. Examine load distribution, shared bottlenecks, and the capacity that remains usable after a failure. Spare application instances won't help if every request still waits on an overloaded database.

Decide what continues during disruption

Spread stateless compute across failure domains such as availability zones. Reserve failover capacity, and verify that deployment automation doesn't remove more healthy capacity than the design permits.

The product owner must also decide which functions can degrade:

  • Preserve the core action: Keep account access or order submission available before protecting optional personalization.
  • Use safe substitutes: Serve clearly identified cached data where freshness isn't essential.
  • Delay noncritical work: Queue notification emails or reporting jobs instead of blocking customer requests.

For practical failure-mode thinking, GoReplay's resilience principles for DevOps teams provide a useful companion to capacity planning. Convert the selected behaviors into acceptance tests, rather than leaving them as diagram annotations.

Give data its own recovery plan

Recovery-point objective, or RPO, defines acceptable data loss. Recovery-time objective, or RTO, defines acceptable recovery time. The business owner must approve both because they affect customer obligations and operating continuity.

Replication isn't a substitute for recoverable backups. Replicas can propagate an accidental deletion, so test restoration and reconciliation separately. Document who decides which data copy is authoritative after recovery.

Multi-region deployment can help during regional disruption or maintenance, but it adds routing, consistency, reconciliation, and operational work. Approve it only when a quantified requirement justifies those obligations.

Use a focused system reliability improvement plan to assign corrective work to named owners.

Failure-test rule: Remove planned capacity and trigger an unplanned failure while representative peak traffic continues.

The operations lead should verify latency, queue depth, and customer-visible completion against the agreed objectives. Capture the recovery sequence and failed assumptions, then require fixes before declaring the architecture ready.

Integration and Data Ownership That Hold Up

Treat integration boundaries as primary production risk points. Start by listing every system a feature touches, the interface owner, and the person responsible when the connection fails.

Use synchronous calls when the customer needs an immediate answer. Use asynchronous events for work that can finish later, such as notifications, billing synchronization, and reporting.

That distinction is a business choice. An order can be accepted while a confirmation email waits, but a customer shouldn't receive payment confirmation before the payment outcome is known.

Establish contracts before connecting systems

  1. Define and version API contracts. Describe request schemas, responses, errors, and compatibility expectations before consumers depend on them. OpenAPI specifications and consumer contract tests make those expectations inspectable.
  2. Control external entry points. Put an API gateway in front of external and partner traffic for authentication, rate limits, and routing. Keep business authorization inside the responsible application as well.
  3. Make writes idempotent. Use a stable operation identifier so a retried payment request can't create another charge. Deduplication state must survive the failures that trigger retries.
  4. Assign data ownership. Each service should control writes to its own store. Other services use agreed interfaces rather than editing tables they don't own.
  5. Bound dependency behavior. Set timeouts, retry limits with backoff, and circuit breakers. Retry transient failures, not invalid requests, and avoid stacking retries across every layer.
  6. Map the failure path. Record what customers see when a partner is unavailable, how unfinished work is recovered, and who handles exceptions.

Test business consistency

Say fulfillment receives an order event before the payment update arrives. The design needs an explicit pending state, not an assumption that messages always arrive in the expected order.

For workflows spanning several systems, define compensation as carefully as the happy path. If inventory is reserved but payment fails, someone must own releasing that reservation.

Use the recurring system integration challenges as review prompts, then maintain the resulting interface inventory alongside the code.

The integration lead's next step is to select a critical workflow and test duplicate messages, delayed responses, and partner downtime. The intended outcomes are fewer cascading failures, clearer partner onboarding, and changes that don't unexpectedly break neighboring systems.

Security, Governance and Decision Records That Hold Up

Every change must pass architecture review by a named architect, automated tests, a security review, observability, and a documented runbook and decision record. That's our review gate, not an optional cleanup activity after release.

Apply the gate proportionately. A routine change can reference established controls and update an existing decision record, while a new trust boundary needs deeper review. The evidence still needs to exist.

Security and governance fail when teams grant broad access, leave approvals in chat, and lose the reasons behind important decisions. Make those responsibilities visible.

The management checklist separates access controls, approval practices, and decision history.

An infographic illustrating three key pillars of system management: security, governance, and decision records for organizations.

Use a checklist with accountable answers

  • Service ownership: Name the owner, backup contact, and escalation path for every production capability.
  • Sensitive information: Identify personal, financial, confidential, and customer-controlled data, including where it moves.
  • Access and secrets: Record trust boundaries, least-privilege permissions, secrets storage, rotation, and access removal.
  • Production approval: State who can authorize deployment and how emergency changes are reviewed afterward.
  • Logging and retention: Decide what evidence is necessary, how long it remains available, and which sensitive fields must be excluded.
  • Incident learning: Assign corrective actions, owners, and completion evidence after incidents.

Agent configurations belong inside these controls. Foo Guard's discussion of policy as code for agent configurations is useful when translating permission rules and approval requirements into enforceable configuration checks.

Keep decision records short enough to use

An architecture decision record should capture the reasoning someone will need when circumstances change. Store it in the repository and connect it to implementation work.

Use these fields:

  1. Context: The business problem, constraints, and assumptions.
  2. Options considered: Credible alternatives and their trade-offs.
  3. Decision: The choice and expected consequences.
  4. Owner and date: The accountable person and when the decision was made.
  5. Revisit trigger: A traffic milestone, operating-cost boundary, changed requirement, or new compliance obligation.

Named accountability doesn't mean one person does all the work. It means one person answers for whether the decision remains valid.

Start with the checklist and draft two decision records covering your three most expensive decisions, grouping related choices where appropriate. The architect should identify missing evidence and schedule the next review trigger before approving further investment.

Designing AI Workloads for Reliability, Not Just Capability

Choosing a capable model doesn't make an AI system production-ready. An agent may produce an excellent answer during a demonstration while its surrounding workflow loses state, repeats an action, or stalls when a provider reaches capacity.

The 2026 Durable Execution Benchmark Report, covering 130 backend, full-stack, and AI engineers, found that 20% of teams building AI in production spend 26–50% of engineering capacity on reliability work; it also discusses Datadog production telemetry indicating that approximately 5% of AI model requests fail, with nearly 60% of those failures attributed to capacity limits rather than model quality.

The architectural response is not just a different prompt. Agentic workloads require persistent workflow state, bounded retries, capacity management, fallbacks, observability, and spending controls.

Define the workflow before selecting the model

Our AI work starts with the business process, opportunity, and process economics before technology selection. Model and architecture decisions come last, based on evidence.

Say an agent prepares supplier orders. Establish the value of faster preparation, the cost of incorrect orders, and the approval obligations before comparing models. A system that drafts accurately but submits unauthorized purchases isn't a successful automation.

Answer these questions before building:

  • What is the workflow failure budget? Measure completed, accepted business tasks, not merely successful model responses.
  • Which steps must be durable and idempotent? Persist completed steps so a worker restart doesn't repeat an external action.
  • When should execution queue, retry, degrade, or request approval? Set bounded policies and explicit exception routes rather than letting the agent improvise operational behavior.
  • What is the cost per successful task? Include model calls, retries, supporting infrastructure, and human review in the numerator.

Count success only when the output meets the business acceptance criteria. Cheap requests that produce unusable work don't represent good economics.

Separate intelligence from execution authority

Keep the model's recommendation separate from the code that authorizes actions. Validate structured outputs, enforce tool permissions, and require human approval for consequential exceptions.

Use representative evaluation cases that include incomplete inputs, contradictory records, unavailable tools, and malicious instructions embedded in retrieved content. The senior engineer owns the evaluation criteria and production release decision.

AI changes delivery economics. It doesn't transfer engineering accountability to an agent.

Agentic AI can accelerate analysis, development, testing, documentation, and migration work. Our architects and engineers remain responsible for architecture, data, security, testing, and production quality.

The AI lead's next step is to demonstrate a complete workflow under failure, with traceable decisions and measured cost per accepted outcome. Select the model that supports that process, not the model that produces the most impressive isolated response.

Modernizing Legacy Systems Without a Risky Rewrite

Standing still has an operating cost. In Ensono's 2025 survey of 500 U.S. and U.K. IT and business leaders, 57% of teams spent most of their time maintaining daily operations, 49% experienced higher-than-planned legacy-maintenance costs, and 43% struggled to integrate legacy systems with newer platforms; related findings reported that AI tools accelerated modernization for only 39% of teams, while 33% said they introduced new challenges.

Don't confuse faster code generation with a safer migration. The difficult work includes discovering hidden behavior, reconciling data, preserving integrations, and proving that operations can continue.

The migration sequence should reduce uncertainty before increasing the scope of change.

A four-step infographic showing a modernizing strategy for legacy systems without performing a risky full-scale rewrite.

Choose a path for each business capability

Rank candidates by business criticality, change frequency, failure impact, and measurable economic value. A frequently changed bottleneck deserves attention, but its replacement may need rehearsal on a lower-risk capability first.

Retain, refactor, rebuild or replace: choosing the path

Option Choose it when Risk to watch First move
Retain Stable, rarely changed, with low business value Hidden dependencies on other systems Document interfaces and monitor them
Refactor Business logic is sound but the structure is poor Regressions when code changes without tests Write characterization tests, then extract modules
Rebuild Core logic is outdated but the domain is well understood Scope creep and the cost of running two systems Build alongside the old system with clear exit criteria
Replace A commodity function has a mature product option Data migration effort and vendor lock-in Pilot one workflow with a tested rollback plan

A modular monolith is safer than service decomposition when the team still needs shared transactions and coordinated delivery. A façade provides a stable entry point while implementations change underneath. An anti-corruption layer translates legacy concepts so they don't dictate the new domain model.

Our paid modernization assessment establishes the current architecture, data, integrations, risk, and business objective. Rite NRG then recommends what to retain, refactor, rebuild, or replace.

Migrate with evidence and exit criteria

  1. Inventory systems, interfaces, and data flows. Include scheduled jobs, manual workarounds, reporting dependencies, and external consumers.
  2. Capture current behavior. Write regression characterization tests before changing implementation. Distinguish required behavior from defects the business explicitly approves correcting.
  3. Introduce a protective boundary. Put a façade or anti-corruption layer between old and new code, with routing that supports rollback.
  4. Move a business slice. Begin with a lower-criticality slice that exercises the migration method without exposing the most consequential workflow.
  5. Define exit criteria. Require accepted behavior, reconciled data, support readiness, and a demonstrated rollback path before switching responsibility.
  6. Retire the old component. Track dual running, synchronization, and support hours until retirement. Assign a person who can authorize shutdown.

Use this video as a discussion prompt when aligning the migration team.

The modernization owner should report business progress, not just code converted. Track maintenance effort, delivery lead time, unresolved reconciliation issues, and components retired. A replacement that never permits shutdown leaves the organization paying for both systems.

Confirm Your Architecture Before You Commit Budget

Before you commit the full delivery budget, run a structured architecture check. Put every unresolved assumption next to the decision it affects, the evidence that would settle it, and the person who owns resolving it. That single artifact turns architecture from an opinion into an investment case your board can interrogate.

A technical and operational assessment reviews architecture, dependencies, security position, observability and operational risk, then agrees what must be corrected first. Its job is to make investment decisions defensible.

If it produces a long document and no ranked corrections, it failed.

Ask for evidence where uncertainty is expensive: a representative load test, a data reconciliation sample, a contract test against a partner sandbox, or a recovery rehearsal. For AI workloads, start with the process economics instead of the model. What the business process costs today, what the model changes about that cost, and what happens when the model is wrong all have to be answered before model and architecture choices are made on evidence.

Make the opening working days useful

On Days 1 to 5, Rite NRG validates architecture, data, integrations, risk and the delivery plan. Required systems, data, environments and access can be provided before Day 1, so the team inspects real constraints rather than a description of them.

The immediate outputs should support decisions:

  • Architecture direction: The chosen boundaries, deployment approach, and assumptions that still need testing.
  • Initial backlog: Delivery work separated from risk-reduction work, with dependencies visible.
  • Service expectations: Clear responsibilities for support, release readiness, operational evidence, and acceptance.
  • Correction priorities: The issues that must be resolved before implementation proceeds safely.

A short assessment can establish the initial architecture, backlog and service expectations for a managed team. It should not imply that every future detail is settled. Assessments, roadmaps and architecture reviews are offered at a fixed fee, so the cost of finding out is capped before delivery spend begins.

Put names against the result

Name an accountable architecture owner, delivery owner and business-outcome owner. Keep engineering accountability explicit as well, so quality decisions do not disappear between design and execution. Every change then passes architecture review by a named architect, automated tests, a security review, plus observability and a documented runbook and decision record.

The RiteWay approach puts architecture before generation, uses AI-accelerated execution with human approval gates, and requires production evidence for important decisions. Treat that as a budget control, not a slogan. It is what stops spend on code nobody has agreed to own or operate.

The business owner keeps product priorities and acceptance authority. Senior engineers remain answerable for whether the implementation meets the agreed standards and can be operated and handed over. Handover is part of the deal, not a favour at the end: source repository, architecture and decision records, test evidence, a deployment and operating runbook, and an access and responsibility map.

Bring your most expensive decisions and realistic failure scenarios to the assessment. Leave with explicit choices, ranked corrections, and a delivery plan you can defend to your board.

Rite NRG offers architecture reviews and modernization assessments that connect system architecture design to delivery risk, operating responsibility, and business outcomes. Visit Rite NRG to book an assessment, and bring your three most expensive decisions, critical integrations, and failure scenarios so we can turn them into an actionable plan.

/ about the author

Written by the RITE NRG editorial team — the architects, engineers and delivery leads who build and operate AI-era software for our clients.

Technology Talent & Teams

IT Partnership Models: How to Choose the Right One

A decision-maker's guide to IT partnership models: what each model actually transfers to the partner, what it costs beyond the rate card, and how to match the model to your situation.

More guidance: all insights articles

Get a Free 30-Minute Scoping Call

Tell us about the system or idea behind this article. We tell you honestly if it is a fit — and what a fixed-scope delivery could look like.