DevOps/Week1

DevOps Introduction

DevOps:

• DevOps stands for Development and Operations.

• DevOps is a set of practices that emphasizes (facilitates) collaboration, communication, and automation between the development team (design and develop a system from scratch) and the operations team (that tests and monitors).

• DevOps emphasizes the use of automation tools and practices such as continuous integration and continuous deployment (CI/CD) and application monitoring.

• DevOps is a continuous process. The development team can deliver quickly.

• Overall, DevOps has emerged as a response to the challenges of traditional software development (waterfall model) and delivery processes, emphasizing collaboration, automation, and continuous improvement. While the concept of DevOps continues to evolve (develop gradually), it has already had a significant impact on the software development industry, improving the speed, quality, and reliability of software products.

Devops Culture:

DevOps culture refers to a set of practices that emphasize collaboration and communication between development and operations teams. It's a culture that prioritizes the rapid delivery of high-quality software products while also ensuring the stability, security, and reliability of the systems that support them. DevOps culture is about breaking the barriers between the development team and the operation team. The Devops culture is implemented in several phases with the help of different tools:

Development:

Plan: In this phase development team discuss the objectives that are to be delivered.

Code: The development team works on code and then stores the code in the repository with the help of Git also called version control.

Build: In this phase, code is made executable. The build phase refers to the process of compiling (This involves converting the source code into executable code that can run on the target platform. This step ensures that the code is syntactically correct and free of errors), packaging, and testing the source code to create an executable application. In the Build stage, we take the provided code and build it for testing purposes. The code is built in a development environment to allow testing and bug fixes.

Test: Testing is what it sounds like — automated testing to ensure the project is functioning as expected, identifying any bugs or issues in behaviour. Depending on your team workflow, UI/UX or performance testing will also happen in this stage. Selenium is an example of this phase.

Operations:

Deploy: Deployment is the stage where we move the project — in its current state - to the production environment for the end-users to access. This stage is where approved changes get deployed to the consumer/user.

Operation: This phase focuses on ensuring that the software runs smoothly and is available for use, as well as detecting and resolving any issues or incidents that may arise. Ansible and Dockers are examples of this phase.

Monitor: In the Monitor stage, the project is being used and interacted with. From the recorded results, teams will gain more insight into behaviour, user response, and the general success of the product.

SDLC (Software Development Life Cycle):

SDLC is a structured approach that enables the production of high-quality, low-cost software within the shortest time. SDLC is a process used by software development teams to design, develop, test and deploy software. The different phases of SDLC are:

• Plan (The purpose of the application, details about the end users of the product, interface design of software).

• Requirements Gathering (SRS document).

• Design.

• Implementation (Coding and Error checking).

• Testing (The developed product is the same as expected).

• Deployment and Maintenance.

Difference between Waterfall and Agile models:

The Waterfall methodology is a sequential and linear approach to software development, where each phase of the software development life cycle (SDLC) is completed in sequence, with one phase being completed before the next one begins. The Waterfall model includes sequential phases such as requirements gathering, design, implementation, testing, and maintenance. In this model, the output of one phase becomes the input for the next phase, and the project moves through these phases until it is completed. The Agile methodology is an iterative and incremental approach to software development, where the development process is broken down into smaller, iterative cycles called sprints (Periods of two to four weeks). The Agile methodology emphasizes continuous feedback, collaboration, and flexibility, allowing teams to adapt to the changing requirements and priorities throughout the development process. Agile has 4 values and 12 principles.

• Waterfall is a sequential (linear approach) life cycle model while Agile is a continuous iteration of development and testing in the software development process (In agile we build products iteratively).

• Waterfall does not require a huge deal of customer involvement but agile needs customer interaction at every stage.

• Agile is very flexible whereas Waterfall is a structured software development methodology.

• Agile performs testing concurrently with software development, whereas in Waterfall methodology, testing comes after the “Build” phase.

• Agile allows changes in project development requirements, whereas Waterfall has no scope of changing the requirements once the project development starts.

• Agile has fixed cost and time but variable scope whereas Waterfall has variable cost and time but fixed scope. Difference between Agile and Scrum: Agile is a border term that contains a set of principles that describes how to deliver software projects to customers whereas Scrum is a framework of agile that uses agile principles for the actual delivery of software projects.

Overall, the Waterfall methodology is better suited for projects with well-defined requirements and a clear scope of work, while the Agile methodology is better suited for projects with evolving (develop gradually-slowly) requirements and a need for flexibility and collaboration.