DevOps For Beginners:

DevOps Software Development Method Guide For Software Developers and IT Professionals

By

Joseph Joyner

Table of Contents

Introduction

Chapter 1. What is DevOps?

Chapter 2. DevOps Tools

Chapter 3. How DevOps Works Or The Process Of Work Flows Automation

Chapter 4. Principles Of DevOps

Chapter 5. Tips And Tricks For Making DevOps Process Better

Chapter 6. Benefits Of Implementing DevOps Process

Final Words

Thank You Page

DevOps For Beginners: DevOps Software Development Method Guide For Software Developers and IT Professionals

By Joseph Joyner

© Copyright 2015 Joseph Joyner

Reproduction or translation of any part of this work beyond that permitted by section 107 or 108 of the 1976 United States Copyright Act without permission of the copyright owner is unlawful. Requests for permission or further information should be addressed to the author.

This publication is designed to provide accurate and authoritative information in regard to the subject matter covered. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If legal advice or other expert assistance is required, the services of a competent professional person should be sought.

First Published, 2015

Printed in the United States of America

Introduction

Isn't it surprising to see the application development team and the operations team working together? It is definitely is, as they are always in seclusion for a very long time. But now when they have started working together, the results are even more stunning. This concept of making the development team and operations team work together was introduced by DevOps process. You get to hear many more interesting definitions about what actually is DevOps process, but let us have a look at a very simple definition about what actually is DevOps and what is the concept behind making these two teams work together.

Chapter 1. What is DevOps?

DevOps, when explained in simple terms can be stated as combining the engineers team and the operations team to work together in an automated environment and also in a repeatable way. Working this way will help in getting the things done faster. Development and operations teams are entirely two different teams and it has been always impossible for them to work together.

If you are planning to learn about DevOps today and want to implement it tomorrow, then it may not be really possible. The reason why it may not be possible is, as discussed earlier, these two are completely different and collaborating and communicating between them can be a challenging task. First of all, you will need to understand the problems or hurdles that may come up and you should plan in advance about how to overcome them. Only then you will be able to keep the DevOps train rolling on the tracks.

What is next?

Do you know that there is another important thing that you should take care of, even you are able to manage the culture changes between the Development and Operations team. Yes, it is the NEW DEVOPS tools. Culture change is definitely the first thing that you should take care of, but tools are also equally important and challenging as well.

Chapter 2. DevOps Tools

This is an book about DevOps for Beginners and hence most of the readers here would be fresher and newer to DevOps. In the case, it is very important to first understand the common categories and the tools that are used in those categories.

Here is the list of Categories or stages in DevOps

1. Configuration Management

2. Build and Test systems

3. Application Deployment

4. Monitoring

Configuration Management

Infrastructure automation is the most common word used for configuration management. This is actually something referred to the changes in the software base code. You may come across a situation where there is some problem arises with the apps like app crash. This is when the configuration management comes into the picture. What has gone wrong and who is responsible for it is determined by it. For sustaining a smooth performance of any product, this is very essential and especially then when more than one person is working on the same code or server. It is the same with DevOps as well. Here is the list of a few very common infrastructure automation of configuration management tools:

a.) Chef

b.) CFEngine

c.) SaltStack

4.) Ansible

5.) Ubuntu Juju

6.) Puppet

Build and Test systems

Next comes Build and Test systems in the category list. These Builds and Test systems are used for automating a lot of tasks that are performed by the developers like converting the source into a executable form (Binary executables), running the texts and documentation creation. Here is the list of tools for testing and building code:

a.) Ant

b.) Jenkins

c.) Maven

d.) Gradle

Application Deployment

One of the most important parts of DevOps is Application Deployment, which is also known as release automation. These tools are responsible for the software delivery. Here are a few application deployment tools.

a.) Capistrano (it is useful for only ruby based application)

b.) Jenkins

c.) Fabric

Monitoring

Last, but not the least is the Monitoring. There are basically two kinds of application monitoring. One of them is application performance monitoring and the other is the server performance monitoring. The Application performance monitoring tools provide you information from the code level and many good tools keep providing you information about the issues and performance. Coming to the server performance monitoring, at the infrastructure level is its operation. The memory capacity, status of CPU and its health are shown. You will be able to get the report about each server and this is going to help in identifying the problem in advance before that actually impacts the performance. Here is the list of the very popular monitoring tools available.

