42. Enterprise Case Studies
Enterprise Case Studies
TL;DR
- “Modernize later” almost never happens — organizational momentum moves to the next initiative once migration is “done”; modernization must be explicitly scoped, resourced, and scheduled upfront.
- Deep infrastructure expertise doesn’t automatically transfer to a new operating model (on-prem → cloud, VMs → containers); underlying skills transfer, but specific practices must be deliberately learned.
- Untested capacity planning is a hypothesis, not a fact — Auto Scaling policies that look correct can fail under real peak; load-test against realistic historical peaks.
- Mandated, simultaneous comprehensive rollouts produce shallow adoption — transformation initiatives that work start with the highest-pain validated workflow, then expand incrementally.
- Verify current state over documentation during incidents — documentation drifts from reality; trusting stale docs risks wrong diagnosis and wastes critical incident time.
- Recurring theme across case studies: context and realistic sequencing matter more than tool choice or completeness.
Core Concepts
The “modernize later” trap
A lift-and-shift migration scoped with modernization deferred produces exactly the starting point: migrated, but not modernized, often with a higher cloud bill than on-premises it replaced. Why? Because nobody right-sized or re-architected; they just moved the same inefficient patterns to a more expensive, pay-as-you-go platform. Organizational attention and budget move to the next initiative once a migration is “done.” The modernization phase needs to be concretely scoped, resourced, and scheduled as part of the original migration plan, not deferred as a vague good intention nobody’s accountable for delivering.
Deep expertise and operational model transitions
An engineer with genuine, deep on-premises VMware/Windows Server expertise who initially tries to replicate manual, GUI-driven patterns in a cloud environment is following what deep expertise naturally reaches for under pressure. The underlying skills (systems thinking, troubleshooting, understanding failure modes) do transfer. The specific practices — infrastructure as code, autoscaling design, managed services — need to be deliberately learned as a distinct skill set, not assumed to follow automatically from prior platform mastery. This is a real, common transition point for senior engineers moving to cloud-native roles.
Untested capacity and scaling
An Auto Scaling policy configured but never load-tested against actual historical peak traffic multiples is a common, high-consequence gap. Policies that look correct in the console fail under real peak in ways that don’t surface until the actual event: scale-up too slow, account-level service quotas hit, downstream dependency capacity exhausted. The only way to know a scaling configuration actually works is to test it against realistic load patterns, not just configure it correctly on paper.
Transformation scope: comprehensive vs. incremental
Mandated, simultaneous, comprehensive rollouts of multiple new tools (Kubernetes, GitOps, DevSecOps) across every team overwhelm teams’ capacity to actually learn and internalize new practices, producing shallow, checkbox-level adoption rather than genuine capability. Transformations that stick start with the single highest-pain, most validated workflow, prove real value, and expand scope based on demonstrated success — incremental discipline applied at organizational scale.
Documentation drift and incident response
During an incident on an unfamiliar system, verifying actual current architecture and real failure modes directly, rather than trusting existing documentation at face value, is what actually saves time. Documentation drifts from reality constantly and invisibly — not maliciously, just because it doesn’t keep pace with changes made under deadline pressure over months/years. Trusting stale docs during an active incident risks wrong diagnosis or a “fix” against an architecture that no longer exists — burning exactly the time and clarity an incident needs most.
Lift-and-Shift vs. Cloud-Native Migration
| Phase | Lift-and-shift (intended) | Lift-and-shift (reality if modernization deferred) | Proper two-phase |
|---|---|---|---|
| Migration | Move to cloud, same architecture | Move to cloud, same architecture | Move to cloud, same architecture |
| Modernization | Scheduled and resourced immediately | Never happens; budget moved to next initiative | Scheduled and resourced upfront |
| Cost outcome | Lower (optimized for cloud) | Higher than on-prem (no optimization) | Lower (right-sized) |
| Learning curve | Managed as part of plan | Not planned; slows operations | Planned, realistic |
| Success signal | Working optimized system | System “moved” but costly, non-optimized | System optimized and cost-effective |
Configuration / Command Reference
# Example: Load-testing auto-scaling configuration
# 1. Establish realistic historical peak traffic multiple
# For e-commerce: 5-10x normal traffic during peak sale season
# Review: past Black Friday, prior peak days, year-over-year growth
# 2. Test auto-scaling policy against that realistic load
# Using k6, JMeter, or locust to simulate peak traffic pattern
export PEAK_TRAFFIC_MULTIPLIER=7
export BASELINE_RPS=100 # requests per second
k6 run --vus=$((BASELINE_RPS * PEAK_TRAFFIC_MULTIPLIER)) \
--duration=30m \
load-test.js
# 3. Monitor actual auto-scaling behavior
kubectl get nodes -w # Watch nodes scale up/down
kubectl get hpa -w # Watch horizontal pod autoscaler metrics
aws autoscaling describe-auto-scaling-groups # Check ASG activity
# 4. Verify results: did scaling keep up? Were quotas hit?
# - Latency remained acceptable (p99 < 500ms)
# - No dropped requests
# - No account service quota limits reached
# - Cost increase was linear, not exponential
# 5. Document the tested configuration and results
# Store this as a runbook: "Peak load test procedure"
# Re-run quarterly or before major sale events
Common Pitfalls
- Pitfall: Lift-and-shift migration “completed” 18 months ago with higher cloud bill than on-premises it replaced because modernization was deferred and never resourced. Why: Organizational momentum moved to the next initiative once “done.” Fix: Make modernization phase explicit, scoped, resourced, scheduled upfront as part of original migration plan.
- Pitfall: Newly-promoted cloud migration lead initially tries to replicate manual on-premises operational patterns in cloud, slowing the transition. Why: Deep expertise defaults to familiar patterns. Fix: Acknowledge operational-model transition as a real learning curve; budget time for deliberately learning cloud-native practices.
- Pitfall: E-commerce platform’s Auto Scaling fails during actual peak sale traffic because never load-tested. Why: Scaling policy “looked correct” on paper. Fix: Test capacity and scaling configuration against realistic historical peak patterns before trusting for real peak event.
- Pitfall: DevOps transformation mandating Kubernetes, GitOps, DevSecOps simultaneously across all teams produces shallow checkbox adoption. Why: Teams’ learning capacity is overwhelmed. Fix: Start with highest-pain validated workflow, prove value, expand incrementally based on demonstrated success.
- Pitfall: Incident response time lost trusting stale architecture documentation instead of verifying current system state. Why: Documentation drifts invisibly. Fix: During unfamiliar-system incidents, verify actual current architecture and behavior directly before trusting docs.
Interview Questions
- A cloud migration completed 18 months ago costs more than the on-prem it replaced. Walk through your investigation and fix. — Tests whether deferred-modernization is correctly diagnosed as the root cause, and whether explicit upfront scoping is the solution.
- You’re leading experienced on-prem infrastructure engineers through a cloud migration. What operational patterns do you actively watch for and correct? — Tests understanding of operational-model transition gaps as real, expected learning curves.
- You’re called into an unfamiliar production incident at 2am with existing documentation available. What’s your actual first move? — Tests whether verifying current real state is prioritized over trusting potentially stale documentation.
- Design an organizational transformation initiative rolling out Kubernetes and GitOps across 50 teams. How do you scope and sequence it? — Tests whether incremental, pain-point-driven approach is chosen over comprehensive simultaneous mandate.