Over the past few years, the term DevOps has been a hot topic in organizations that do any type of software development. While the concepts behind DevOps are not new to the industry, i.e. delivering better working software quicker and more efficiently, the tools to assist this practice continue to evolve. Additionally, the importance of a successful DevOps approach is becoming a top priority within IT organizations. The incorporation of DevOps principles leads to software that is more cost effective and is of higher quality. A key success driver is being missed if DevOps methodologies and strategies are not being discussed when business objectives are being defined for an application.
There are many definitions of what DevOps entails, but the one common theme across all include some description containing “continuously delivering working software in a more efficient and repeatable manner”. A good DevOps vision is paramount when leveraging an Agile software development methodology. Doing a quick internet search on DevOps will give you a glut of articles, terms, acronyms and definitions. Key topics to initially focus on include Continuous Integration (CI), Continuous Delivery / Deployment (CD), and tools utilized for automating configuration and provisioning of server environments.
The skillset needed of a DevOps engineer should cover programming and scripting to virtual machine build out and firewall/security knowledge. So, who is your perfect DevOps engineer? Do you start with a programmer who understands the full life cycle of software development? Or do you start with an infrastructure technologist who is good at building out servers and firewalls and understands the benefits of scripted and repeatable processes. The answer is, you need both. It is a challenge finding one person that has the needed skillset to cover the full DevOps knowledge space.
In an addition to having the engineers who can navigate the disparate DevOps tools and processes, you are going to need someone that can provide project oversight and direction. Properly selecting the tools becomes a balancing act of technology, feature, licensing and cost analysis. Getting the appropriate visibility of the extra cycles needed to orchestrate these DevOps initiatives means upfront time and costs. The return on investment comes later as application changes seamlessly test and deploy without operator intervention.
DevOps tools cover a wide range of functional areas from infrastructure as code (IaC) and source code version control to continuous integration and automated testing. Numerous software tools can facilitate each of these functional areas ranging in price from free to open source to enterprise licensing. The Periodic Table of DevOps Tools provides a great guide to seeing what tools participate in each functional space. The one thing to remember is these tools won’t give you a DevOps solution. A solid plan is still needed to decide where these tools will help facilitate the solution.
Agile and DevOps
Keys principles of Agile software development are centered around being able to deliver early and react quickly based on results. A functioning DevOps environment supports these principles. Having one sprint roll into the next sprint to continue feature development keeps the software continually improving. If there is no automated way to continuously deploy and test code, the pace of sprints will be slowed. Developer involvement will be necessary to assist in code deployments and integration testing. This takes precious time away from additional feature planning and development.
There are two areas that you can begin with to start formulating your DevOps plan. The first area is to read and educate yourself on the topic. The amount of information and videos available to kick start your education are endless.
The second is to do an internal assessment of your current IT infrastructure with regards to your DevOps capabilities. Understanding what is currently in place will allow you to define your DevOps roadmap. While the ultimate goal is a full DevOps environment, employing incremental advancements can pay huge dividends on your team’s code quality and ability to deploy software more efficiently.
Anexinet is a leading professional consulting and services company, providing a broad range of services and solutions around digital disruption, analytics (and big data), and hybrid and private cloud strategies. Anexinet brings insight into how technology will impact how business decisions will be made and how our clients interact with their customers in the future.
Thomas Jadico – Director