a.) Ganglia

b.) Cacti

c.) Nagios

d.) Graphite

e.) Sensu

f.) PagerDuty

Chapter 3. How DevOps Works Or The Process Of Work Flows Automation

a.) Understanding the Life cycle of each server is important to install the DevOps tools

b.) Working on Workflow charts

c.) Release Management and version is very important

d.) Automation

e.) Monitoring the performance of the automated tasks

f.) Knowledge sharing plays a vital role

Have a look at all these steps in detail.

Understanding the Life cycle of each server is important to install the DevOps tools

When you are planning to automate all the tasks of development and operations teams, you will first have to understand the complete life cycle of each server and then plan it accordingly. There may be certain things that the operations team does manually and other things are carried out in automated mode. So, now transform everything into the workflow charts.

Working on Workflow charts

The work flow charts are the simplest way to understand the complete operation involved. That means you get the actual sequence of operations done like what is the input provided and how is it provided, what kind of actions are performed on the input and finally what kind of output is generated. This is also useful in deciding which kind of automation tool is best suited at which stage as there are many tools available for each stage.

When talking to the teams about the work flow charts, better convert them into simple flow charts. This way the administrator will be able to grab more knowledge about each step involved in each operation. In this process of preparing the flow charts, you will be able to divide a complex process into a few simple processes. Now, it is going to help you better in identifying the process that are to be automated and those that have to be automated in order to enhance the performance and increase the output.

Now, decide the input to be inserted to each process and also the output that has to be generated. That will ease the process of selecting the right tool for automation. Start by automating a simple and small process and try to expand the process of automation.

Release Management and version is very important

When you are done with automating a small part or the entire process, you should give it enough time for the operations team to adjust to it. They should get used to the number updates required by the automated system. The version of the server has to be the latest and in sync with those that work well with the automated tools. Otherwise, you will have to face a lot of problems.

Automation

The final step of how DevOps works is automation. This is the best and the most important part of DevOps. You will be converting all the manual tasks in automatic. All the tasks of the fours stages Configuration Management, Build and Test systems, Application Deployment, and Monitoring will be automated with the help of relevant tools that enhance the performance.

Monitoring the performance of the automated tasks

Your job is not done with automating the process or work flows. There will still be some hurdles coming up and you should be monitoring them to enhance the performance. You will have to collect different kinds of metrics from the outputs of the automated process. Monitoring these metrics and comparing them with the manual results will help you know the progress. At the same time, when you keep doing it, then you will be able to understand the process better and you will be able to frame the next step. The next step would how to increase the output.

Knowledge sharing plays a vital role

You are not yet done, until and unless development and the operation teams are sharing their knowledge. When you are able to share with each other, then you will be able to gain knowledge about others work and also will be able to do your part of the job in a much better way.

Chapter 4. Principles Of DevOps

When you are automating all the operations in your organization, then there would be a list of principles that you should follow to make sure that automation process is smooth and as per requirement. Here are a few principles that will speed up the automation process.

1.) Test them as often as possible

Yes, it is very important to start the testing process for the automated process immediately and also keep testing them as often as possible for you. You will be able to find the defects if you are running the automated test cases in the development area, try some mock code testing and try to minimize the defects as and when you find them.

2.) Keep improving your DevOps process

Many people feel that they are done with the DevOps process as and when they are done with the automation. But there is another interesting fact that you should always remember when you are implementing the DevOps. The fact is there is no end to the DevOps process and the answer why there is no end is simple. You are going for the DevOps process in order to enhance the performance and increase the output. So, enhancing the performance of anything is an ever ending process and generating more output is also something that very organization keep striving for. So, where is the end of the DevOps process in your organization.

3.) Automate everything that is possible

When you are going for automation, then you should make sure that you are automating the entire process. Some people always try by automating only a few stages of operation. They do this way, in order to check if this DevOps process of working for their organization or not, but how will you be able to decide if you are not automating the entire.

4.) Working together is very important

Yes, when you have a look at you’re the teams in your organization, then you will be able to notice the silo mentality. But this can be a very big problem in your organization and you should know how to handle this kind of situation. Be it development team and operation, client and partners, test team and development, coordination is very important. All the teams would work together and this will help in improving the process of automation and also you will get to about each other work.

