vaayaa Inclusive Education

Cloud Computing and DevOps Engineering Case Studies

Technical5 Case StudiesUpdated Sep 2026

These five cases come from the operating side of cloud work, where a platform team is judged by what it can prove during an outage, a conflicting report, a possible breach, a growth spike, or a tempting automation rollout. Each case is built from the kind of working record these teams actually keep: logs, deployment history, access reviews, cost reports, and notes written in a hurry. The aim is to show how the evidence was gathered, which constraints shaped each choice, and what changed afterward so the problem stayed fixed. Read them as working documents rather than polished success stories, because several decisions here were only partly right.

1

Case Study 1

Latency regression after a schema and cache release

Lattice Freight Systems, a logistics software vendor whose tracking API serves about 2,300 partner integrations

The situation

Late in the afternoon of a routine release, the shipment tracking API began answering slowly for roughly a fifth of partner requests. The release bundled a schema migration with a caching change and went to every region in one batch, because the canary stage had been skipped during a staffing gap. Within half an hour, p95 latency on the status endpoint rose from under 300 milliseconds to over 4,000. Error rates stayed low at first, so the on-call engineer, Priya, waited longer than she should have before escalating. By the time the bridge call formed, two of the three read replicas were lagging badly.

The challenge

The team had to stop the degradation without losing the migration, which had already written data in the new format for part of the customer base. Rolling back the application was simple, but rolling back the schema was not, and nobody could say with confidence which writes had landed where. Access to the production database was restricted to two people, and one of them was on a flight.

Analysis

Teams grounded in Cloud Computing and DevOps Engineering usually start with the deployment record, since the timeline of changes is more trustworthy than the timeline of complaints. Here the rollout events lined up with the latency curve to the minute, pointing at the migration rather than the cache flush the team had first suspected. The deeper gap was a requirement nobody had written down: the status endpoint could read from a replica with no lag ceiling. Performance evidence needed both the percentile curves and the replica lag counters, because either one alone suggested a different cause.

Access controls were the second layer. The migration had run under a shared service account with write rights in every region, so the quickest rollback path also carried the widest blast radius. Splitting migration credentials from runtime credentials let a second engineer approve the rollback without standing production access. Maintainability came from the same finding: the pipeline had no concept of a dependent stage, so a schema change and an application change could ship together by default. The new gate holds a migration until the canary has read the new format for a set window.

Recovery loop used after the latency regression
Recover and prevent
1Detect
2Contain
3Verify
4Prevent
  1. Detect Alerts fired on latency, but deployment events were checked first.
  2. Contain Roll back the build and drain the lagging replicas.
  3. Verify Compare latency curves and replica lag before declaring recovery.
  4. Prevent Gate schema changes behind a canary with lag checks.

Actions taken

  1. Rolled back the application build first, which was reversible without touching data, then paused the migration job so no further rows changed format.
  2. Removed the two lagging replicas from the status endpoint pool and pointed reads at the primary until lag returned to a few seconds.
  3. Replaced the shared migration account with scoped credentials, and required a second approver for any write-capable action in production.
  4. Added a canary stage that must pass latency and replica lag checks before schema changes deploy, and wrote the gate into the pipeline definition.

Results

Service latency returned to its usual range before the end of the afternoon, and the team kept the migration paused for two more days while it wrote a reconciliation script for the rows that had landed in the new format. Roughly 1,400 status records needed manual comparison, and all but thirty matched once the script ran. The following release went through the new gate and held for a full canary window before promotion, which the team considered the first real test of the change. Two partners asked for post-incident summaries, and the team sent them the timeline with the replica lag graphs attached.

Questions for discussion

  • Which of the signals the team used first would have been most misleading if it had been the only one available, and why?
  • How would you decide whether to roll back or move forward with a fix when the schema has already changed for part of the data?
  • What minimum access should an on-call engineer hold during a severe incident, and how would you audit its use afterward?
2

Case Study 2

Conflicting weekly sales figures across finance and merchandising

Northgate Market Data, the internal analytics group of a regional grocery chain with 140 stores

The situation

Each Monday the finance and merchandising teams received weekly sales figures that disagreed by a few percent, and for most of a quarter the gap was treated as timing. Then a regional director asked why three stores showed zero transactions for a week the point-of-sale vendor described as busy. The warehouse combined two feeds: batch sales from store systems, and loyalty records that were often corrected days later. Nobody owned the join between them, and its logic had been edited in four places by three people.

