Applying Chaos Engineering to Traditional Systems
September 01, 2021

Tony Perez
Skytap

Imagine: it's 2011 and Netflix has introduced Chaos Monkey, a tool that injects arbitrary failures into their cloud architecture to pinpoint design flaws. Today, resiliency engineering has advanced so much that "Chaos Engineer" is an actual job title. Enterprises such as Amazon, Facebook and Google now use chaos to understand their architectures and distributed systems.

While chaos engineering is usually performed on cloud-native software, it can also be used to strengthen the dependability of traditional data center applications that may never move to the cloud. What kind of tests might you run on these applications? Some might be:

■ Low network bandwidth and/or high latency

■ Disc volumes full

■ Application code failure

■ Database/server down

■ Expired certificate(s)

■ Hardware failures

This can be accomplished by using the cloud, which allows IT to create a production-like environment that includes the original's exact application components. All technical infrastructure encapsulating a depiction of an application is called an "environment." Chaos testing can be performed on the cloud replica without affecting production code.

It isn't necessary to change components to "cloud-native" with this approach; simply lift-and-shift, keep the same lines of application code, and use the same servers as the original. To get the most value from chaos testing, reuse the RFC-1918 address spaces you're using on-prem in the cloud. Every major cloud service has some type of network address translation (NAT) system, enabling each cloud-based environment that could be using cloned address spaces to communicate with other on-prem resources to prevent IP address collision.

Setting Up Your Chaos Testing Workflow

One reason to use the cloud for chaos testing on-prem applications is the ability to do a fast reset of the system between test rounds. Your goal should be quickly resetting or re-creating the system in the cloud, allowing you to quickly run several chaos test scenarios without wasting time resetting between each one. Here is a workflow to prepare for chaos testing.

1. Import your on-prem environment to the cloud.

2. Once running, save your application so you can recreate on-demand clones.

When importing the on-prem environment to the cloud, the goal is to duplicate the original on-prem system exactly. All the volume's data, networks, VMs and storage must be included.

Next, your test workflow is:

1. Deploy a duplicate application from your template/scripts.

2. Run your chaos tests and collect the results.

3. Once tests are complete, delete the entire test environment.

4. When you're ready for the next test, return to step #1.

While cloud-based infrastructure won't totally mirror on-prem environments, there are some workarounds. Say the design and size of your storage array (SAN) can't be duplicated in the cloud, meaning you won't be allowed to test due to "failing the SAN." In this instance, you could disconnect or alter a disk linked to a VM to mimic a failure, all in the cloud.

Resetting Your Test Environments After Use

By replicating your traditional on-prem application in the cloud, you can run aggressive tests to determine solutions to common issues, thereby extending the life of the application. However, when the testing eventually ruins the cloud-based application clone, how will you reset for future test rounds? Manually fixing things can take ages, but with cloud-based testing you unlock an unending supply of clones.

Different clouds approach this in different ways. No matter the strategy, the aim is to quickly rebuild a ready-to-use set of infrastructure and application components representing the original application. Companies already doing "infrastructure-as-code" may have the tooling and scripts to replicate the system from nothing.

Note that cloning IP address space is hard to do on-prem; don't be tempted to "Re-IP" (re-assign IP addresses and hostnames) to servers to prevent collision with the originals. This approach means you've essentially changed the original system's representation, so your chaos tests may produce incorrect results due to mismatched hostnames and IP addresses.

What once seemed impossible is actually a simple, elegant approach to improving on-prem applications that will never see the cloud. The cloud provides a 24/7 sandbox for you to create and destroy things, then quickly recover without risking your original systems. This approach works for original application systems of record, disaster recovery systems, and software development pipelines, making it a one-stop testing shop for traditional applications.

Tony Perez is a Cloud Solutions Architect at Skytap
Share this

Industry News

March 31, 2025

Sonatype expanded support for software development in Rust via the Cargo registry to the entire Sonatype product suite.

March 31, 2025

CloudBolt Software announced its acquisition of StormForge, a provider of machine learning-powered Kubernetes resource optimization.

March 31, 2025

Mirantis announced the k0rdent Application Catalog – with 19 validated infrastructure and software integrations that empower platform engineers to accelerate the delivery of cloud-native and AI workloads wherever the\y need to be deployed.

March 31, 2025

Traefik Labs announced its Kubernetes-native API Management product suite is now available on the Oracle Cloud Marketplace.

March 27, 2025

webAI and MacStadium(link is external) announced a strategic partnership that will revolutionize the deployment of large-scale artificial intelligence models using Apple's cutting-edge silicon technology.

March 27, 2025

Development work on the Linux kernel — the core software that underpins the open source Linux operating system — has a new infrastructure partner in Akamai. The company's cloud computing service and content delivery network (CDN) will support kernel.org, the main distribution system for Linux kernel source code and the primary coordination vehicle for its global developer network.

March 27, 2025

Komodor announced a new approach to full-cycle drift management for Kubernetes, with new capabilities to automate the detection, investigation, and remediation of configuration drift—the gradual divergence of Kubernetes clusters from their intended state—helping organizations enforce consistency across large-scale, multi-cluster environments.

March 26, 2025

Red Hat announced the latest updates to Red Hat AI, its portfolio of products and services designed to help accelerate the development and deployment of AI solutions across the hybrid cloud.

March 26, 2025

CloudCasa by Catalogic announced the availability of the latest version of its CloudCasa software.

March 26, 2025

BrowserStack announced the launch of Private Devices, expanding its enterprise portfolio to address the specialized testing needs of organizations with stringent security requirements.

March 25, 2025

Chainguard announced Chainguard Libraries, a catalog of guarded language libraries for Java built securely from source on SLSA L2 infrastructure.

March 25, 2025

Cloudelligent attained Amazon Web Services (AWS) DevOps Competency status.

March 25, 2025

Platform9 formally launched the Platform9 Partner Program.

March 24, 2025

Cosmonic announced the launch of Cosmonic Control, a control plane for managing distributed applications across any cloud, any Kubernetes, any edge, or on premise and self-hosted deployment.

March 20, 2025

Oracle announced the general availability of Oracle Exadata Database Service on Exascale Infrastructure on Oracle Database@Azure(link sends e-mail).