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:
creation of user stories
product road mapping
sprint and work planning
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.