DevOps – this term is rapidly spreading through out the community. While this is new and many organizations are still discussing to adopt, people have lots of confusions and many a times contradictory impressions defining it and how it works. When it comes for testing and automation in DevOps, it creates lots of confusion again. In this post we are going to discuss on overview of DevOps, and will try to clarify some of the confusions. Hope you will find this useful.
What is DevOps?
Lets start with understanding DevOps first, different people define it differently. If you are into DevOps or reading through , trying to understand or implement , you might have heard many different versions of its definition.
Lets understand this in a very simple way —
A Developer writes code for many different tasks like – Code for New Applications or products, Bug fixes, security updates etc. When this comes to deploy in the actual environment (Production environment) where users can use it, a developer needs to wait for days or weeks. Reason would the bandwidth for Operations team finishing up there huge pile of work before they take up new. This delay causes delay in products availability in market also on the other hand it becomes difficult for developers to manage the multiple versions of code, one that is pending to push to production and other on which he has to work on next. Moreover when the code gets deployed into Production environment, occasionally unforeseen errors occurs. This happens because, developer writes code for there development environment which is not similar to the production environment. This ultimately increases work for the operations team to manage the environment and making sure systems are up and running. Operations team has to do lots of massaging on every new code that comes to production and continuously diagnose to ensure a stable environment. Any issue that occurs due to code, leads to many different issues in production environment and delay in availability of product in market.
To overcome this major issue in Software Development Life Cycle (SDLC), it is critical that Developer and Operation work together and share responsibilities. Basically its about changing mindset and culture on how Development and Operations work.
So, DevOps is a phrase in SDLC, mean to Change and Improve the work relationship between Developement and Operations Teams thereby improving collaboration and productivity by automating infrastructure , workflows, Continuous testing and Continuously measuring application performance.
How DevOps Works?
DevOps is about changing the mindset, culture, approaches and the tools that we use. It’s required to analyze everything being done manually and decide to continue it manually, eliminate or automate it.
Developers, Testers and Operations works together and identify and rectify the pain points before hand. Establish a better collaboration, benefit into a better product and on time. There will be an identical environment for development and production with same configuration. DevOps teams write configuration management code, which automate infrastructures and they will have the ability to build dozens of servers instantaneously
Success Criteria for any team depends on right set of tool-set. a DevOps oriented team requires below tools to achieve the below
- A development approach to involve and collaborate Development, Testing and Operations teams together. Such as Test Driven Development (TDD)/ Behavior Driven Development (BDD). We will go through these approaches in detail in later posts.
- Continuously build and test code with tools like Jenkins, TeamCity
- Tool for Source Control such as GitHub , Team Foundation Server etc. to track and manage code and Documents
- Configuration Management Tools like Chef , Puppet etc for easy code deployments
- Tools to measure continuous performance of application on servers
Benefits of DevOps
- Continuous Product delivery
- Less complex problems to fix
- Faster resolution of problems
- Faster time to market
- More stable operating environments
- More focus on adding values to the product
Test Automation in DevOps
With all of the above, we understand that Automation is the key for a team which is DevOps oriented. The goal for a DevOps oriented automation team should be to “Automate Everything — Continuous Code Testing easily and quickly build of Infrastructure.”
Test Automation in DevOps includes Continuous Integration and Continuous testing. Tests that are automated should be tested continuously for each build and all the tools should work integrated for a greater outcome. There is a need for faster automation development and faster turnaround time for any maintenance that is required for the scripts. with there are automation tools like Selenium, Cucumber, LeanFT etc are being preferred over other traditional tools. The automation code are tightly integrated with the developer codes and it can be utilized for unit testing to regression testing as and when code is ready for deployment.
In our future posts you will see more about these tools, approaches that are widely being used currently. we are going to deep dive into some of the tools . Stay in touch.
If you have any questions or want to share your thoughts about DevOps, please do so with you comments below.