“In theory, theory and practice are the same. In practice, they are not.”
In my earlier blogs (A practical approach to DevOps adoption, Cultural transformation is crucial for DevOps success, and Automation and continuous delivery are the bedrock of DevOps), I presented an overview of DevOps, and followed up with a deep dive into the cultural aspects as well as the best practices needed to facilitate continuous delivery.
Even though DevOps as a conceptual framework is of relatively recent origin, some key elements such as agile and continuous development are very mature fields, with a substantial body of best practices. Over the past decade, I and my colleagues at coMakeIT, have combined our extensive insights and expertise in product engineering, and agile development processes into a body of knowledge and associated best practices for easy adoption by ISVs. In this blog, I will share some practitioner’s insight of DevOps,and list the tools that we have successfully used to facilitate workflow, and drive automation in different technology/development environments.
Requirements and Product Management
Irrespective of the tech stack and across multiple development environments, we have utilized a combination of the above listed tools to facilitate:
- requirements management
- creation of user stories
- product road mapping
- sprint and work planning
- project tracking
- content management
Development, and Continuous Integration (CI)
While the choice of tools and IDE will be influenced by the tech stack, we have used a combination of the following tools to drive core development and CI activities such as:Source code control, code review, binaries management, build management, and code integration.
As I presented earlier, ability to standardize and automate various aspects of testing is extremely critical for a successful DevOps transformation. While there are numerous platforms available to facilitate automation of core testing activities ranging from unit testing, to performance and acceptance testing, we have successfully used the following tools for different tech stacks:
Automation of delivery and deployment to a production environment, often the last step in the software value chain is largely driven by the customer’s business environment. We have successfully used the following platforms to automate deployment, especially for Cloud enabled SaaS solutions:
The automation tools and platforms that I presented above are by no means exhaustive, and are just an illustration of the possible combinations that can be used for different technology stacks, to achieve the most optimal automation for your business environment.