day-1: What is DevOps, How to Start with DevOps

day-1: What is DevOps, How to Start with DevOps

·

7 min read

This tutorial will help you to learn about the one popular word in the IT industry, DevOps.

1. What is DevOps?
2. Basics of DevOps,
3. DevOps Fundamentals,
4. What are DevOps Roles and Responsibilities,
5. How does DevOps differ from SDLC?
6. Knowledge Required for DevOps?
7. Advantages of DevOps
8. Devops Tools

What is DevOps?

DevOps is not a tool. It’s not a process. It’s not even a methodology.
DevOps is a philosophy of the efficient development, deployment, and operation, of the highest quality software possible, used in the entire development lifecycle when creating and operating a service with the help of two different professionals ie. the developer and operational team(system administrator).

So these guys participate together to find better ways to be more effective for the organization throughout the entire software development lifecycle, from the design phase through the development and production phases.

Because our existing principles, processes, and practices are not enough to provide a better system infrastructure effectively.
In recent days, we have realized that some parts of operations need to be automated, Operation team ie system administrator will do some automation in infrastructure and developers do automation in "writing “operations” code, or both. That is scary to some but is part of the value of the overall collaborative approach considering service improvement.

DevOps creates collaboration and coordination between developers and operations.

DevOps is a similar model to agile development.

DevOps also helps in,
• Configuration Management,
• Continuous Integration,
• Continuous Deployment,
• Continuous Testing,
• Continuous Delivery,
• Continuous Monitoring and
• Virtualization / Containerization.

How do we achieve all the above-mentioned terms.?
Using some of the DevOps tools such as Git, Jenkins, Ant, Maven, Vagrant, Docker, Puppet, Chef, Ansible, Python, and Nagios.

How does DevOps differ from SDLC?

To understand DevOps more, we need to know about the traditional software development life cycle.

In a traditional software development function,

• Developers write and test the codes.
• Developers get the requirements about the program and how the program should be from the business perspective.
• Developers may use whatever language want and are comfortable designing and programming a piece of software.

• The program will be given to a quality assurance group.
• Now The quality assurance group will test the program or software to ensure it is stable and meets the requirements.
• Quality assurance testers usually know little about software development.
• If they identify any issue, the program or software will be transferred back to the developers to fix the issue. These steps are repeatable until the issue is fixed.
• Now the quality assurance group will test the program or software to ensure it is stable and meets the requirements.
• During the testing, if they find any issue, the program or software will be transferred back to the developers to fix the issue. These steps are repeatable until the issue is getting fixed.
• Next, the tested program will be given to the operation groups for installing the application.
• Generally, the operations group or system administrator is responsible for providing the server with the operating system and also responsible for maintaining the servers.
This is how the traditional software development life cycle works.

But now the modern software development life cycle is more complex. A code may be written in a language that can run on different servers and operating systems. So A code should not have a compatibility issue and also code needs to be tested for different platforms.

Here, Both Developers and Operation groups ie system administrators should know about the program compatibility.

So there must be collaboration. That collaboration is called DevOps to improve the software development lifecycle or in the infrastructure area from the design phase to the production phase.

Advantages of DevOps

1. DevOps between developers and quality assurance testers increases software quality and reduces the testing time.
2. In a traditional scenario, coders don't know how an application is to be tested, and testers have little idea of the features coded into an application. Collaboration here is more valuable than just sharing job knowledge.
3. DevOps between development and operations improves the consistency of application behavior.
4. DevOps is about tools and technology.
5. DevOps tools can be used to perform collaborative tasks and also can used for automation.
6. Main goal of DevOps is to improve the quality and efficiency.

Knowledge Required for DevOps?

Infrastructure: You need to know the infrastructure that you are working on. Infrastructure could be of two types:

Cloud: Knowledge about At least one cloud infrastructure is preferred by a DevOps engineer. AWS has many in-build web services dedicated to DevOps profiles (e.g. Code Commit, Code Build, Code Deploy, Code Pipeline), etc.

Scripting/Programming Language: At least one scripting language along with shell scripting is necessary for the DevOps role. Python can fit the bill as it is easy to learn and widely adopted in the industry and can work both for small scripts as well as full-fledged application development.

DevOps Tools: There are various tools available to automate the whole process of application development life-cycle. Different companies prefer different toolstacks. However one can start with the most widely accepted DevOps tools first. Such as git for source Code Management, Jenkins for build and test, chef for configuration management, and AWS infrastructure for deployment.

Integration Skills: Ultimately the DevOps engineer should be able to use all his expertise to integrate all the above-mentioned skills to create an environment that is fully automated and integrated. The goal should be for zero manual intervention from source code management to deployment state, i.e. Continuous Integration, Continuous Delivery, and Continuous Deployment.

Soft skills: At the end of the day DevOps is a culture of constant collaboration and communication among various teams responsible for Application development and delivery. So one needs to be dynamic, a team player, a problem-solver, and a quick learner.

What are DevOps Tools?

Jenkins
Jenkins is a DevOps tool for monitoring executions of repeated jobs. This extensible automation engine enables DevOps teams to integrate project changes more easily and access outputs for quickly identifying problems.

Chef
Chef is a DevOps tool for achieving speed, scale, and consistency. Chef turns infrastructure into code so that users easily and quickly can adapt to changing business needs.

Ansible
providing the simplest way to automate IT, Ansible is a DevOps tool for automating your entire application lifecycle. Ansible is designed for collaboration and makes it much easier for DevOps teams to scale automation, manage complex deployments, and speed up productivity.

Puppet
Puppet Enterprise is one of the most popular DevOps tools on the market because it enables teams to deliver technology changes quickly, release better software, and do it more frequently with confidence. Use Puppet Enterprise to manage infrastructure as code and get a solid foundation for versioning, automated testing, and continuous delivery.

Git
Git is a version control system (VCS) for tracking changes in computer files and coordinating work on those files among multiple people. It is primarily used for source code management in software development, but it can be used to keep track of changes in any set of files.

Python
Python is a widely used high-level and popular programming language for general-purpose programming. It's great as a first language because it is concise and easy to read, and it is also a good language to have in any programmer's stack as it can be used for everything from web development to software development and scientific applications.

Docker
An integrated technology suite enabling DevOps teams to build, ship, and run distributed applications anywhere, Docker is a tool that allows users to quickly assemble apps from components and work collaboratively. This open platform for distributed applications is appropriate for managing the containers of an app as a single group and clustering an app’s containers to optimize resources and provide high availability.

Ant
Ant is a software tool for automating software build processes, which originated from the Apache Tomcat project in early 2000. It was a replacement for the Make build tool of Unix and was created due to several problems with Unix's make.

Maven
Maven is a build automation tool used primarily for Java projects. In Yiddish, the word maven means "accumulator of knowledge". Maven addresses two aspects of building software: first, it describes how software is built, and second, it describes its dependencies.

Still, many tools can used in DevOps to achieve the goals.

So hope you have got an idea about What is DevOps. Going forward, we will see how to use those DevOps tools in the infrastructure more than What is DevOps and how to integrate each other in the infrastructure environment to improve the development, deployment, delivery, testing, and configuration management also automation.