← BLOGHOME

Dec 9, 2025 · 3 min read · Backend Engineering and Architecture

Designing Around Existing System Constraints

The architecture became clearer after we understood the constraints: sensitive data, existing integrations, limited deployment windows and workflows used every day.

The cleanest diagram wasn’t necessarily the architecture we could deliver safely. The enterprise and government systems I worked on at Softcraft had users, integrations, sensitive data, and limited deployment windows. They couldn’t stop while we redesigned them. It was tempting to start with the version we wanted: clean modules, independent services, clear data ownership and modern deployments. Those ideas were useful. They weren’t the starting point. The starting point was everything the system already had to respect.

The Constraints

The platform handled sensitive workflows. It integrated with systems owned by other teams. Some contracts couldn’t change quickly. Historical data needed to remain available, and deployment opportunities were limited because people used the system throughout the day. The team also had delivery commitments. We couldn’t pause product work for months while building an ideal replacement. Once those constraints were explicit, some architecture options stopped being realistic. Others became more valuable. Incremental change mattered because a large cutover carried too much operational risk. Compatibility mattered because dependent systems couldn’t migrate at the same speed. Observability mattered because old and new behavior would coexist during the transition. These constraints weren’t excuses to keep everything as it was. They were information we needed to create a plan that could actually work.

The Migration Period

An architecture diagram usually shows the destination. Production systems also need a path from the current state to that destination. During that path, two versions may run together. Data may move gradually. A contract may need to support old and new consumers. The team has to know how to recover if a migration step fails. Those temporary states can last longer than expected, which means they deserve real engineering. I started asking not only “What should the system look like?” but also “What will it look like after the first month of migration?” If the transition can’t be operated safely, the target architecture is incomplete. Architecture also needs to match the organization that will support it. A design with many independently deployed services may look scalable, but each service creates build, monitoring, security, and production support responsibilities. If the team can’t sustain that work, the design has moved complexity from the code into operations without creating enough value. The same applies to unfamiliar technology. Learning is important, but a critical deadline may not be the right moment to introduce several new systems at once.

I don’t see team experience as an argument against improvement. I see it as information the plan needs to include. Training, gradual adoption, and operational ownership can be part of the architecture.

The Trade-Offs We Discussed

Words like “scalable,” “flexible” and “maintainable” appeared in many of our discussions, but we always had to make them more specific. On one system, independent deployment mattered because unrelated changes were delaying releases. On another, keeping a workflow in one application reduced operational risk. As we worked through cases like these, I spent less time looking only at the final diagram and more time thinking about the months between the current system and that diagram. Data still had to move, old consumers still needed to work and the team still had normal product work during the migration. Those details usually changed the architecture more than the first drawing did.

The result wasn’t as clean as the first blank-slate diagrams. It had compatibility periods, migration steps and compromises we already knew about. But we could explain how the team would get there while the current system stayed in use, which made the architecture feel much more real to me.