The challenge

The team needed to decide which number was authoritative without disrupting the weekly cycle, and to do it before the regional review two weeks away. Stopping the pipeline would have left managers without any report at all. Lineage was partly documented and partly folklore, and the store identifiers in the loyalty feed did not match the master list for about 4 percent of records.

Analysis

The first question was what the reports were meant to measure, and the requirements disagreed with each other. Finance counted a sale at settlement, merchandising at checkout, and the loyalty feed when a member's account was credited. Each definition was defensible, but the warehouse had merged them as if they were one. Reconciling a sample of 200 transactions end to end showed that the largest gap came from late corrections, not from the join logic everyone had been suspecting.

Permissions had a quieter role here. Four people could edit the transformation, and none of their changes went through review, which is how the same join ended up with four slightly different filters. Limiting write access to a single repository with required review did not solve the lineage problem, but it stopped new divergence. Maintainability depended on replacing the logic with one versioned definition per metric, with tests that check known store-week totals. The loyalty feed also needed a reconciliation window so that late corrections were applied on a known schedule rather than whenever they happened to arrive.

Where the reporting gaps sat by impact
Business impact, low to high
Urgent alignment neededHigh impact metrics where definitions diverge, such as revenue and inventory counts.
Stable and trustedHigh impact metrics where definitions match and tests already guard the join.
Deprioritize for nowLow impact reports with divergent definitions that can wait for a scheduled review.
Monitor and documentLow impact metrics already aligned, kept under light reconciliation checks.
Definition agreement, low to high

Actions taken

  1. Froze the weekly report on the settlement definition for finance and published a note to managers explaining the other two figures and why they differed.
  2. Moved the transformation into one versioned repository with required review, and named a single owner for the store-week join and its filters.
  3. Added reconciliation tests that compare known store-week totals against source counts, and fail the run when any store drifts beyond a set tolerance.
  4. Scheduled loyalty feed corrections into a fixed reconciliation window, and added a monitor that flags records arriving after that window closes.

Results

The three stores with zero transactions turned out to be a feed mapping error, and their sales were restored within the week. Finance and merchandising agreed on a shared definition of a completed sale, and the gap between their weekly figures dropped to rounding noise once the reconciliation window was in place. Two regional managers said the summary matched their own counts for the first time in months, though one store still needed manual correction for a register that had been reassigned. The monitor has since caught two feed delays before managers noticed them.

Questions for discussion

  • When two defensible definitions of the same metric conflict, who should decide which one the warehouse publishes, and what evidence would they need?
  • What tolerance would you set for reconciliation failures, and how would you keep people from learning to ignore the alerts?
  • How would you test a transformation whose correct output depends on corrections that arrive after the report has already gone out?
3

Case Study 3

Suspicious service account key in a clinic scheduling platform

Corvane Health Partners, a small group of outpatient clinics whose scheduling and billing services run in one cloud tenant with about 40 engineers

The situation

A cloud audit alert flagged a new access key created for a scheduling service account at an hour when no one on the platform team was working. Within the same window, the account listed storage buckets it had never touched and downloaded a configuration file from a bucket used for vendor exports. The source address resolved to a hosting provider in a region where the company had no staff and no infrastructure. The on-call analyst, Teodor, could not yet tell whether this was a leaked token, a misconfigured integration, or a contractor's laptop.

The challenge

The team had to scope what the key had touched without tipping off a possible intruder, preserve evidence before any clean-up destroyed it, and contain the risk while clinics were open. Shutting the account down would stop the activity but could also break appointment reminders for the morning. Nobody could say yet whether patient data had been read or only listed.

Analysis

Scoping starts with logs that the suspect cannot edit. The first step was copying control plane events and object access logs into a separate account the scheduling team could read but not change. That copy exposed a requirement nobody had written down: logs had to be kept in immutable storage for a fixed period, and no workload account should be able to write to them. The timing evidence mattered too. The key was used less than two minutes after creation, which suggested a script rather than a person working through a console.

The service account's permissions explained most of what happened. The role could create its own keys, which is an escalation path that should never exist for a workload identity. It also held list permissions across every bucket in the account, far beyond what reminders needed. The harder work was making the setup maintainable: each service got a role defined in code, reviewed like any other change, with keys rotated on a schedule instead of created ad hoc. Without that, the next integration would quietly inherit the same breadth.

