Is DevOps and Agile the same thing? or are they different? Agile is a philosophy about how to develop and deliver software, while DevOps is a Process that describes how to continuously deploy code through the use of modern tools and automated processes.
In the ever changing world of software testing, companies are always looking ways to reduce cost, quicker delivery and quality products. Companies started adapting new methods and principles to bridge gap between the client , business analysts, developers and testers to eliminate exhaustive documentation, fill communication gaps and waste time and resources. In the Process, Agile Methodology and DevOps became popular. Bringing out the product into the market quicker is the drive behind such Best Practices. With the invent of Mobile Apps , its all the more necessary for companies to cut down production time and adapt new working principles to stay in the competition.
For example , an app like WhatsApp was launched with most basic chat feature or Instant messaging feature at the time when consumers were using Yahoo messenger, gmail-chats and sms was the preferred written msg communications , WhatsApp became the most used and grew to be the most popular app in its category because of the time of its launch. It catered to the market need of Accessibility. It started with the most basic requirement in the market - an app for instant messaging without the hassle of getting in a chat room, or logging into an email account, and easy usability. And as its popularity grew, more features were added and it is the leading instant messaging App today because of its flexibility. Unlike similar apps that are exclusive to Apple, Android, or Windows devices, WhatsApp is what is commonly referred to as 'platform agnostic', meaning the app can be installed on almost any device.
As we understand , the need for quicker , quality Software products , we also come to get a clear picture of the need and demand for Agile and DevOps in the recent times.
Agile Methodology
Agile is a Principle. Agile in its core has communication as the key to resolve issues .Agile methodology overcomes the risk of spending a lot of time if any changes are required.
The four core values of Agile software development as stated by the Agile Manifesto are:
individuals and interactions over processes and tools;
working software over comprehensive documentation;
customer collaboration over contract negotiation; and.
responding to change over following a plan.
The Agile methodology is a way to manage a project by breaking it up into several phases. It involves constant collaboration with stakeholders and continuous improvement at every stage. Once the work begins, teams cycle through a process of planning, executing, and evaluating. It is flexible in a way that ever changing functional requirements are addressed immediately instead of waiting for a build to be complete and then testing.
Agile development is a straightforward, systematic software development methodology. When followed and implemented properly, Agile helps teams deliver high-quality software on time and on budget.
Agile development doesn't always start with, well, development. "Put tests before coding " is the mantra in TDD, BDD and other Agile techniques to minimize waste and focus on the user.
So, in a sense instead of User Acceptance Testing being last, it is the first testing approach. breaking functionalities to smaller units.
It allows teams to work directly with clients instead of with other teams. This provides a clear outcome with a focused goal in an incremental way.
Agile Development Life Cycle
Agile SDLC methodology is based on collaborative decision making between requirements and solutions teams, and a cyclical, iterative progression of producing working software. Work is done in regularly iterated cycles, known as sprints, that usually last two to four weeks.
Important terminologies in Agile SDLC you should be aware of
EPIC - An epic is a big idea or feature that can be broken down into smaller user stories.
User story - A user story is the smallest unit of work in an agile framework. It’s a brief description of a specific product feature or a function that customers would find helpful.
Backlogs - Requirements are referred to as Backlogs. It’s a list of new product features, updates, bug fixes, etc. that are required by the user. (Also referred as Product backlog, sprint backlog)
Iteration or cycle- Each iteration involves a team working through a full software development life cycle including planning, requirements analysis, design, coding, and testing before a working product is demonstrated to the client.
Agile mindset - is a set of attitudes that an Agile or Scrum team should have towards their work. These attitudes are inspired by Agile values and principles, such as: Respect, Collaboration, Continuous improvement,
Focus on delivering value.
Impediment - It’s an obstacle that reduces an Agile team’s productivity or prevents them from completing an Agile project altogether.
Bottleneck - Bottlenecks are issues that can completely slow down the development process.
Sprint - It’s another term for an iteration. However, sprint is a Scrum term and is usually a phrase used by Scrum teams. Another difference between the two is that sprints maintain a uniform length (2-4 weeks) during the Agile development process
Story points - It’s a measure of effort that a team would need to complete project tasks (user story). its usually calculated on the basis of time taken to complete an user story
Release plan -A release plan showcases all the features to be included in the next release, along with an estimated release date.
The Agile software development life cycle is the structured series of stages that a product goes through as it moves from beginning to end. It contains six phases: concept, inception, iteration, release, maintenance, and retirement.
Agile Teams
Agile Teams are Cross-Functional. Agile teams span functions and are composed of 5-11 members from across the organization who are dedicated to their team full-time.
Stakeholder - It’s a term that refers to anyone outside of the Agile team who is connected to the project. It could be an investor, account manager, sales team, or the client.
Product manager-A product manager assists the Agile team with the development process from start to finish.
Product owner -They are the key members of an Agile or Scrum team. They decide the vision and features of the final software. Product Owners manage the product backlog and ensure the company gains maximum value from the product.
Developers Developers will build your product, and they are responsible for programming, testing, and debugging the product.
Scrum Master -A Scrum Master leads the Agile development team and supports the Product Owner by relaying updates to relevant employees. Role for team leads.
Tester -Work with product owners to define acceptance criteria and check for mistakes before sending the product to the client.
Agile Management Tools
There are 5 main Agile methodologies: Scrum, Kanban, Extreme Programming (XP), Lean Development e Crystal.
Accordingly, there are number of tools available for effective Agile Project Management. The market today offers a variety of free, open source as well as licensed tools for Agile Project Management.monday.com. Wrike. ClickUp, JIRA, TRELLO, ActiveCollab, Agilean ,VersionOne etc
DEVOPS
DevOps - short for Development & Operations, solely focuses on collaboration between these two integral teams in the development process.
DevOps is a software development method that seamlessly aligns development and IT operations in an organization to improve productivity and facilitate better collaboration between teams. DevOps is the integration of people, processes, practices, tools, and technology that enables code deployment in a robust and automated manner.
Continuous Integration and Continuous Delivery or deployment (CI/CD) , Automation , shift -Left ,and shift -Right Philosophy is the primary principle of working in DevOps
Shift-left is the practice of moving testing, quality, and performance evaluation early in the development process, often before any code is written. Shift Left is a practice intended to find and prevent defects early in the software delivery process. The idea is to improve quality by moving tasks to the left as early in the lifecycle as possible.
Shift right
Shift-right is the practice of performing testing, quality, and performance evaluation in production under real-world conditions. Shift-right methods ensure that applications running in production can withstand real user load while ensuring the same high levels of quality.
In DevOps, continuous delivery is also called 'Automated deployment pipeline'. This will include few manual testing as well like 'User acceptance testing' which generally will be run by the end user and also few manual approval gates, as the code comes close to the production environment.
By adopting DevOps, organizations can improve their products, serve the customers well with quick feedback and fixes, get a competitive edge in the market, and achieve their business objectives faster.
The key aspects or principle behind DevOps is
Infrastructure as code
Continuous deployment
Automation
Monitoring
Security
DevOps involves 7 stages of software development lifecycle.
1) Continuous Development:
At this stage , The DevOps team focus is on the planning and coding phases of the DevOps lifecycle. Smaller units are tested and ready. Version-control mechanisms might be involved.
2) Continuous Integration:
This software engineering team members develop software by frequently integrating its components. It helps to ensure that changes in the source code do not break the build or cause other problems.
3) Continuous Testing:
This DevOps lifecycle stage incorporates automated, prescheduled, continued code tests as application code is written or updated. Such tests can be written manually or in conjunction with continuous integration tools.
4) Continuous Deployment:
The deployment process takes place continuously in this DevOps lifecycle phase. It is performed so that any changes made in the code should not affect the functioning of a high traffic website.
5) Continuous Monitoring:
During this phase, developers collect data, monitor each function, and spot errors like low memory or server connection are broken. For example, when users log in, they should access their account, and a failure to do so means there’s a problem with your application.
6) Continuous Feedback:
Continuous feedback is like a progress report. In this DevOps stage, the software automatically sends out information about performance and issues experienced by the end-user. It’s also an opportunity for customers to share their experiences and provide feedback.
7) Continuous Operations:
It is the last, shortest, and most straightforward phase of DevOps. It also involves automating the application’s release and all these updates that help you keep cycles short and give developers and provide more time to focus on developing.
DevOps teams
As the DevOps team is expected to have end-to-end responsibility of the service, some of the expected roles within the team include:
The Product Owner manages the interaction with the customer to understand the requirements and work with the rest of the team to prioritize their delivery and incorporate feedback.
The Team Lead provides oversight and guides the team based on the chosen approach (e.g. scrum, Kanban, lean etc.). Also facilitates coordination with other squads.
The Solution Architect figures out how the requirements will be designed in line with the organization’s environment and existing systems.
Developers translate the design into code, and are involved in supporting the code through testing and deployment.
Quality Assurance (QA) validates the product to ensure it meet both customer and organizational requirements throughout the development and deployment phases.
The Platform Engineer supports the platform teams to ensure that the environment supports the products effectively, and uses the tools provided to automate integration and deployment.
DevOps works in the cross-functional mode, involving various tools of various kinds and purposes, instead of just a single tool. These tools are also known as DevOps toolchains. Various tools for planning, collaboration, Build, CI/CD, Version Contol, Configuration management, Testing and deployment used are listed below
Automation and build tools like Jenkins, Puppet, Docker, Apache Maven
DevOps Pipeline (CI/CD) Tools like Buddy, Circle CI, Travis CI, Bamboo
Version Control Tools Like Git ,and GitHub
DevOps Configuration Management Tools like chef, Kubernetes, Vagrant
DevOps Testing Tools like Selenium, Tricentis Tosca, TestSigma, SOAP UI
DevOps Monitoring Tools like Nagios, Prometheus, PagerDuty
Continuous feedback like Mouseflow, JIRA Service Desk, SurveyMonkey, SurveyGizmo, etc.
Collaboration using Slack, Basecamp, Asana, etc.
Planning Atlassian Jira Align, Planview, Targetprocess, Trello, etc.
Cloud DevOps tools Kamaterra, OpenStack, AWS, Google Cloud Platform, Azure, IBM Cloud, etc.
SYNOPSIS
As we come to understand the working principles in Agile and Devops , we notice several similarities and some key differences.
They both aim to get software out quickly and satisfactorily. These approaches aim to speed up development while increasing communication and efficiency.
Lets look at the following table
Key differences between Agile and DevOps
Feature/ Parameter | AGILE | DEVOPS |
Principle | Iterative approach. Focus on collaboration, customer feedback and small rapid releases. | DevOps is a practice . Brings development and operations teams together |
Emphasis | Agile process focuses on constant changes. | DevOps focuses on constant testing and delivery |
Team size | Agile requires a small team. | DevOps requires relatively a large team |
Leverage | Agile leverage shift-left principle. | DevOps leverages both shifts left and right principle |
Target | The target area of Agile is Software development | Target area of DevOps is to give end-to-end business solutions and fast delivery. |
Focus | Agile focuses on functional and non-function readiness. | DevOps focuses more on operational and business readiness |
Duration | sprints of 2 to 4 weeks | DevOps strives for deadlines and benchmarks with major releases |
Goal | It addresses the gap between customer need and development & testing teams. | It addresses the gap between development + testing and Ops. |
Summarizing the same, Agile and DevOps work better in tandem than as separate units. Agile is all about development and DevOps is all about deployment.
Hope, this article helped you to get a better picture about Agile and DevOps And hope you all relate to these working principles in the projects we work on at NumPy Ninja
コメント