March 31, 2014 | Written by: Rakesh Ranjan
Share this post:
Clients do not procure and purchase software products today the way they did in the past. Clients focus more on buying capabilities and solutions that help them move their business forward. In the cloud operating model, this becomes even more relevant, because installation, configuration and deployment are hidden from the users. Clients expect simplicity and ease of use in the solution. DevOps helps vendors and clients roll out products and solutions very quickly in continuous delivery and deployment mode.
What is DevOps anyway?
DevOps is an emerging software engineering practice that significantly reduces the amount of time it takes a product team to take software code to deployment and release. This practice embraces the unified agile process and spans through planning and requirements management to development, test and quality assurance (QA) on to release and deployment. DevOps promises to tear down the virtual wall that exists between these phases. While the idea behind DevOps is not tied to cloud deployment itself, experts and practitioners believe that the true DevOps dream can best be realized in a cloud operating model. Join the DevOps community to keep yourself educated.
How does cloud help?
An enterprise-grade software solution lifecycle primarily has changes associated with the following three components:
2. Underlying middleware
In an on-premises software delivery, complexity associated with these three components is not hidden from the clients. Clients have to procure hardware, install your software stack and in many cases, have to configure and tune to make it work. Vendors have to support multiple platforms and architecture that limits their capability to deliver software in continuous mode. Cloud makes it easy; however you still need to devise your DevOps strategy to manage changes in the aforementioned components. For example, you need to do careful analysis on whether a change will be transparent to your user or visible to them. Based on the analysis, a proper pipeline of changes should be designed. The good news is that you have tools that can do it for you. A good DevOps strategy requires designing a cloud operating model that works best for your organization. A reference cloud operating model is shown in the figure below:
The typical workflow as shown in the picture above starts as follows:
1. The product management team brings requirements based on the feedback from existing product usage, user sessions, bugs reported from any earlier releases of the product and other market driven requirements.
2. These requirements get mapped to Epic and stories are created in Rational Team concert or any other product lifecycle management tool. The development, testing and design teams look at the stories, brainstorm and create tasks to deliver the stories. If a story can’t be delivered in a sprint then it needs to be broken down into one that can be delivered.
3. A unified agile development process is followed across the team.
4. A change process is fully automated using continuous engineering (CI) and continuous testing (CT) processes.
5. Automated monitoring of cloud instances for resources and usage, as well as dashboard reporting, helps manage the operations effectively.
6. The design team comes up with a design proposal that gets discussed within the core team. If the new design is for major capability then you do design playback with your stakeholders. This eliminates any miscommunication and keeps everyone in the team up-to-date with the product roadmap.
7. The product gets deployed as part of an automated process on different target cloud platforms which allows you to run alpha, beta and other trial programs and gather important early feedback from your customers.
What tools do I use?
In order to achieve a DevOps dream, you need a set of cloud-ready tools in addition to the disciplined agile development approach. There are plenty of tools available to successfully implement DevOps but they require a different set of skills and mindset. IBM announced a rich set of cloud-based tools at the 2014 IBM Pulse conference which can help your organization start quickly and scale as you learn and advance. Here are some suggestions:
1. IBM JazzHub for software development in the cloud
1. Jenkins for continuous integration
2. Rational Test Workbench and Rational Test Virtualization for continuous testing
3. IBM UrbanCode Deploy for automated application deployment solution
1. Perl, Python, Ruby and SQL can be used for instrumenting the process.
DevOps brings tremendous benefits to your organization. You will be able to develop, deliver and deploy your code quickly, and most importantly get your code out to customers in a continuous delivery mode which helps you continuously improve your code. Do not try to be perfect. Start in small incremental steps, fail forward, learn and improve. Join the Codename: Bluemix developers community and see how thousands of developers are using IBM JazzHub for implementing a successful DevOps approach. Let me know what you think! Comment below or follow me on Twitter @ranjans.