Relative urgency of containment steps
Disable compromised key10/10
Stops further use immediately, so it takes priority in the first hour.
Preserve logs and snapshots9/10
Evidence must be captured before any clean-up changes it.
Rotate shared workload credentials8/10
Limits exposure of other integrations that used the same role.
Restrict vendor export bucket7/10
Narrows access while the scope of object reads is still unknown.
Notify compliance for review6/10
Triggers the disclosure assessment that the record requires.

Scores set by the review team in this scenario, 10 = highest priority.

Actions taken

  1. Disabled the new key and removed the service account's ability to create keys, then rotated credentials for every workload that shared its role.
  2. Preserved the original logs and bucket snapshots before any clean-up, recording hashes so the evidence could be verified later.
  3. Restricted the vendor export bucket to named principals and blocked traffic from source regions with no operational footprint, using a documented emergency change.
  4. Wrote a response runbook naming who may approve containment steps, what each step changes, and how each one is reversed, then rehearsed it with the clinic operations lead.

Results

The review concluded that a vendor integration tool had created the key using credentials left in a shared configuration file, and no outside access could be confirmed. Still, the export bucket had been listed and one file downloaded, which triggered the notification steps required for a possible disclosure. Compliance reviewed the evidence chain, and every containment step showed its approver and time. Appointment reminders kept running because workload credentials were rotated before the old path was disabled. The vendor removed the stored credentials, and the shared file was retired.

Questions for discussion

  • What evidence would you need before concluding that a suspicious key was created by a tool rather than an intruder, and who should make that call?
  • Which containment steps can be reversed safely during clinic hours, and which need a planned window?
  • How would you keep a runbook like this current so that it does not become a document nobody opens during an incident?
4

Case Study 4

Choosing a reconciliation architecture for seasonal payment peaks

Juniper Ledger, a payments reconciliation startup serving about 1,200 merchant accounts

The situation

Juniper Ledger reconciles payments for about 1,200 merchant accounts, and its workload has a sharp shape. Most traffic arrives in the last three days of each billing cycle, when merchants pull settlement files and query exception queues at once. The current system runs on a cluster of virtual machines in one region, backed by a single relational database with a standby. During the last two cycles, p99 latency on the exception query rose past 9 seconds, and one nightly job overran its window and blocked the morning reports. Leadership wanted the platform to handle roughly three times the current peak within the next year.

The challenge

Two proposals were on the table. One moved to a distributed database with active-active regions, which promised the headroom but added consistency questions for money movement. The other kept a single primary, added queue-based writes, and scaled read replicas, which was cheaper and simpler to operate but limited how far write-heavy spikes could go. The team had to choose without a benchmark that matched their real workload.

Analysis

Start with the requirements that are hardest to change later. Settlement writes must happen exactly once and leave an audit trail, and reconciliation reads must reflect writes within a stated window. Those two constraints rule out some designs before cost enters the discussion. The performance evidence was a replay of the last three cycles' traffic against a staging copy of each option. The replay showed that the read path, not the write path, caused most of the tail latency, which weakened the case for a full distributed write model and strengthened the case for replicas with a bounded lag.

Security and operations shaped the choice as much as performance did. Active-active regions multiply the number of places where customer financial data lives, which widens the access review and the key management scope in each one. The queue-based design keeps most write authority inside a single service with narrow permissions, which is easier to audit. Maintainability favored the simpler option too, since the team had only two people who had run a distributed database under load. A design the team could not operate at three in the morning would fail, whatever its benchmarks said.

Decision path for the reconciliation platform redesign
  1. 1Constrain writesSettlement writes stay exactly once, with an audit trail per transaction.
  2. 2Replay real trafficStaging replays of three cycles locate the read path as the main latency source.
  3. 3Bound replica lagReads tolerate a stated window, with alerts when lag exceeds it.
  4. 4Narrow write authorityOne service holds write permissions, so reviews stay limited to it.
  5. 5Stage the migrationMove merchants in groups, keeping the old path available for rollback.

Actions taken

  1. Adopted the queue-based write path with one service owning settlement writes, so the audit trail and permissions sat in a single place.
  2. Added read replicas with a published lag ceiling, and surfaced lag on the merchant dashboard so the tolerance was visible to users.
  3. Moved the exception query to a precomputed view refreshed on a schedule, which removed the worst tail latency without changing the data model.
  4. Migrated merchants in groups of fifty, holding the old path ready for two cycles so any group could be returned to it quickly.

Results

