← Journal
Architecture

When a Business Only Needs Architecture — and How to Hand It Off to Another Team

Passing it along. The architecture is ready, the documentation is assembled, the data model is drawn, the backlog is laid out — now the development team has to pick it up and take the system to production.

Yuri Eliseev
10
When a Business Only Needs Architecture — and How to Hand It Off to Another Team
Article contents11
Passing it along. The architecture is ready, the documentation is assembled, the data model is drawn, the backlog is laid out — now the development team has to pick it up and take the system to production. In practice this moment turns out to be one of the riskiest in the entire project: not because the architecture is bad, but because the handoff is organized worse than the architecture itself. Let's break down exactly what should be in the box labeled "handoff" and how not to lose the meaning of decisions along the way.

What a business actually orders when it orders architecture

Let me start with the fact that the order itself is often poorly worded. "We need architecture" is like "we need a plan." A plan for what? Over what horizon? With what precision? The first thing an architect has to do is translate a vague request into a concrete deliverable for the stage. And it's important to understand here: a business rarely buys diagrams and schematics. A business buys the removal of uncertainty. It pays to stop guessing: will the system handle the load, how much will operation cost, where are the bottlenecks, which decisions must be made now and which can be deferred.

So the result of an architecture stage is not a folder of documents but a set of artifacts, each of which closes a specific risk. There are usually seven: system boundaries, the data model, integrations, the backlog, the risk register, acceptance criteria, and the handoff itself. Skip any one of them and the team receiving the work will start filling in the blanks. And filling in blanks in architecture is expensive.

Boundaries: where the system begins and where it ends

The first thing to nail down is the boundaries. What's inside the system, what stays outside, where the contour of responsibility runs. Sounds trivial, but this is exactly where most conflicts happen during development. One engineer thinks authentication is part of the product, another thinks it's an external service. Both are right in their own way, and both assume different amounts of effort.

Boundaries are described along three axes. Functional: which capabilities are inside, which are outside. Technical: which services are ours, which are someone else's, where the APIs are, where the webhooks are, where the batches are. Organizational: which team owns what, who owns each module, who makes decisions about changes.

A good practice is to draw the boundaries so they can be shown to someone far from development and that person understands where the product is and where the surrounding world begins. If explaining them requires a ten-page glossary, the boundaries are blurry.

The data model: the key artifact that is most often underestimated

If someone asked me to pick the one artifact that determines a project's fate more than all the others, I'd pick the data model. Not the service architecture, not the choice of stack, not the deployment scheme. The data. Because services can be rewritten, the stack swapped, deployment reconfigured. But a data migration in production happens once, and it hurts.

At the architecture stage, the data model is described on three levels. Conceptual — what entities exist and how they relate. Logical — what fields, types, constraints, keys. Physical — where it's stored, how it's sharded, how it's indexed, what's denormalized. All three are needed in the handoff, because the development team will start with the logical level, but hit the physical one by the second week.

Separately — the question of versioning. How do records change? Who can edit them and when? What happens to old versions? If there's no answer to these questions in the documentation, the developer will invent one — and almost certainly not the one the business needs.

Integrations: a map of connections to the outside world

Integrations are the second most frequent source of surprises. Every external system has its own character: its own limits, its own error formats, its own schedules, its own quirks. The architecture stage has to fix a map of these connections: what talks to what, in which direction, at what frequency, what happens on failure.

Here it's important not to stop at a list. You need contracts — at least at the level of formats and error codes. You need degradation scenarios: what the system does if the external service is unavailable for a minute, an hour, a day. You need a strategy for retries and idempotency: how the system behaves when the same request arrives twice.

I remember a project where the payment integration was described in one line in the document: "webhook from the provider." The development team took that and implemented the logic "webhook arrived — updated the status." A week after launch it turned out the provider duplicates webhooks on retries, and the status sometimes arrives with a twelve-hour delay. Two days of investigation, manual fixes, an unpleasant conversation with the client. All of it could have been prevented by one paragraph in the handoff.

Backlog: not a task list but a map of decisions

The backlog at the output of an architecture stage is not "what the developers should do." It's a map of decisions: which architectural choices have already been made and why, which have been left open and until when, which depend on external factors. The difference is fundamental. A task list will be rewritten by the team to fit themselves, and that's fine. A map of decisions is something that can't be rewritten without losing meaning.

The backlog should record three types of entries. Mandatory — the things without which the system won't work. Conditional — the things done under certain conditions: increased load, changed requirements, a new integration. Deferred — the things consciously not done now, with the reason stated.

And separately — the dependencies between entries. If the team starts with an item that depends on an unresolved decision about the data, they'll hit a wall in two weeks. Those connections have to be shown explicitly.

Risks: a register, not a scare sheet

A risk register at the architecture stage is not "a list of all the bad things that could happen." It's a working tool: for each risk, probability, impact, owner, and response plan are stated. Without an owner, a risk turns into a ceremonial entry everyone ignores.

