Most of you know that I am a Principal Consultant/Architect for a VAR in Texas. If you didn’t know that then now you do…any-who…I am often receiving emails from customers with various questions regarding portions of their infrastructure or questions around futures. I am sure that most of you have found that yourself or your management chain wants to dabble in automation within your infrastructure. This could be anything from simple automation of a menial task to full blown end-to-end provisioning. Can we all agree that automation is something that we want to see somewhere in our environments? Of course we can! :)
My rant, well, not really a rant but more of an educational diarrhea of the mouth, begins here…
People always tell me that they want to automate or orchestrate their environment. They also follow that statement with the same question:
What cloud automation tool or platform should I be using in my environment to automate?
I am not one who typically beats around the bush or sugar coats anything. (Those of you who know me know this!) For some reason that statement and question combination always makes me cringe or shake my head. I want to take this time to try to clear the air with everyone who has said/asked this. The first thing you need to understand is the difference between automation and orchestration. Allow me to explain…
Automation, by definition, is the technique, method, or system of operating or controlling a process by highly automatic means, as by electronic devices, reducing human intervention to a minimum. (Source: Dictionary.com) We can modify a portion of this when looking at this from our industry by replacing “electronic devices” with “scripting/coding”. Fair enough? Ok, good. To continue, we would typically “automate” individual tasks within a process workflow. Who likes symphonies? I do…so think of the automated tasks as individual sections in an orchestra. Each one has a specific set of notes to play at a specific time, which can be looked at as a task.
Orchestration, by definition, is to arrange or manipulate, especially by means of clever or thorough planning or maneuvering. (Source: Dictionary.com) This can be thought of in the manner of a conductor of a symphony. The conductor has all the music in front of him, which is used to create the final masterpiece. He “orchestrates” each section within the symphony, giving them their timing, letting them know when to play and how to keep the correct tempo. Orchestration in our environments is much like this as it is used to manipulate automated tasks to reach an expected consistent end result.
Now you might ask, what the hell are you talking about, James? This allows me to lead into my typical discussion with people about this topic. Here we go…
One needs to fully understand what they are trying to achieve initially and what they are wanting to achieve as their end goal. Ask yourself some questions?
- Do you have a good documented process of what you want to automate?
- What do you want to automate or orchestrate?
- What steps are required to reach point B from point A?
- Do I really need to automate that task?
- Are these tasks part of a bigger picture?
- Do I really need to orchestrate that process?
- Do you often find mistakes and non-standard methods of doing a task that is commonplace in your organization?
There are so many more questions that can be asked. Once you have asked yourself those questions then you are ready to move on to the next portion of your journey…the tools to be used. Often you will find that the tools to be used will be dictated by a couple of things that are right in front of you. Things like staff competencies, budget, methods of communicating with various applications within your infrastructure and so on. These are all things that can dictate a tool to be used to accomplish your automation/orchestration goals.
Be careful to choose your tools as you need to make sure that they are ones that can be utilized as the technology changes. One might ask, “Is there a single tool to rule them all?” I would be the first to say that there is not, some might say different but to each their own. You will often find a few different tools that are being used in conjunction with each other to achieve the big picture. Now do you need multiple tools? Of course, it is all dependent on what you are trying to achieve. Simple automation can be done with simple scripting tools (ie. PowerShell, Python, Ruby, Bash, etc.). More complex end-to-end orchestration will require a little more sprockets to make the world go ‘round. This is when you would start to look at various Cloud Management Platforms (CMP), Continuous Integration and other tools to facilitate your needs. There are quite a few out there and no one is better than the other for all. The best one is the one that suits your business goals and needs both now and possibly in the future.
I hope that this helps out a little bit with the thought process and helps you achieve a roadmap for your automation/orchestration goals. Feel free to comment below and we can definitely discuss further!