5.) Dividing the process is very important

Complexity of the process is something that is going to hamper the performance of your process. When you are running some complex process, then it is going to take a lot of time for it to run. And you will also face a lot of problems even for checking the defects and modifying them as well. So, it is always a good idea to divide the complex process into smaller simple processes and then run them for testing. This will definitely save a lot of time for you and also will help in correcting the defects in an effectively.

6.) Reverse the development process

Normally, most of the issues that you get to see are with the interface. But once you have decided the entire working piece, then it is going to be really tough to make the changes to the interface and the inner code as well. So, you will always have to try the other way. First test all the interfaces and when you are sure that they are fine, then you can start working on the important inner code. This is going to be very helpful in reducing the rework that you will have to do.

7.) Experimenting is very important

When you are automating your entire process, you will have to use different kinds of tools at each stage. You must be aware that there are many kinds of tools available for each stage. So, you should always keep experimenting with different tools and check the performance. This will help you in knowing which tool is the best one.

Following these simple 7 principles will help in speeding up the automation process of development and operations.

Chapter 5. Tips And Tricks For Making DevOps Process Better

With so many organizations implementing the DevOps and enjoying the benefits, there are many traditional organizations waiting to enjoy its benefits. When there is a huge number of benefits of using something in your organization and increasing the profits/Output, then everyone will want to try it.

So that you had looked at a lot of information about the DevOps in this book, now it is time to have a look at the tips and tricks that are going to work really well. These tips are really useful for and hence you should definitely try them when you are applying the DevOps process in your organization.

1.) When you are implementing the DevOps process, make sure that it is not just the mindset of the teams that should work together, but there is another point to keep in mind. When you are doing it for the first time, make sure that you are choosing the right tools for your automation process and you should be very careful with all stages.

2.) Along with selecting the right tool for each stage of DevOps, you should also select one good pilot process for implementing the DevOps process. If you are doing it for the first time, then you should not choose the most complex or important process of your organization. Selecting the right process places an important role.

3.) The size of the project team will also impact the DevOps. The project team size has to be at least 30 members. You will not be able to see the desired impact or momentum in the process.

4.) While selecting the pilot process for DevOps, you are going to select the most simple project, but if you want to see the real magic of the DevOps process, then you will have to apply it in the most critical process. This is how you will be able to understand the process of automation, that means you will be able to enjoy how a very complex project is working well in a very simple way.

5.) All the projects that are new, require new technology in them. The current market is focusing in being very competitive and adopting only the latest technology in their project. If your projects are also using the latest technology in them, then the DevOps is best for your projects.

6.) There will be many back end processes running in your project. But these back end processes do not show up too many changes frequently and hence they are not the apt once for the DevOps. You should always concentrate on those applications which show up frequent changes and hence you will be able to see the improvement of using DevOps.

7.) When you are implementing DevOps, then you should make sure that all the tools used are working well.

8.) There will be some projects which are going to take a lot of time to reach the release stage. You should apply the DevOps process in these project because you will not have to spend too much of time for just one project.

9.) Same with the testing process as well. When you have to go for regression testing, that means spending a lot of time in testing the same part of the code again and again, then automating it will help you in saving a lot of time and manpower as well.

10.) If you are new to the DevOps, then you will come across many unknown errors and they are really hard to identify. But one thing that you should remember is, there is nothing that can get stopped just like that, without any kind of cause. There might be some changes made in the done or environment that has caused this problem. A perfect DevOps engineer will definitely have to work on the root cause of it, rather than solving the problem just for it work for that instance.

11.) Complex architecture and infrastructure are the very important parts of todays applications. So there are chances that are will be many problems with a complex project. When you think that there is an issue in an application, then you should make sure that you are able to identify all the factors responsible for it. These factors can be many or just a few, but when the problem causing factors are too many, then the chances of the problem spreading is high. So, before the problem grows, you will have to identify them and fix them.

12.) Handling the tickets is also a job of an expert. When the DevOps process is implemented in your organization, then you should first have a support team to solve the issue arising after its implementation. Tickets will be raised by the particular team when there is some problem in their tool. You should be able to understand and prioritize the tickets while solving. Some problems may be interrelated and some may be very complex. So, when they are interrelated, then try to solve the problem in steps like the one that has to be solved first. If it is a very complex problem, then you should try to understand it well before attempting to solve the ticket.

