Bring Chaos into your Development Environment
For yet another enlightening session on day 2 of Chaos Carnival 2021, we had Ramiro Berrelleza, the founder of Okteto, join us to talk about Bringing Chaos into your Development Environment.
Ramiro defines Chaos Engineering as, "The discipline of experimenting on a system to build confidence in the system's capability to understand turbulent conditions in production."
"I have been a developer for around 10-15 years and back then, we used to focus on these three main things, which are code, build, and test. This was back when we had no microservices, and used to work on monolithic applications; hence, very limited dependencies.
Therefore, it was very easy to check whether the system is working or not, and we used to focus on unit and end-to-end testing. But then, technologies evolved and microservices became the standard part of the system. Modern applications are no longer a single piece, they consist of codes, multiple microservices, but you are also going to have a database, third-party APIs, DNS entry in front of the orchestrator if you are using docker swarm or Kubernetes as your cloud provider. So, you see, over time complexities have increased in every system." Ramiro explains.
There is a very well-known statistical trend in this industry that, the later in your system you find a bug, the costlier it is going to be to fix it. For example, if you find a bug in ideas, requirements, or coding, it is going to cost much less than production or testing. Hence, starting Chaos Engineering as soon as possible will be beneficial for the infrastructure as it will test the system and point out the errors before a failure can happen.
BRINGING CHAOS TO YOUR DEVELOPMENT ENVIRONMENT
1. Kubernetes:
Kubernetes is an open-source container-orchestration system for automating computer application deployment, scaling, and management. Today, it is the biggest open-source project in the world. It was started internally by Google and then was open-sourced, and every large vendor is now its user. It has become a standard way of running containers. It is mostly liked because of its huge ecosystem and because it allows you to get the computation immediately which is great when you are in the production stage. It's one of the key pieces of bringing Chaos Engineering into your development environment.
2. LitmusChaos:
LitmusChaos is also an open-source chaos testing tool that was created by MayaData, and now it's in spinoff Chaos Native. It's a cloud-native-centric way to do Chaos Engineering. LitmusChaos helps Kubernetes SREs and developers practice Chaos Engineering in a Kubernetes native way. It is easy to use and is manifest-driven, which is great when you are writing code. It fits into the paradigm of infrastructure as code and orchestration as code. It is a part of the CNCF Sandbox Project which means it has a lot of support from the community as well as vendors.
3. Okteto:
Okteto too is an open-source project. It helps you deploy a pre-configure DevOps environment on any Kubernetes cluster. You no longer have to install things locally and you can replicate your cluster by running all your services or calculations locally.
Ramiro then goes on to perform a demo on combining the above-mentioned three open-source projects to give the ability to spin-off Chaos Engineering tests easily with your code.
"I am gonna show you all the different pieces and how they run together and the code as well, but what I want you to most importantly focus on are the principles of why Chaos Engineering is important and how you can bring it down for your team. Even if you are not using these tools, it is important to understand the ideology and make your system resilient." Ramiro goes on to explain the demo and hence, concludes his talk.