1. What is Devops?
2. Basics of Devops,
3. Devops Fundamentals,
4. What is Devops Roles and Responsibilities,
5. How DevOps differs from SDLC?
6. Knowledge Required for Devops?
7. Advantages of Devops
8. Devops Tools
What is DevOps, How to Start with DevOps – DevOps Tutorial
Let’s get started.
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 entire development lifecycle when creating and operating a service with the help of the two different professionals ie. developer and operational team(system administrator).
So these guys participate together to find the 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 the better system infrastructure in an effective manner.
In the recent days, we realize 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 the collaboration and coordination between developers and operations.
DevOps is a similar model like 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 DevOps differs from SDLC?
In order to understand the 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 how the program should be from the business perspective.
• Developers may use whatever language want and comfortable to design and program a piece of software.
• 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 the software development.
• If they identified 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 to provide the server with the operating system and also responsible to maintain 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 a 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 have knowledge 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 design phase to production phase.
Advantages of DevOps
1. DevOps between developers and quality assurance testers increase software quality and reduce 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 consistence 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 automations.
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 from a DevOps engineer. AWS has many in-build web services dedicated to DevOps profile (e.g. Code Commit, Code Build, Code Deploy, Code pipeline) etc. Read more.
Scripting/Programming Language: At least one scripting language along with shell-scripting is necessary for 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 tool-stack. 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 deploy.
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, team-player, problem-solver and quick-learner.
What is DevOps Tools?
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 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.
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 productivity. Read more
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. Read more for Puppet Tutorial for Beginners
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 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.
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 containers of an app as a single group and clustering an app’s containers to optimize resources and provide high availability.
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 a number of problems with Unix’s make.
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 there are many tools can used to 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 the automation.
Keep practicing and have fun. Leave your comments if any.
Support Us: Share with your friends and groups.
Stay connected with us on social networking sites, Thank you.