Peak exception query latency fell below two seconds in the next billing cycle, and the nightly job finished inside its window with room to spare. The team did not reach the three times headroom in one step, but queue depth at peak stayed manageable up to about twice the previous load during a test. The distributed option was shelved, though the team wrote down the conditions under which it would be reconsidered. Two merchants reported a lag notice on their dashboards that confused them at first, and the wording was revised. Operating costs rose modestly, mostly from the replicas.

Questions for discussion

  • Which requirement would you need to relax before the active-active design became the better choice, and what would that relaxation cost merchants?
  • How would you set the lag ceiling for reads, and who should be consulted before it is published?
  • What would a benchmark need to include before you trusted a comparison between a single primary and a distributed database?
5

Case Study 5

Evaluating an automated change approver before wider rollout

Sable Crest Software, a mid-sized software company with 380 engineers across four product teams

The situation

Sable Crest's platform group spent much of each week reviewing change requests, many of them routine configuration edits that waited behind a small pool of senior reviewers. A vendor proposed a model that would score each change for risk and auto-approve those below a threshold, with the claim that review time could fall sharply. The pilot was proposed for the entire engineering organization. The platform lead, Dana, had seen similar tools promise speed and then quietly move the bottleneck into exception handling. Approvals also served as a compliance control, so any change to how they were granted would be visible to auditors.

The challenge

The team had to decide whether the tool was accurate enough to trust, fair enough across teams, and governed well enough to pass an audit. They also had to define those terms before the vendor's demonstration shaped the conversation. The vendor's sample results came from a single product line and did not say how changes from newer services were treated.

Analysis

The evaluation started with metrics written down before anyone saw a live score. Accuracy alone was not enough, because a model can be right most of the time and still approve the one change that takes down a payment path. The team defined false approvals on high-impact services as the measure that could block rollout, and set a separate measure for review time saved. Performance evidence came from shadow mode, where the model scored every real change for several weeks without acting, so its decisions could be compared with what reviewers actually did.

Access was where the design needed the most care. The tool would need read access to change history, service ownership, and deployment targets, which together describe much of the platform. The team scoped its credentials to read-only roles, forbade it from writing to the approval record directly, and required that its decisions enter the same audit trail as human approvals. Maintainability raised a harder question. A model retrained on recent history would absorb whatever patterns reviewers had already produced, so the team needed a fixed evaluation set that did not change with each retraining.

Staged evaluation of an automated change approver
  1. Before the pilotBaseline recorded: review queue times and change failure rates tracked by team.
  2. First week of pilotModel scored changes in shadow mode, logging decisions without acting on them.
  3. Third weekFlag rates ran higher for two newer teams with smaller change histories.
  4. End of the quarterLimited rollout proceeded with human review on every flagged change and weekly audits.
  5. Next quarterScope expanded only after metrics met thresholds agreed with security and the platform lead.

Actions taken

  1. Set the blocking metric as false approvals on high-impact services, with a threshold agreed with security and the platform lead before the pilot began.
  2. Kept the model in shadow mode until its flag rates were compared by team and service tier, and investigated the gap for newer teams before any change went live.
  3. Required a human reviewer on every flagged change and a weekly audit sample of auto-approved changes, reviewed by people outside the team that built the tool.
  4. Built a rollback switch that returns approvals to human reviewers within minutes, and tested it during a scheduled drill before expanding scope.

Results

The pilot ran for the rest of the quarter and was not expanded to the whole organization. Review times for routine configuration changes dropped noticeably, and reviewers spent more of their time on the exception queue. Shadow data had shown that the model's flags were concentrated in two newer teams, and the investigation found that their shorter histories made the model treat unfamiliar services as risky. The team added a fixed evaluation set and a per-team report before the next review. Expansion now waits for two consecutive weekly audits with no false approvals on high-impact services.

Questions for discussion

  • Which metric would you accept as the blocking measure for an automated approver, and what would make you reconsider it?
  • How would you design the weekly audit so that reviewers are far enough from the tool's builders to catch problems they would otherwise miss?
  • If a model's flag rates differ by team for reasons that do reflect real risk, how should the organization respond?

Learning Resources

Technical CASE STUDIES

China, India, United States, Indonesia, Pakistan, Nigeria, Brazil, Bangladesh, Russia, Japan, Mexico, Philippines, Vietnam, Egypt, Turkey, Germany, United Kingdom, France, Italy, Canada, South Korea, Australia, Spain.

Hourly Active: 37,008 Learners