13.) When you are implementing the DevOps for the first time, then make sure that you are checking everything well. If everything looks just perfect, then take some time and recheck it again. You can do the check again after one or two days and keep repeating this process of checking until and unless you are very very confident about the performance. You should never feel that “ I should have checked it at least one more time, and this would not have happened”. You normally feel this when something big happens.

14.) You should always check from the end user’s point of view as well. Yes, many experienced and expert DevOps developer schedule maintenance very frequently and for many different reasons. The reasons could be like upgrading the infrastructure or running out the new code. There is also one strong reason behind it. The reason is to check how the code is working after a downtime. Yes, clients place may experience download and it is important to understand how it is going to work after downtime.

Chapter 6. Benefits Of Implementing DevOps Process

A.) The development cycle of your project is going to decrease drastically. Yes, when you are implementing DevOps, you will be enhancing the communication and collaboration between all the teams or to be specific it is between the development and operations team. That means, the time taken for transforming developer code into an executable code decreases due to good coordination and hence the development cycle is less.

B.) The amount of work that can be done is going to increase when then development cycle is decreasing. Yes, the same process which took 3 to 4 months to change from engineer code to production code, will now take just a single. If you are able to select the right tool, then the time can be just a few hours. So, now you will be able to deploy many more infrastructures and hence the output also increases.

C.) The DevOps is made using the Agile programming and the principles of Agile programming are very good which are very helpful in easy problem detection. The Agile programming breaks the complex code base into many simple codes, and that is one of the reasons for easy error detection.

D.) The DevOps process is done after taking the operational part into consideration. The error detection is made easy and development cycle is also reduced, and that will directly reduce the deployment failures. This is one of the best process that many organizations are trying to implement.

E.) The error detection is simplified and the number of errors that occur are also minimized, but error is something no one can avoid even after being very careful or re-checking it again and again. But there is one solution for it and that is, the error resolution is faster with the DevOps process.

F.) The effectiveness of each process that is implemented using DevOps is high. In any kind of business or for any organization Time is Money and no one will be able to deny it at any cost. You will be able to make best use of the time with DevOps, that means you will be able to deliver faster than before and hence it is profit to the businessman.

G.) You are always working with the updated and latest technology. Yes, many organizations use the latest technology in developing any kind of project as the demand of many clients and that is very important to stay in competition with the other competitors. DevOps always works better when you are using the latest tools and technology. So, you can be assured that the output is always going to be the best.

H.) Your teams start enjoying their jobs. Yes, job satisfaction is very important for every employee and that is available when the DevOps is being implemented. All the teams start working together. Can you imagine a world where all developers, operations team, testers, system administrators and others work together. You will have a lot of knowledge sharing and that is something that you will enjoy a lot.

I.) The security of the entire process is increased and you will not face any kind of threat. Many organizations who have not implemented DevOps yet are feared about the entire process automation and increased release cycles. But security is never a problem for those who are implementing DevOps.

J.) There are many tools available for automation and they are available for each stage of the life cycle of Devlops. If you want to try another tool or if you think the other tool might work, then you can definitely change the tool and there will not be any problem due to these changes. Trying different kinds of tools or the latest tools will help in improving the performance and effectiveness.

Final Words

There was a time when the developers and the operations team worked separately and there were many problems due to this. A lot of time was also when these teams had to coordinate with each. The communication between these teams was one of the major problems. After the release of the DevOps, this problem has been solved to a greater extent. The communication and collaboration between these two has increased and hence it is a very smooth and fast project running and faster release as well.

DevOps is something that has to be implemented by almost all the organization. The automated process is going to enhance the production and the output rate. This is going to add a lot of benefits to the pocket of the businessman. Before you get into this DevOps, you should first understand it very well and then plan the process of handling the problems that may arise due to the implementation of this DevOps. Choosing the right project for startup also matters a lot. Flow charts can be the best option for making the process automated. As a beginner and DevOps developer, you should first understand the requirements and then work on them to achieve better results, rather than starting the work on the project.

Thank You Page

I want to personally thank you for reading my book. I hope you found information in this book useful and I would be very grateful if you could leave your honest review about this book. I certainly want to thank you in advance for doing this.

If you have the time, you can check my other books too.