How to learn DevOps is a most often asked question today yet it is difficult to find an unbiased answer anywhere. Mostly you will find vendors trying to sell you products or courses. This guide will attempt to offer a beginner a good list of what to learn and where to find good resource to learn DevOps.
What is DevOps ?
It’s an elephant. Like in the elephant and the blind men story. So nobody, at least, for a long time could come up with or agree upon a definition of DevOps. So to understand the definition of DevOps a little background helps. Initially, and even now in lots of places, Developer and Operations are two different roles. Developer develops an application. He is responsible for planning the application, including designing it, architecting it, developing it etc. At some point he needs infrastructure. So he goes to systems guys who immediately point out that he should have come to them earlier and now his infrastructure will probably be late. To developer this delay is unacceptable. How long does getting a bunch of servers take ? To infrastructure guys the developer is being unreasonable. What does he understand ? They all go to Operations guy who now has to find capacity to support this application. Why didn’t they come to him while the application was being planned ? And on and on it goes. To overcome these difficulties slowly the role of infrastructure and operations was merged. Also Developers started involving Operations early in projects. Operations in turn started providing tools like continuous integration and continuous Delivery to ease the developer load. Further automation lead to virtualization and more coöperation with containers. More trust developed between Developers and Operations and the roles started overlapping and thus the role of DevOps was formed. So beyond a co-operation between the development and operations team, a series of common tools are found at any organization that implements the DevOps culture.
Great ! What Tools ?
Source Code Management
SCM is used by developers to version their source code to support version history and for easy roll back incase something horrible happens. The most popular SCM among DevOps crowd is git. However you will find a lot of places use other SCMs too. For details on Version Control tools check out our post. You can check out our post on branching models.
You have to know scripting because you will be doing a lot of automation. Shell scripting will always be your bread and butter. You can find good sources on bash scripting by cyberciti. Ruby is also very popular among DevOps companies. You can start quickly with Ruby by actually trying it out in your browser. For complete Ruby experience Pragmatic programmer Guide is still the best in my opinion. It’s how I learned Ruby. For Python look Steven Thurlow’s tutorial.Google also has an excellent Python course. I also suggest having a look at the Go language since most of the Docker backend automation is done in Go. Moreover, in case you are totally new to DevOps, Docker is essentially a software platform that can be used to simplify the process of building, running, managing, and distributing applications. It does this by virtualizing the operating system of the computer on which it is installed. The machine on which Docker has been installed can be thought of as a Docker Host. With this in mind, whenever an application is deployed on the host, this creates a logical entity to host that application. In Docker terminology, this entity is referred to as a Docker Container. You can learn more about docker containerization by taking a look at some of the fantastic web hosting resources available online. At first, getting to grips with Docker can be a challenge, but the more experience that you can get, the easier it becomes.
Continuous Integration Tools
For a detailed rundown of all the available CI tools on the market checkout our article on Continuous Integration tools. Jenkins is the most favored tool on the market. For a good tutorial look check out the Vogella site (do support them via donations). If you want to run Jenkins from docker, you can read our post. For TeamCity tutorial check this post specifically for NuGet integration. JetBrains website also has good resources. However if you are working at a startup chances are you will encounter a PaaS CI tools like Travis, Circle, Codeship or Semaphore. Their respective websites have excellent tutorials and guides for beginners.
Vagrant is a favorite for quickly spinning out servers. Docker is also good for creating and scaling services. To get started with Docker, check out Docker – Beginner’s tutorial but also keep an eye on the official documentation because new features are added regularly. At the backend there is always a virtual host provider like Oracle VirtualBox, LXC, etc. VMWare is also used in lots of places.
For DevOps you will mostly find hosting in clouds. You can read through the official AWS tutorial or step-by-step instructions with screenshots. For Azure you can find official documentation here. Tutorial point also has a excellent tutorial on Azure. For OpenShift you can look at official documentation here.DZone has a nice article on how to create your first app with OpenShift and Eclipse.. You can even deploy your own cloud as shown in this post written by your’s truly. Recently there is a shift toward software that manage multiple clouds like Walmartlabs OneOps or Netflix’s Spinnaker. You could look into those.
Provisioning means automatically constructing software or server for a user to use without any manual steps. Provisioning is also used as an means Change Management but we are getting ahead of ourselves. There are various provisioning softwares available out there however for DevOps some are favorite like Chef and Ansible. The official Chef tutorials are quite good. And youtube has a good video playlist for learning Chef. Ansible was bought by RedHat last year. A good tutorial can be found on servers for hackers. Another good tutorial can also be found on Linode. And of course let’s not forget Puppet. A few good tutorial are on Example 42 and Digital Ocean . Saltstack also seems to be very popular so you can find a good tutorial for it on Digital Ocean Community(DOC)and this page.
Nagios is the most widely used monitoring tool and freely available. You can learn about it on Tux Radar and again on DOC. Another good monitoring software that is widely used is Zabbix. You can find good resources on DOC and on HowToForge. There are also a ton of commercial software in this arena that I am deliberately not covering. Two things you should know are AWS CloudWatch and StackDriver for Google.
All the servers and all the applications running on all the servers produce a lot of log files. It is prudent to deploy an log aggregation solution on all the server that not only channels all the logs to a central place but is also capable of providing good analysis of the log files. Two software are worth mentioning in this area. Splunk, although commercial is very widely used. Learn more about it on splunk’s website and on meta guides. You can also download the enterprise edition for free if you want to learn. The only catch is it won’t index more than 500MB/day which is OK in a test environment. That is how I learned Splunk. The second is Logstash. You can learn more about Logstash on elastic’s website and the geek stuff has a excellent tutorial. You will usually hear logstash and kibanna spoken in the same sentence. Kibanna is a frontend usually installed along with logstash. Read more about it on DOC.
Is that it ?
Not quite. Besides these you will come across either PaaS tools or custom developed tools that you will have to deal with. You will have to be a quick learner and have very short learning periods to come up to speed with these tools. Essentially you will have to be a self-starter and have to know what RTFM is all about. You will also have to be creative and come up with unique solutions and think out of the box pretty much all the time.
What else should I know ?
Lastly remember DevOps was not developed in isolation. For better, or worse, it developed from the dissatisfaction of the waterfall model and the old ways of doing things. It would be very foolish to jump into DevOps without knowing fully well the theory behind Release Management, Change Management, Configuration Management, ITILv3,Branch and Merge, Release Cycles, etc. For a good explanation of these things look this resource aggregated and managed by Electric Cloud.
Have questions for me ? Please leave a comment below.
Nilesh has 17 years of professional experience out of which 5 years he worked as a System and Network Administrators and 13 years as Change and Release manager. He has worked all of his career in the Financial industry for major Financial Institutions, Banks, Hedge Funds and other Super Villains.
He dreams of retiring on a beach with a beer and a banana.