This post is from the XebiaLabs blog and has not been updated since the original publish date.
I Have XL Deploy, I Get It, What Now?
A few years ago, after months of planning and preparation I, with the help of some specialists had my delivery team implement a production go-live. The implementation weekend was pretty scary, it was our first one and despite all the pre go-live meetings it felt very chaotic.That said, the specialists that were brought in to run the go-live were amazing, highly qualified and very experienced. They pretty much had everything covered. In fact, I as product owner/sponsor added zero value on the night. Once the post implementation handover and warranty period had completed the specialists withdrew and presumably moved on to other projects leaving myself and my delivery team to manage the production system. His name is Zak. That first night alone at home was one of the most terrifying. People with kids are pretty much thrust in at the deep end and have to learn by doing... Ok, so this is a pretty tenuous (possibly clichéd) lead in to what I want to talk about, which is what do you do when you've bought the software, turned it into a production service and the vendors with their expert consultants have withdrawn and moved on to other things? You want to apply the "new shiny" to your own problems but how do you start? Well, with our software you use it of course. One of the best ways of getting the most value from our tooling is to use it at every opportunity for those tasks you identified that were giving you cause to automate - in the case of XL Deploy and XL Release. A trick to achieving larger goals with tooling (and pretty much most IT activities to be fair) is to break them down into smaller tasks. Many improvement processes hit barriers because of our often inherent need to nail down every single detail in a single hit. The "I must determine if I can boil the ocean before starting a project" mindset is sometimes irresistible and inhibits starting-the-doing bit.
The key to getting started for me is to ask some questions:
- What do I have now?
- Is a next step an improvement?
- Does that next step inherrently limit me from making further improvements?
Real Life Example ( for me! )My role requires me to perform demonstrations of software, consult with prospective clients and run proof of concepts ( It's a very cautious world we live in! ). I am also relatively new to the company but not the role. I now have to understand new software and explore it's sweet spot and use it to solve a variety of problems our customers might face, without the “luxury" of all of the infrastructure our customers have to manage. If I want to demo continuous delivery from code creation to delivery into a "production” ( yes sometimes I have to be that explicit to prove it can be done ) I often want to do more than the stereotypical magic smoke and mirrors routine. Starting this from scratch seems a daunting task and within minutes all of the aspects of what I want to show start to spider out of control (very similar to the real life solution we are trying to work with). So I start to break this down, I think about the physical aspects of what I want to deploy to. There’s probably an optimal formula for doing this and perhaps that will emerge, in the mean time I figure that I would like to work with 3 unique environments (DEV, UAT, PROD) since this is typical of the landscapes we work with. I want a 3 tier web-application running on these servers, oh and it would be nice to perhaps have a middleware server to represent some more variety of our products. I would also like this to be re-useable and I want to automate as much of it as I can. Breaking down into steps from left to right and attacking each of the boxes in turn... In my case this diagram wasn't planned in advance. I was actually experimenting and deliberately drilling down to too much detail for a demo and it emerged, from a single virtual image target and my artificial requirements to create a desirable infrastructure. However once I saw some patterns emerge I just imagined new sets of steps and kept working through the columns (in iterative loops if need be) to get to end goals.
What did I get out of it?
- I created database schemas - learned some MySQL
- I created LDAP infrastructures - learned some Open LDAP, discovered LDIF files
- Automated provisioning of infrastructure - learned some Puppet
- I explored more functionality of XL Deploy and XL Release
Next StepsThere’s always more to do, and that’s true whether you’re building a small demo or managing a broader IT infrastructure. I don’t want to stop at one demo, I want to make a platform so that others in my position can benefit from the effort.
- Automate the provision of new versions XL Deploy and XL Release (using XL Deploy of course)
- Incorporate our latest products into the platform
- Add more target images for other middleware
- Work with partners to simplify/improve those aspects of the platform
- Look at providing a Demo As A Service (DAAS)