Cloud Services, Software Development, Information Technology
From Data Center to Deployment: Connecting IT, Cloud and DevOps
There's a particular kind of quiet that follows a migration weekend. Every dashboard is green, every server answers, the change record is closed, and everyone finally goes to bed. Then at 8:15 on Monday the service desk queue starts filling up with people who cannot do their jobs.
Usually it turns out to be authentication. Sometimes the application is cheerfully connected to the wrong database. Every so often it's a scheduled file transfer that has been failing quietly since Saturday night, which nobody notices until somebody in finance asks where their report went.
None of that registers as an infrastructure failure, because a business service is a much larger thing than the components listed on a change ticket. Identity, DNS, certificates, the network path between two systems, and the person who owns each of them - that's where the service actually lives, and it almost never maps cleanly onto anyone's project plan.
Take a project shape that comes up constantly. A company wants to move an application's web tier into a public cloud while the database and directory services stay in the data center. At the same time the development team wants to stop releasing by hand. On paper that's three workstreams: infrastructure, cloud, DevOps. Three leads, three sets of milestones, three status colors on the same slide.
Users don't experience three workstreams. They experience one service, and the seams between the three are exactly where it breaks.
Follow one user action all the way through
Pick something a person actually does. Signing in. Opening a customer record. Submitting a change for approval. Then follow it hop by hop through every system it touches, and back again.
This is unglamorous work, and on any estate with a few years of history behind it, it turns up things a server inventory misses. A background job nobody has thought about in years. A third-party endpoint. A firewall rule whose comment refers to a project that finished in 2019. A manual approval step that exists because somebody once made an expensive mistake.
You don't need an architecture poster at the end of it. A table will do: source, destination, protocol, owner, what good looks like. Then add the column people skip, which is how anyone finds out when this particular connection stops working. That column is where the monitoring gaps show up, and it is rare to finish the exercise without finding at least one.
Now use the map to argue with the proposed design. Suppose the web tier makes two hundred database calls to render a page, and the database is staying on-premises. A call that used to take well under a millisecond now takes thirty or forty milliseconds. If those calls run one after another rather than in parallel, that is six to eight seconds of a user watching a spinner, and no amount of extra vCPU will fix it, because the problem is distance rather than compute. Allowlists behave the same way. A partner who wrote down your egress address five years ago will start dropping your traffic on day one, and both ends will report themselves perfectly healthy the whole time.
These are decisions to make before the migration window, in daylight, with the people who own each piece in the room.
The environment you already have sets the rules
Whatever runs today defines the starting conditions, and most of it will still be there long after the first cloud resource is created. vSphere, Windows Server, Linux, the storage array, Active Directory, the backup product - all of it still load-bearing.
So take a baseline first, and make it the kind an engineer can use rather than the kind that goes in a binder. Versions and support status. Where capacity is already tight. The exceptions everyone knows about and nobody wrote down. When a restore was last tested and how long it took. Maintenance windows. Certificate expiry dates. Nobody enjoys assembling that list, and it earns itself back the first time something breaks at two in the morning and the question on the bridge call is whether this is new.
Recovery deserves harder questions than a green backup job. Restore something representative, then try to use it. Can it authenticate? Does it find its data? Do the scheduled jobs pick up where they left off? A restore that completes successfully and cannot process a single business transaction is a file copy with good marketing.
There's a lot of repetitive work in this phase and automating it is worth doing, provided the automation has a job. A PowerShell, PowerCLI or Ansible workflow that collects configuration, checks for drift or pushes an approved baseline earns its keep quickly. That's a different animal from an application delivery pipeline, though both need an owner and inputs you can trust.
Foundation before workloads
Moving workloads before the cloud foundation is settled is how a project generates its own rework. Subscription or account structure, identity, network connectivity, logging, security controls, governance, and who owns the bill - those want answers before resources start multiplying, because retrofitting them once the estate has grown is a separate project with its own budget.
Microsoft's Azure landing zone guidance treats these as design areas rather than settings to fill in later, which is the right framing and travels well beyond Azure. A cloud platform needs an operating model as much as a technical layout. Who is allowed to change what. Where the activity is logged. How an exception gets approved, by whom, and for how long.
That's roughly how we scope public cloud engineering at CloudStage: landing zones, platform foundations, and the implementation work that follows. It also makes a serviceable sanity check on a project brief. If the document talks about instance sizes and says nothing about identity, connectivity or day-two operations, the foundation isn't finished yet.
Then go back to the dependency map with the target design in hand. Overlapping address ranges. What DNS returns from each side of the link. Whether the certificate carries the name the client is going to ask for. Egress addresses, allowlists, and the route your own administrators will use to get in. And one question that stays theoretical right up until it's urgent: when a call crosses the boundary between the data center and the cloud, what can the operations team actually see? If the answer is nothing much, every future incident becomes an argument between two teams who are both looking at green dashboards.
What does a release actually look like here?
DevOps conversations go wrong when they open with a product list. Open with the release instead. How does a change get from a developer's branch to something a user is touching? What evidence has to exist at each stage? Who is allowed to promote it, could they do it at four o'clock on a Friday, and would anything stop them? Answer that, then choose tools.
A pipeline worth having builds a versioned artifact once, runs the tests that mean something, and moves that same artifact through defined stages. Environment-specific configuration lives outside the package. Credentials live in a controlled secrets system rather than a build variable called PROD_PASSWORD. And the production release uses the same package and the same mechanism the team has already exercised several times somewhere less frightening.
That is the practical core of DORA's guidance on deployment automation. Repeating the process across environments is what surfaces problems while they are still cheap to fix. It doesn't mean every environment is identical, because they never are. It means the differences are written down instead of living in one person's head.
Our own toolchain overview is a map of where each tool sits on that path, from source and build through gates, environments, deployment and feedback. It's meant to be read as a map. Every platform on it needs a purpose, an owner and somebody who will patch it, and a tool adopted without those three things has added a system to keep alive rather than a capability.
Cutover is a business event
The cutover plan should exercise the same user action that produced the dependency map in the first place. A successful ping and a login to the server console prove very little. Can a real person authenticate, read their data, write something back, and see the overnight job produce the right output the next morning?
AWS publishes prescriptive guidance that breaks cutover into concrete activities: freeze ingestion, take a final backup, synchronize the data, change the routing, test the target. The sequence will differ from project to project. The discipline shouldn't. Every step gets an owner, an expected result, and a defined point at which the team stops and thinks rather than pressing on because the window is closing.
Rollback is where plans tend to get optimistic. Before the new environment has accepted any data, rolling back is a routing change and takes minutes. Once users have started creating real transactions in the new system, going back means either losing that work or reconciling it by hand at three in the morning. Decide in advance who makes the call, what specifically triggers it, and what happens to the new writes. Rehearse the parts that can be rehearsed, and be honest in writing about the parts that can't.
Handover is where the project proves itself
A project isn't finished when the people who built it can run it. It's finished when the people who inherit it can. That takes more than a folder of diagrams: configuration records, the automation code with its history, the test evidence, procedures written for somebody who has just been woken up, the limitations you already know about, and a plain statement of who owns what.
The best handover test costs nothing. Give the runbook to an engineer who had no part in building the thing and ask them to trace a dependency, work an alert, or run an approved deployment. Then watch without helping. Every place they get stuck is a shortcut somebody took and never wrote down, and you'd far rather find those now than during the first real incident.
Infrastructure is the stable base under all of it. Cloud engineering settles where the service is going to live and under what rules. DevOps owns the path a change takes to get there. Those three don't have to become one team, but they do have to agree on what finished means, and finished isn't the last milestone on the plan. It is the Monday morning where the queue stays empty.
Comments
Comments are available to signed-in users and are moderated to keep the discussion useful and respectful. Spam, automated submissions, and low-value promotional comments are removed. Outbound links may be approved when they are relevant and genuinely helpful to readers, but they are displayed as plain text rather than clickable hyperlinks.
No comments have been published yet.
Please sign in to submit a comment.