DevOps (Tool?Process?Product?)
Vamshi Yemula
Vamshi Yemula
Senior DevOps Engineer | SRE | Kubernetes, Docker ,Terraform ,AWS and CI/CD Specialist | Driving Reliability & Performance
DevOps is not a tool or product. You can’t buy DevOps, as DevOps is not a software, tool, process, company, or person; it’s a methodology used especially by IT professionals. However, there are products, tools, and services that really help enable different DevOps practices that teams can use to make things easier.
In simple terms, It is people with both dev and ops skill sets (one, the other, or a mix) working collaboratively to create products and as well to shorten the systems development life cycle while delivering features, fixes, and updates frequently in close alignment with business objectives.
Let me go through a real-time example
Dev Team :
- Generally, Developers from the Dev team writes new code for products features, security updates and bug fixes. Unfortunately, we need to wait for weeks to get above changes into a production house
- This will increases the "Time to Market" as some competitors in the market will try to deploy the products and features quickly. And also it will pile up old pending code new features new bug fixes.
- When you try to manage by deploying the code occasionally unforeseen errors, issues and problems will be seen
- One more thing we need to have a look is developers will be writing code for the development environment which may or may not be identical to the production environment which in turn results in Bugs/Issues.
Ops Team:
- On the other side of the coin consider the work of the "system administration from the operations team" whose main goal is responsible for the production servers, including monitoring and managing those servers.
- In the major companies, the number of servers will be increasing continuously based on the company needs and business
- Tools which are used to monitor these servers are not effective when we consider much larger volumes.
- This challenge will effects how the new code is deployed into the production environment
- Usually, when a new code gets released it takes a little amount of time to get fit into a production environment this is the reason we will be having a "Deployment schedule" in our calendars and allowed mostly once in a month
- Once new code gets deployed it is the responsibility of the Ops team to monitor diagnose the errors caused by the new changes and it will be hectic work for the ops team
Dev+Ops :
- Let us consider what happens if both the "Dev" and "Ops" teams work together collaboratively and share the responsibilities for the common goal
So DevOps integrates developers and operation teams in order to improve collaboration and productivity by automating Infrastructure automating workflows and continuously monitoring and measuring application performance
- They would be focusing on "Automation Part" ie how to
- Automate Code testing
- Automate Work Flow
- Automate Monitoring
- Automate Everything:)
- Basically in DevOps software code is written in the form of small chunks that could be integrated tested monitored and deployed usually in hours the traditional way of writing large chunks of software over weeks or months and finally deploying into a production environment where they might be seeing "It works on my machine" kind of issues.
- Writing the code in small chunks will improve the increase of frequency of deployments and as well time to deploy new code, it also helps to iterate the process to monitor measure and improve the code and operations every day.
- DevOps implementation will improve the ability to respond to market needs or other things that impact software
- Instead of building and configuration software and infrastructure manually we would be writing configuration management code that describes how things to be built (using Ansible, puppet,chef or Salt stack) as a result it would be easy to scale infrastructure to hundreds.
- Another big thing we do consider in DevOps is to use a source control system (usally GIT ,SVN,CVS) to track both application code and configuration management code
- This will help dev and ops teams whenever they push a new change they can visualize which part of code is impacting application performance.
- The ultimate goal is to provide a production environment to customers which provides them a great experience.
- Tools involved in different phases of DevOps as follows
Planning and Analysis
- Capturing and tracking (JIRA, ServiceNow).
- Documentation or Wiki page (Confluence).
- Collaboration (Slack, HipChat).
Design and Implementation
- SCM (Subversion, Git, Mercurial).
- IDE (Eclipse, IntelliJ, Visual Studio).
Build and Release (CI/CD)
- Repository management (Artifactory, Nexus).
- Build tools (Jenkins, Bamboo).
- Configuration management (Chef, Puppet, Ansible).
- Cloud (AWS, Azure, OpenStack).
- Containers (Docker).
Integration and Testing
- Source code verification (SonarQube).
- Security testing (HP Fortify).
- Functional testing (JUnit, Cucumber, Selenium).
- Performance testing (SOASTA).
Operations
Benefits with DevOps :
- Time to Market increases
- Improved communication and collaboration
- More stable operating environments
- Minimizing failure rates
- Continuous Improvement
- Increased Agility and Quality
- Faster recovery time
- Last but not least improves customer experience and satisfaction :)
Leader with a passion for superior customer experience and service excellence
5 年Spot on
Technical Architect at Tata Consultancy Services
5 年Awesome. simplest but to the point.? :)