DevOps Agility at 90mph
Six months ago, my family and I were packing up the truck for the long drive from Texas to Ottawa, Canada. The day that we left, I received a call from a potential client frantically asking for some help. The account rep told me that they needed some seriously quick help for a potential customer and this was super time sensitive. Those who know me well know that I am not one for a spur-of-the-moment project but the panic in his voice told me that I should listen closely. He had received my name from an old colleague at NetApp and heard that I might be able to help on an automation project. Much to the disapproval of my wife, I agreed to join the call with the account team. So we packed my two-year old son and the week’s worth of luggage and gifts into the truck and got on the road.
Roughly two hours into our journey, I joined the call with the account team to figure out what was happening. The story started to unfold and I was definitely intrigued. A very large deal with a new client was on the line and there was one major snag. The solution included a new SolidFire environment for Microsoft SQL servers and the client was extremely happy with the proof of concept. The only hitch was that the account team promised a script that would clone out the databases. “Great, this sounds interesting” I thought, “but why are they calling me?”
The problem was that they didn’t have anyone available to actually do the work. Well, the problem was actually worse than that. They needed the work done by Monday and by this point it was mid-afternoon on a Thursday. I put them on mute and told my wife, “Yeah. This will be an interesting call. Give me a few more minutes to fill you in on what is about to happen.” I returned to the call and began to explain, “This is definitely a cool project and I would love to help you guys but I am literally in our SUV driving to Canada and I will be gone for the next 10 days.” You could hear a pin drop on the call and I filled in the nervous silence. “I can definitely help you guys and totally understand the situation. I appreciate you reaching out and obviously I want to make this work. I am just not sure that I can do much of anything before Monday.”
I guess my last comment was the life line they needed. They asked if I could put together a project plan and level of effort by the scheduled call on Monday. After a long pause and calculating what my agreement would mean, I told them to give me a minute while I put them on mute. My wife turned her head to me and said, “What happened?” I explained the situation and the request. “I can at least build out a project plan and check the configuration details. The only concern that I have is that I have never even seen a SolidFire array. How am I going to scope this?” My awesome techie wife said, “Well, go for it and at least get the details to figure out what it will take.” I returned to the call and agreed to check everything that they had and put together a plan. I agreed to have everything to them by the next day, Friday.
Within 30 minutes, I received a barrage of emails covering the history of the situation and the details gathered. On the surface it looked straightforward.
- The client wants a script to create clones of production SolidFire volumes and mount those clones to the development servers. Well, this is definitely nothing new from a process perspective and I have done this with NetApp ONTAP many times.
- The client wants it built all in PowerShell so that it would be easy for them to manage. Yup. I can do that part.
- The client wants the process to integrate with SQL server to freeze the database. Ok, I haven’t done this in a long time but it is doable.
- Simplicity and ease of use were required as the DBA team will own the process. Sure, this should definitely be the goal and totally make sense but any time you move the automation to the end-user, you need to add a lot validation tests into the process. This is where things start getting very complicated.
I opened my laptop and fired up the old mobile hotspot. I had to do some research on some of this but I put together an email detailing the proposal and calculating about two week’s worth of work. I will admit that I wasn’t really sure and was very worried that I had no idea what I was getting into with the SolidFire part of this. I asked that they get me a lab to test against so that I could build the code.
By Friday morning, I had access to the lab and all the scoping ready. We were still 12hrs away from Ottawa so I had some time on my hands. It was at this point that I started looking at the options and how I could build the solution. Since my wife prefers to drive or rather for me not to drive, I powered up the laptop and logged into the lab. I wrote code like a mad man. I bounced around in the backseat of the SUV while we barreled down the highway. Within a few hours, I had built out the servers and had SQL running. I had delayed long enough and it was time to learn about SolidFire. I opened the web interface and started working on building some volumes. I will tell you that it was just so intuitive. After a few minutes using the Web Interface, I had new Luns presented to my SQL server and databases built. Just ‘Wow’ is all I could say.
I thought, “Well, I have a lab now and still another 8hrs of driving so let’s take this thing for a spin.” I had installed the SolidFire VSS provider and read over the documentation. It seemed almost too easy. I just needed to call VSS and it would create the backup for me? Sure enough, I fired up Diskshadow and created a shadow set. To my surprise, it worked. I had a SolidFire backup of my entire SQL environment on two different Volumes. I hollered to my wife, “You will never believe how easy this system is to automate. I just wrote the first part of the prototype.” The ride was long so I figured I would continue. For the next four hours, I was writing code. Between changing movies for my son and the multitude of stops that one must make when traveling with a toddler, I was in a groove. Code was flowing out of my fingers as new ideas popped into my head.
By the time we arrived in Ottawa, I had an almost completed prototype. After we checked into our hotel, I just kept going. I was now in Hackathon mode and there was no stopping me. For the next 40hrs straight, I tweaked, modified, tested, and wrote code. It was insane and by the end, my eyes and fingers were sore. I finished everything that I needed to complete by 12am on Monday morning. I decided to get some sleep before my 8am meeting with the account team.
The next morning, I jumped on the call with the account team and said, “I have good news and better news. The good news is that I finished writing the scope and level of effort. The better news is that I am pretty much done and the code is ready for demo and testing.” The stunned silence as I demonstrated the code to the account team was almost worth every bit of that Hackathon. When we showed the client the solution that I had built which included many features that they had not considered or even knew that they needed, they signed the deal right there on the call. The account manager called me after the meeting to express his gratitude. I responded, “Yeah, no worries. Just don’t get too excited. You haven’t seen my invoice yet.”