Are you ready to automate everything? Does you boss want some of that cloud? Well everywhere I turn people want to get into the cloud. They all want a vendor product to provide the cloud. Every vendor show I to go to has hundreds of products to solve that problem. In my experience it is not a product problem that limits our journey to the cloud. In these series of articles I will explore some of my thoughts on your journey to the cloud.
Part 1 – Where am I and what do I want?
My thoughts for this part are best explained by an exchange from Alice in Wonderland:
“Would you tell me, please, which way I ought to go from here?”
“That depends a good deal on where you want to get to,” said the Cat.
“I don’t much care where–” said Alice.
“Then it doesn’t matter which way you go,” said the Cat.
“–so long as I get SOMEWHERE,” Alice added as an explanation.
“Oh, you’re sure to do that,” said the Cat, “if you only walk long enough.”
The cat completely covers my feelings if you don’t know what you want it does not matter which way you go. Most engineers are stuck with the problem of lack of definition. We want to get into cloud provisioning. We want to get to 20 minute deployments of servers. We need to be more like Amazon.
Let examine these statements a little:
We want to get into cloud provisioning.
- Does this mean you want to use public cloud for servers?
- Does this mean you want a web portal for provisioning servers?
- What does this mean? It’s like me telling you I want to enforce family values… We all want family values but every family has a different definition
We want to get to 20 minute deployments of servers.
- What type of server do you want deployed in 20 minutes? OS, Application, three-tier?
- What does deployment mean? Powered on? Able to talk on the network? Internet facing?
We need to be more like Amazon.
- You want to deploy unsecured operating systems without backup quickly?
- You want to have pay as you go for our customers?
I want to be fair and emphasize that all these statements are valid but without definition and that every one of these offerings have positive sizes as well. What they lack is business definition. In almost every cloud situation the business wants IT to be more agile. They want processes to go more quickly. Universally they cannot understand why provisioning a server takes so long and is so complex. Honestly nether can I. I have made a career out of complex servers and it has to stop. So before you start down some unknown paths with the cat ask some critical business questions (no engineer likes them but you need to ask them).
For example:
- What pain point are we trying to solve with the cloud
- What specific expectations do you have for the cloud
- What is the timeline for the cloud
If during any of this conversation products come out know it’s normal. Business people explain technology in terms of products. (For example I want it to be like an ipad with dropbox) These statements are not locking you into a product they are helping you define requirements. Ask questions about the product to help define requirements. It is critical that you translate their products into requirements and constraints. Once you have translated their needs into requirements statements get them to sign off on it.
Where am I?
In almost all cloud deployments it’s really about adding automation to all aspects of the service. This allows you to be more agile to change. Before you can begin your transformation you need to define your starting point.
Is your current environment like the above picture? Do you have many hands touching the configuration of your servers and applications. Have you provided some basic automation like server cloning or configuration management? This approach is common and really a growth of the virtualization era. Let me give an example of this process:
- Server request is provided to server team
- Server team clones an operating system
- Firewall team does firewall rules
- Server team deploys application
- Developers deploy code
- Security team reviews server and approves
- Server team release to production
This process seems simple and should be easy. This is where the people problems start. The development team has a project. The server,firewall and security team have tasks. They do their tasks without knowledge of the development teams project. Which means that bolts will not be where they are expected and in the end something will require rework. There is tons of room for human error and mistakes. Each project built this way will be unique because people are executing the steps. It gets worse as you scale up. Assume that the normal firewall worker is out sick, now we have a stand-in who cannot do the job as well. More errors and problems are introduced. So to review:
- Each team treats a project as a task
- Each team executes the tasks with different priorities causing delays
- There is lots of room for human error and mistakes hurting the timeline
- It does not scale it’s mostly human capital
The fun part is this process is pretty good. At least they have a defined process.
Do you have a process and is it followed?
It’s simple individuals have processes they natively follow. We naturally assume that other people think and act just like us so naturally they will follow the same process right? Wrong. Everyone is different and does it a little differently. So many IT shops have poorly defined processes and even when they do they are rarely followed. In order to make it into the cloud you have to define your manual processes. Get them on paper with the following details:
- What information is required to work this process
- What information is expected to return from this process
- Who can work this process
- What choices need to be made as part of this process
- What happens if a process fails in an unexpected way
Does this sound like software development to anyone else? Well it’s is. Welcome to the rest of your career as a software developer or what I like to call a process engineer. Once you have defined the process management needs to enforce the manual process to find out where it breaks… this is the hard part. You can write down a process… you can send people to training on the process but you cannot make them drink. All manual processes will be slower and worse at first. Change is hard (That’s part two). You have to practice the process to find the holes. Here is a logical outline to define your process:
- Have a subject matter expert define the process on paper (electronic or otherwise)
- Have the SME train others on the process
- Have management encourage others to do the process
- Have people other than SME do the process and report back problems
- Improve the process until it works in all situations encountered
Does it seem simple? Yep it is.. Does it seem common sense… right again. I should change the names of everything to something like points or teeshirt sizes so I can sell it but that not me. It is simple to understand hard to implement.