DevOps DevOps course makes you familiar in the various aspects of the principles of continuous development and deployment, software development operations, continuous integration, automation of configuration management and learn the various tools like Git, Docker, Jenkins, Nagios, Puppet , Ansible and Kubernetes.
DevOps DevOps has helped organizations achieve quality and speed of application delivery. It is a practice or methodology of making the "Developers" and "Operations" people work together It represents a change in the IT culture where the complete focus is on faster deliveries to the market.
DevOps Pre-Requisites: 1. A course on “Software Engineering”. 2. A course on “Software Project Management”
DevOps Course Objectives: 1 . To describe the agile relationship between development and IT operations. 2. To know the skill sets and high-functioning teams involved in DevOps and related methods to reach a continuous delivery capability. 3. To explore project management tools. 4. To understand system integration. 5. To impart testing tools, automation, and deployment of the system.
DevOps Course Outcomes: 1. Explore various components of Devops environment. 2. Identify Software development models and architectures of DevOps. 3. Apply different project management models. 4. Investigate different DevOps Software development models, integration, Collaborate and adopt Devops in real-time projects. 5. Assess various Devops practices, testing and code deployment tools.
DevOps What we study Basics of DevOps, Agile Development Models ,DevOps Process and Continuous delivery ,Project Management Methodologies Software development models ,DevOps influence on architecture Project Management, Source code management Integrating the system: Build systems, Build servers and infrastructure as code Testing Tools and automation: Various types of testing, Deployment of the system- Deployment systems
Introduction to DevOps
What is DevOps? The word "DevOps" is a combination of the words "development " and " operation ". It is a practice where collaboration between different disciplines of software development is encouraged.
What is DevOps? It is defined as a software engineering methodology which aims to integrate the work of development teams and operations teams by facilitating a culture of collaboration and shared responsibility.
What is DevOps? DevOps can be best explained as people working together to conceive, build and deliver secure software at top speed . DevOps practices enable software development (dev) and operations (ops) teams to accelerate delivery through automation, collaboration, fast feedback, and iterative improvement
What is DevOps? It aims to shorten the software development life cycle and provide continuous delivery with high software quality. DevOps is the combination of cultural philosophies, practices, and tools t hat increases an organization's ability to deliver applications and services at high velocity
Why DevOps? The operation and development team worked in complete isolation. Without the use of DevOps, the team members are spending a large amount of time on designing, testing, and deploying instead of building the project. Manual code deployment leads to human errors in production. Coding and operation teams have their separate timelines and are not in synch, causing further delays.
Core DevOps principles Automation: Like a production line in a factory, DevOps uses automation to speed up tasks, meaning few or no errors and less manual work. Collaboration: DevOps teams cooperate closely. They share ideas, solve problems together, and make decisions as one group.
Core DevOps principles Continuous Improvement : DevOps perpetually seeks to improve its processes. In this regard, teams regularly examine what is not working from their assessments of outputs and make changes to correct it. User-Focused: DevOps aims to make the software better for those who use it. Teams are very responsive to user feedback, using it as a basis for improvement.
DevOps History In 2009, there was a well-received talk at the O'Reilly Velocity Conference: "10+ Deploys per Day: Dev and Ops Cooperation at Flickr." Patrick Debois organized an event in Ghent, Belgium, called DevOpsDays. The conference was a success and conference has become a recurring event. DevOpsDays was abbreviated to "DevOps" in conversations on Twitter and various Internet forums.
DevOps The DevOps movement has its roots in Agile software development principles. Individuals and interactions over processes and tools Working software over comprehensive documentation
DevOps Customer collaboration over contract negotiation Responding to change over following a plan
DevOps DevOps, emphasizes that interactions between individuals are very important , and that technology might possibly assist in making these interactions happen and tear down the walls inside organizations
DevOps The turnaround for DevOps processes must be fast Consider time to market in the larger perspective , and simply stay focused on tasks in the smaller perspective .
DevOps Benefits of Devops Faster development and deployment of applications. Faster response to the market changes to improve business growth. Business profit is increased as there is a decrease in software delivery time and transportation costs. Improves customer experience and satisfaction. Enhanced collaboration. Leads to better team engagement and productivity due to collective responsibility.
Agile Wheel of Wheels
DevOps Kanban emphasizes the 24-hour cycle and is popular in operations teams . Scrum cycles can be between two to four weeks and are often used by development teams using the Scrum Agile process. Longer cycles are also common and are called Program Increments , which span several Scrum Sprint cycles, in Scaled Agile Framework
DevOps DevOps can benefit Agile cycles Deployment systems, maintained by DevOps engineers, make the deliveries at the end of Scrum cycles faster and more efficient. These can take place with a periodicity of two to four weeks. The Kanban cycle is 24 hours and the deployment cycle needs to be much faster than that if we are to succeed with Kanban
What is DevOps?
Agile Development Model It is a combination of iterative and incremental process models. T o help a project to adapt to change requests quickly to facilitate quick project completion by removing unnecessary activities that waste time and effort .
Agile Development Model ★ The requirements are decomposed into many small parts that can be incrementally developed. ★ The division of the entire project into smaller parts helps to minimize the project risk and to reduce the overall project delivery time requirements.
Agile Development Model ★ Each iterations are short time frames (timeboxes) that typically last from one to four weeks. ★ Each iteration involves a cross-functional team working in all functions: planning, analysis, design, coding, unit testing, and acceptance testing . ★ At the end of the iteration a working product is demonstrated to stakeholders
Agile Development Model An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration. ★ Multiple iterations might be required to release a product or new features. ★ Working software is the primary measure of progress. An agile process focuses more on code development rather than documentation and customer interaction is more frequent .
Agile Development Model
Agile Development Model Phases of Agile Model: Requirements gathering Design the requirements Construction/ iteration Testing/ Quality assurance Deployment Feedback
Agile Development Model Requirements gathering: Define the requirements. Explain business opportunities and plan the time and effort needed to build the project. Evaluate technical and economic feasibility .
Agile Development Model Design the requirements: Use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will apply to your existing system .
Agile Development Model Construction/ iteration: Designers and developers start working on their project, which aims to deploy a working product. The product will undergo various stages of improvement Testing: In this phase, the Quality Assurance team examines the product's performance and looks for the bug.
Agile Development Model Deployment: In this phase, the team issues a product for the user's work environment. Feedback: In this, the team receives feedback about the product and works through the feedback.
Agile Development Model Agile Methodologies There are several Agile Methodologies that support Agile Development. The Agile Methodologies include − ★ Scrum ★ Crystal ★ Dynamic Software Development Method(DSDM) ★ Feature Driven Development(FDD) ★ Lean Software Development ★ eXtreme Programming(XP)
Agile Methodologies Scrum- is an agile development process focused primarily on ways to manage tasks in team-based development conditions . There are three roles in it, and their responsibilities are: Scrum Master: The scrum can set up the master team, arrange the meeting and remove obstacles for the process Product owner: The product owner makes the product backlog, prioritizes the delay and is responsible for the distribution of functionality on each repetition. Scrum Team: The team manages its work and organizes the work to complete the sprint or cycle
Agile Methodologies Crystal -- There are three concepts of this method- Chartering: Multi activities are involved in this phase such as making a development team, performing feasibility analysis, developing plans, etc. Cyclic delivery: under this, two more cycles consist, these are: Team updates the release plan. Integrated product delivers to the users. Wrap up: According to the user environment, this phase performs deployment, post-deployment.
Agile Methodologies eXtreme Programming(XP) Method is used when customers are constantly changing demands or requirements, or when they are not sure about the system's performance.
Agile Methodologies Feature Driven Development(FDD): This method focuses on " Designing and Building " features. FDD describes the small steps of the work that should be obtained separately per function.
Agile Methodologies Lean Software Development: Lean software development methodology follows the principle "just in time production.“ The lean method indicates the increasing speed of software development and reducing costs.
Advantages ➢ Deployment of software is quicker. ➢ Can adapt to rapidly changing requirements and respond faster. ➢ Customer interaction and satisfaction is done in each iteration ➢ Helps in getting immediate feedback which can be used to improve the software in the next iteration. Disadvantages ➢ More code focused and produces less documentation. ➢ Not suitable for handling complex dependencies. ➢ Depends heavily on customer interaction,
DevOPs vs ITIL DevOps and ITIL(Information Technology Infrastructure Library) are well-known frameworks for IT workflows, but they both specialize in different areas. DevOps focuses on collaboration and offers a flexible approach toward IT lifecycles phases . ITIL, on the other hand, offers a more strict set of guidelines for ITSM (Information Technology Service Management ) implementation ,
DevOPs vs ITIL ITIL is a set of principles for IT service management. It is a highly structured model built to boost productivity and offer statistics for IT teams. ITIL is a subset of ITSM; it primarily focuses on procedures for delivering, managing, and improving IT services to businesses and customers. It improves predictability and IT service delivery efficiency.
DevOPs vs ITIL It is a framework for service management and is involved in five key stages.
DevOPs vs ITIL 1) Service strategy All managers follow instructions to develop a service strategy that ensures the company can manage all associated costs and risks. Multiple roles involved in service strategy are as follows A) Business relationship manager B) Finance manager C) IT steering group (ISG) D) Demand manager E) Service Strategy manager F) Service Portfolio manager
DevOPs vs ITIL 2) Service operation Service operation includes technical support teams and application management that respond when an issue has an impact on the business. 3) Service design It involves when the service’s architecture is developed, and the business needs are translated into technical requirements.
DevOPs vs ITIL 4) Service transition In this stage, all assets are controlled to deliver a complete service for testing and integration. 5) Service improvement It is a reflective approach that involves four stages to check the services are always in line with the demands of the business.
Comparison between DevOps and ITIL
Comparison between DevOps and ITIL
Comparison between DevOps and ITIL
Comparison between DevOps and ITIL It’s better collaboration between IT and business when ITIL and DevOps used together It also helps in customer satisfaction due to the improved delivery of services and better management of issues
The DevOps process and Continuous Delivery Continuous delivery (CD ) is a software engineering approach which enables teams to produce software in short cycles and ensures that the software can be manually and reliably released at any time. It aims to automate the software delivery process by building, testing, and releasing new features and changes with greater speed, accuracy, and frequency.
The DevOps process and Continuous Delivery CD is enabled through the deployment pipeline , and uses automatic or manual processes to ensure frequent releases of bug-free software into production. Deployment pipeline provide the following Visibility Feedback Continuous Deployment
The DevOps process and Continuous Delivery Visibility – All aspects of the delivery system including build, deploy, test, and release are visible to every member of the team to promote collaboration. Feedback – Team members learn of problems as soon as they occur so that they are able to fix them as quickly as possible. Continuous Deployment – Through a fully automated process, you can deploy and release any version of the software to any environment.
The DevOps process and Continuous Delivery
The DevOps process and Continuous Delivery The developer environments and the Continuous Integration environment, are normally very similar. The number and types of testing environments vary greatly. The production environments also vary greatly
The DevOps process and Continuous Delivery The developers Developers work on their workstations. Develop code and need many tools to be efficient. E ach of them have production-like environments available to work with locally on their workstations or laptops Has prepackaged developer environment in the pipeline Needs two or more separately maintained environments --Tools for Development --For deploying code in production
The DevOps process and Continuous Delivery The developers Example for production like environment A virtual machine provisioned with Vagrant running on the developer's machine, a cloud instance running on AWS, or a Docker container
The DevOps process and Continuous Delivery The revision control system The revision control system is often the heart of the development environment. The following are stored in this control system The code that forms the organization's software products, the configurations that form the infrastructure and the designs of hardware might also be stored
The DevOps process and Continuous Delivery The revision control system
The DevOps process and Continuous Delivery The build server Build server listen to changes in the revision control system. When a change is noticed, the build server updates its local copy of the source from the revision control system It fetches the latest source, compiles the code, runs tests, and produces build artifacts like executables or installable packages
The DevOps process and Continuous Delivery The artifact repository Artifacts are large binary packages that are created throughout the development and release process. An artifact repository is a software application designed to manage these artifacts
The DevOps process and Continuous Delivery The artifact repository These binary code repositories are filesystems that are accessible over the HTTP protocol. They provide features for searching and indexing as well as storing metadata, such as various type identifiers and version information about the artifacts.
The DevOps process and Continuous Delivery Test environments After the build server has stored the artifacts in the binary repository, they can be installed from there into test environments
The DevOps process and Continuous Delivery Staging/production Staging environments are the last line of test environments. They are interchangeable with production environments. Install your new releases on the staging servers, check that everything works, then swap out your old production servers and replace them with the staging servers, which will then become the new production servers. This is sometimes called the blue-green deployment strategy
The DevOps process and Continuous Delivery
The DevOps process flow
The DevOps process and Continuous Delivery Continuous Integration (CI) is a DevOps software development practice that enables the developers to merge their code changes in the central repository. Then automated builds and tests can be run. The amendments by the developers are validated by creating a built and running an automated test against them.
The DevOps process and Continuous Delivery . Continuous Deployment (CD) It is the final stage in the pipeline that refers to the automatic releasing of any developer changes from the repository to the production. Continuous Deployment ensures that any change that passes through the stages of production is released to the end-users.
The DevOps process and Continuous Delivery Continuous Delivery (CD) is a DevOps practice that refers to the building, testing, and delivering improvements to the software code. It is an extension of the Continuous Integration phase to make sure that new changes can be released to the customers quickly in a substantial manner . It helps to decide whether to make the releases daily, weekly, or whenever the business requires it
The DevOps process and Continuous Delivery
Release Management In a DevOps environment, release management refers to the process of planning, coordinating and deploying software releases to production environments . The goal of release management is to ensure that new features, bug fixes, and enhancements are delivered to end-users in a reliable, efficient, and timely manner
Release Management Key Components of Release Management 1. Planning and Coordination 2. Environment Management 3. Release Deployment 4. Testing and Quality Assurance 5. Change Management 6. Release Monitoring and Feedback
Release Management Key Components of Release Management 1. Planning and Coordination Release planning involves identifying the scope of a release, defining its objectives, and establishing a timeline for its delivery. It also includes coordinating with various stakeholders, such as developers, testers, operations teams, and business units, to align their efforts and ensure a successful release.
Release Management 2. Environment Management Effective release management requires the establishment and maintenance of consistent and reliable environments for development, testing, and production. This involves managing the configuration of infrastructure, software dependencies, and data to ensure compatibility and minimize potential issues during deployment..
Release Management 3. Release Deployment The deployment phase of release management involves the actual installation, configuration, and activation of the software release on target environments. It relies on automation and deployment tools to streamline the process and reduce the risk of errors or downtime .
Release Management 4. Testing and Quality Assurance Thorough testing is a critical aspect of release management. It involves conducting various types of testing, including unit testing, integration testing, regression testing, and user acceptance testing, to validate the functionality, performance, and security of the software release .
Release Management 5. Change Management Change management is an integral part of release management, as it involves assessing and managing the impact of changes introduced in a release. This includes evaluating potential risks, communicating with stakeholders, and implementing strategies to minimize disruption and ensure a smooth transition.
Release Management 6. Release Monitoring and Feedback Monitoring the performance and stability of a released software application is crucial for identifying and addressing any issues or bugs. Gathering feedback from end-users and stakeholders helps to continuously improve the software and enhance future releases.
Release Management-Benefits It increases the amount of successful releases by a business It reduces issues and problems with quality It improves communication, coordination, and productivity It enables a business to deliver software faster while mitigating risks It helps streamline and standardize both the development and operation processes.
Scrum Scrum is a framework used by teams to manage work and solve problems collaboratively in short cycles. Scrum implements the principles of Agile as a concrete set of artifacts, practices, and roles .
Scrum Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value . Scrum is not a process or a technique for building products; rather, it is a framework within which you can employ various processes and techniques .
Scrum The Scrum framework consists of Scrum Teams and their associated roles, events, artifacts, and rules . The rules of Scrum bind together the events, roles, and artifacts, governing the relationships and interaction between them.
Scrum Process Framework
Scrum Process Framework Sprint The heart of Scrum is a Sprint, a time-box of two weeks or one month during which a potentially releasable product increment is created . A new Sprint starts immediately after the conclusion of the previous Sprint. Sprints consist of the Sprint planning, daily scrums, the development work, the Sprint review, and the Sprint retrospective.
Scrum Process Framework Sprint -Events The Sprint Sprint Planning Daily Scrum Meetings The Sprint Review The Sprint Retrospective
Scrum Process Framework In Sprint planning , the work to be performed in the Sprint is planned collaboratively by the Scrum Team. The Daily Scrum Meeting is a 15-minute time-boxed event for the Scrum Team to synchronize the activities and create a plan for that day. A Sprint Review is held at the end of the Sprint to inspect the Increment and make changes to the Product Backlog, if needed.
Scrum Process Framework The Sprint Retrospective occurs after the Sprint Review and prior to the next Sprint Planning. In this meeting, the Scrum Team is to inspect itself and create a plan for improvements to be enacted during the subsequent Sprint.
Scrum roles Product owner The product owner is responsible for what the team builds, and why they build it. The product owner is responsible for keeping the backlog of work up to date and in priority order.
Scrum roles Scrum master Ensures that the Scrum process is followed by the team. Scrum masters are continually on the lookout for how the team can improve , while also resolving impediments and other blocking issues that arise during the sprint. Scrum masters are part coach, part team member, and part cheerleader.
Scrum roles Development team The members of the development team actually build the product.
Scrum Artifacts Product backlog The product backlog is a prioritized list of work the team can deliver. The product owner is responsible for adding, changing, and reprioritizing the backlog as needed.
Scrum Artifacts Sprint Backlog The Sprint Backlog is the set of Product Backlog items selected for the Sprint, plus a plan for delivering the product Increment and realizing the Sprint Goal.
Sprint Burn-Down Chart Sprint Burn-Down Chart is a practice for trending the work expended by the Scrum Team. It is a useful technique in monitoring the Sprint progress towards the Sprint Goal. The Product Owner tracks this total work remaining at least every Sprint Review.
Increment . The Increment is the sum of all the Product Backlog items completed during a Sprint combined with the increments of all previous Sprints. At the end of a Sprint, the new Increment must be a working product , which means it must be in a useable condition.
Kanban . Kanban is a popular framework which is used to implement agile software development. It takes real time communication of capacity and complete transparency of work. The work items are represented in a kanban board visually, allowing team members to see the state of every piece of work at any time.
Kanban . Boards The kanban board is the agile project management tool that designed the necessary visualized work, limited work-in-progress, and maximizes flow (or efficiency). It uses cards, columns, and provides continuous improvement to help technology and service teams who commit the right amount of work and get it done.
.
Kanban .
Scrum, Kanban, and the delivery pipeline . Scrum focuses on sprint cycles, which can occur biweekly or monthly. Kanban can be said to focus more on shorter cycles, which can occur daily Many organizations use both Kanban and Scrum together
Scrum, Kanban, and the delivery pipeline . Scrum focuses on sprint cycles, which can occur biweekly or monthly. Kanban can be said to focus more on shorter cycles, which can occur daily Many organizations use both Kanban and Scrum together From a DevOps perspective, a change starts propagating through the Continuous Delivery pipeline toward test systems
Scrum, Kanban, and the delivery pipeline Continuous delivery pipeline can manage both the following types of scenarios: The build server supports the generation of the objective code quality metrics that we need in order to make decisions . The deployment pipeline can also be directed manually. This can be handled with an issue management system, via configuration code commits, or both.
Features
Automation Automation can reduce time consumption , especially during the testing and deployment phase. The productivity increases, and releases are made quicker by automation. This will lead to catching bugs quickly so that it can be fixed easily.
2. Collaboration The Development and Operations team collaborates as a DevOps team, which improves the cultural model as the teams become more productive with their productivity, which strengthens accountability and ownership. The teams share their responsibilities and work closely in sync, which in turn makes the deployment to production faster.
3. Integration Applications need to be integrated with other components in the environment. The integration phase is where the existing code is combined with new functionality and then tested. Continuous integration and testing enable continuous development. The frequency in the releases and micro-services leads to significant operational challenges. To overcome such problems, continuous integration and delivery are implemented to deliver in a quicker, safer , and reliable manner .
4. Configuration Management It ensures the application to interact with only those resources that are concerned with the environment in which it runs. The configuration files are not created where the external configuration to the application is separated from the source code. The configuration file can be written during deployment, or they can be loaded at the run time, depending on the environment in which it is running
Tools “DevOps tools” is an umbrella term that includes all the platforms, tools, servers, and other applications used in a relatively new software development life cycle (SLDC) model called DevOps.
Source Code management Tools
1. Git: Distributed source code management and version control system Git is one of the most popular DevOps tools, widely used across the software industry. It’s a distributed SCM (source code management) tool, loved by remote teams and open-source contributors. Git allows you to track the progress of your development work. It’s also great for experimenting, as you can create separate branches and merge new features only when they’re ready to go.
2. Jira: Issue and project tracking platform Jira is a popular issue tracking and project management platform. It’s a product of Atlassian, a renowned IT company that develops several highly sought-after software tools, including Confluence, Bitbucket, Trello, Statuspage, and others. As Jira started as a bug tracking tool, this is how most developers still think of it. Its user-friendly interface allows you to see the development status of your projects in context, create branches and pull requests, view commits, manage dependencies and releases, visualize progress, and more.
3. Gradle: Multi-language build automation tool Gradle is a versatile tool that supports multiple programming languages, including Java, C++, Python, and others. It’s also supported by popular IDEs (Integrated Development Environments) such as Netbeans, Eclipse, and IntelliJ IDEA. Plus, Google selected Gradle as the official build tool for Android Studio.
Containerization platforms Containerization is a lightweight form of virtualization that packages up the source code of an application and all its dependencies as a container image, so that it can be deployed to different environments without further configuration.
Docker: Open-source containerization platform Docker has made containerization popular in the tech world, mainly because it makes distributed development possible and helps automate the deployment process. It isolates applications into separate containers, so they become portable across environments and more secure.
2. Kubernetes: Automated container-orchestration platform Kubernetes is a container orchestration platform that takes container management to the next level. Kubernetes works well with Docker or any of its alternatives to help you group your containers into logical units. Kubernetes allows you to automate the process of managing hundreds or thousands of containers.
CI/CD and deployment tools CI/CD stands for continuous integration and continuous delivery/deployment. Continuous integration is a software development practice that merges the work of all developers working on the same project, while continuous delivery ensures reliable and frequent releases.
Jenkins: Open-source automated CI/CD server Jenkins is one of the most popular DevOps automation tools in the market. It’s an open-source CI/CD server that allows you to automate the different stages of your delivery pipeline. The main reason for Jenkins’ popularity is its huge plugin ecosystem. With more than 1,800 plugins, it integrates with almost all DevOps tools, including Docker, Puppet, Octopus Deploy, and more.
2. Bamboo: Commercial automated CI/CD server Bamboo is Atlassian’s CI/CD server solution, and has many similar features to Jenkins. Both are popular DevOps tools that allow you to automate your delivery pipeline from builds to deployment. However, while Jenkins is open-source , Bamboo comes with a price tag .
Cloud DevOps tools These days, it’s possible to run your entire DevOps stack in the cloud, using the managed DevOps solutions of cloud service providers.
A zure DevOps Services: Microsoft’s cloud-based integrated DevOps platform Azure DevOps (formerly known as Visual Studio Team System or VSTS) is Microsoft’s integrated DevOps platform. It enables you to manage your entire DevOps cycle from one integrated interface. While Azure DevOps Services is a cloud DevOps tool that you can use as a SaaS (Software-as-a-Service) applications.