Risks are conveniently divided into four classes. Technical — related to technology choices, performance, reliability. Organizational — dependent on the team, deadlines, competencies. External — providers, regulators, the market. Product — changes in requirements, competition, user behavior.

For each one — a plan: accept, mitigate, transfer, or avoid. If the plan is "accept," that's a decision too, but it must be conscious and signed off, not the result of someone simply forgetting about the risk.

Acceptance criteria: how to know the architecture is delivered

This is where the architecture stage most often sags. How do you know the architecture is ready? Who decides? By what criteria?

A bad answer: "when the architect says it's ready." A good one: a set of verifiable conditions. Boundaries are described and agreed. The data model covers all use cases. The integration map is complete, with contracts and degradation scenarios. The backlog contains mandatory, conditional, and deferred entries. The risk register is filled in and signed off. The handoff package is assembled and tested on another team — for instance, on a single developer who wasn't involved in the design.

The last point is the most important and the most often skipped. Architecture is considered handed off not when the documents are written, but when an outside person can start working from them without additional questions. If they ask ten clarifying questions, the handoff didn't happen.

Anatomy of a handoff package

Now let's put it all together. A handoff package is not a folder of documents but a structure where each element answers a specific question from the development team.

What we're building and why — a brief description of the product and its goals. Where the boundaries are — a diagram of contours and responsibilities. What the data is — the data model on three levels with examples. Who we talk to — the integration map with contracts. What we do — the backlog with a map of decisions. What we're afraid of — the risk register. How to know it's ready — the acceptance criteria.

Plus — a decision log. A separate document recording architectural choices: what was chosen, what alternatives were considered, why they were rejected. Six months later this log will save the team weeks — they won't have to walk the path that's already been walked.

Author's opinion

Climax: what's actually being handed off

In the end, a handoff is the transfer not of documents but of decisions. Documents can be rewritten, decisions cannot — not without losing meaning. That's why the architect's main task at this stage is not to beautifully format a folder, but to make sure the development team understands not only what to do, but why exactly this way.

A good sign is when, a month after the handoff, the team asks questions not about the architecture but about implementation details. That means the foundation has been absorbed. A bad sign is when, a month later, questions surface whose answers were in the documents but nobody read them. That means the handoff was a formality.

And one more thing. The architecture stage rarely ends on schedule. It usually ends when the business says "enough, let's start building." That's normal, but it means the handoff package will always have something unfinished. The architect's task is not to do everything, but to honestly mark what's left open and leave a mechanism for closing it during development.

Architecture is not a finishing point but a branching point. And the quality of that point determines how expensive the rest of the road will be.

Glossary of terms

  • Handoff — the process of transferring architecture, documentation, and decisions from the architect to the development team. A stage deliverable, not a bureaucratic formality.
  • Artifact — a tangible result of work: a document, a diagram, a register, a set of tests. Something that can be handed over, verified, and reused.
  • System boundaries — a description of what's inside the product, what stays outside, and where the team's contour of responsibility runs.
  • Data model — a formal description of entities, their relationships, fields, and storage rules. Exists on three levels: conceptual, logical, physical.
  • Conceptual model — the top level of data description: what entities exist and how they relate, without reference to technologies.
  • Logical model — the middle level: specific fields, types, constraints, keys. What the development team works with.
  • Physical model — the bottom level: where and how data is physically stored — sharding, indexes, denormalization.
  • Sharding — splitting data into parts (shards) to distribute load and simplify scaling.
  • Denormalization — deliberate duplication of data to speed up reads. The flip side is the difficulty of maintaining consistency.
  • Integration — a connection between the system and an external service or another system. Described by a contract and failure behavior scenarios.
  • Contract — a formal description of interaction: data formats, error codes, invocation rules.
  • Webhook — a mechanism where an external system itself sends a notification about an event to your service. Often duplicated on retries.
  • Idempotency — the property of an operation producing the same result when repeated. Critical for webhooks and payments.
  • Degradation scenario — a pre-described system behavior when an external component is unavailable or fails.
  • Backlog — in the context of architecture: a map of decisions and tasks fixed at the design stage. Three entry types: mandatory, conditional, deferred.
  • Risk register — a table of risks with probability, impact, owner, and response plan. A working tool, not a report.
  • Acceptance criteria — verifiable conditions under which the architecture stage is considered complete.
  • Decision log — a document recording architectural choices: what was chosen, what alternatives were considered, why they were rejected.
  • API — a programmatic interface for interaction between systems.
  • Batch — batch processing of data: several operations performed as a group rather than one by one.
  • Production (prod) — the working environment where the system is used by real users.
  • Data migration — moving or transforming data when the storage structure changes. One of the riskiest operations in production.

Respectfully,

Yuri Eliseev

AI Systems Architect · Full-Stack Product Engineer

Collaboration

Need a project of any complexity?

Let’s discuss an idea, product, AI system or technical challenge and define a realistic first step.

Start a conversation