The Art of Orchestration
Orchestrating an app isn't a simple matter. Here are the steps, from provisioning VMs to strategizing about code commits, you should keep in mind.
Join the DZone community and get the full member experience.Join For Free
In the fast-paced world of digital services, speed and agility are everything. You, your team, and your beautiful crafted application are the musicians playing the sound of cloud natives.
To succeed, you need orchestration on all levels of your organization and technology stack. This blog post gives you some insights into what orchestration (opinionated) means and how to make you and your team even more agile.
What Is Orchestration?
If you are more of a musician, orchestration is the arrangement or scoring of music for orchestral performance. If you are into politics, orchestration is the planning or coordination of the elements of a situation to produce the desired effect.
From a technology perspective, the orchestration is the process of getting all the (infrastructural) components lined up to deliver your digital service to your customers. The orchestration isn't bound to scheduling a service to your cluster. All moving parts are orchestration.
From a code change to production, everything is orchestration. Orchestration is the heartbeat of your lifecycle of every iteration you make.
You and your team are responsible for directing this orchestration to maximize the velocity of delivering software services.
Let us take a closer look at orchestration using a top-to-bottom approach. The following steps are part of software service orchestration:
- Running and deploying your service in production
- Provisioning your infrastructure
- Building and testing your service
- Coding your service and commit changes
Running Your Service in Production
When you are running your service in production, you need to orchestrate how your software is delivered to your cluster. In a containerized world, this is your image getting pulled to the host, which the orchestration engine will select. This process is called scheduling.
When the service is started, health checks make sure you are in a green state and ready to take the load. A load balancer will switch traffic to the new version of this service. Zero downtime deployments for the win. Of course, you need to orchestrate to keep your service healthy and alive; monitoring and logging are what you need.
Provisioning Your Infrastructure
Before you can even think about running something in the cloud, you need a foundation for all your services. We need to build a cloud infrastructure. This foundation doesn't stop after spinning up some VM instances.
The orchestration consists of spinning up VMs, adding security and firewall rules, installing packages, database management, agents, and overlay networks. When your infrastructure is healthy, you can deploy your services.
Building and Testing Your Service
When you are done coding your service, you check in your code and your CI solution will start pulling the latest code and create an artefact. In a containerized world, this your image, which can be tested against some unit- and integration tests. When the tests are green, your service can be shipped to the next part of your orchestration.
Note: The orchestration is a combination of directing the technology and people who are using it. Your team, tech, and tools are symbiotes, and this process can take a while to find the right settings of your musicians, so to speak.
Coding Your Service and Commit Changes
Every feature requested need some code changes. Those code changes will trigger all the musicians in the chain of orchestration. Every member of your team should be aware of what the mighty orchestration engine will kick in.
Fuelling the orchestration engine starts with smart architecture, code conventions, code reviews, code coverage, and a strategy of how to check-in code. It's a team effort to get this right.
Published at DZone with permission of , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.