- What techniques and technologies do I need to know for DevOps?
- What are the prerequisites to learn DevOps?
- What is DevOps culture?
- PMP, Agile, AWS… what should I learn?
- What are the most used DevOps tools? What about open source?
- Where can I learn about DevOps?
- What other DevOps resources are there for staying up to date?
- Which professionals should I follow on the web?
- How can I get involved?
In the ten years since its first appearance, DevOps has increasingly become a crucial approach for the efficient management of software lifecycles. The term is a contraction of “Developer Operations” or alternatively “Development Operations”. However, there is no single technology that defines DevOps. It is, rather, a set of practices spanning software development, building, and testing on the one hand, with deployment, server config, and monitoring on the other. Added to this is the management of these cross-functional concerns. The role of the DevOps specialist is therefore an increasingly common career choice for those interested in an agile approach to administering the operational environment.
What techniques and technologies do I need to know for DevOps?
DevOps is characterized by a constellation of approaches or techniques, associated with agile software development. These include fast deployment, testing, continuous integration, collaboration, and cross-functionality. We will look at some of the specific tools in a later section, but here it is important to understand how these methodologies have developed. They have emerged from the challenges faced by software development more narrowly, to cover practices traditionally associated with systems administration.
The primary goals of Developer Operations are faster and more stable software development lifecycles. From agile methodologies, we have learned the importance of continuous integration (CI). CI ensures that no chunk of development work diverges too far from the trunk, with several code merges throughout the day and fewer unexpected code-conflicts to hold up the build. From a DevOps perspective, this entails means more release and deployment cycles, with automated configurations. Ultimately this means more stability in the overall process.
Important to this approach are infrastructure as code techniques (IaC). IaC creates machine-readable configurations for software deployment and management, as well as hardware provision. This gives much greater predictability, stability, and extensibility to the software operational environment.
Clearly, both these approaches rely on effective version control systems, and this is one of the key technologies that DevOps relies on. It renders all operations of the software cycle, from coding through to release and monitoring, collaborative, accountable, and reliable. By far the most common contemporary version control system is Git (and GitHub), and this forms the backbone of many DevOps infrastructures.
What are the prerequisites to learn DevOps?
Background knowledge of the software development industry at some level is vital for learning DevOps, but practitioners from many aspects of software development come to their DevOps career by different trajectories. As is often the case with emerging technologies, a general awareness of the field, combined with some specialist knowledge and a willingness to learn new technologies, will be a good situation to build your expertise.
If you have a few years’ experience as a software developer, you will be well-placed to step across to the more infrastructural concerns of DevOps, particularly if you are well-versed in agile methodologies and have knowledge of deployment technologies. Those with a background in sysadmin will have a stronger knowledge of hardware resources, and will likely have a good knowledge of software requirements and server cluster management, all of which are useful skills. Those with expertise in software management can also transition to Developer Operations if they have good technical skills, and their overview of the software lifecycle will be very useful.
In each of these cases, it will also be important to be open to working across older job divisions. DevOps unites two roles that traditionally were separate: development and operations. It is the willingness to harmonize these that brings its efficiencies.
Finally, experience with version control systems will serve you well. This is not just at a technical level, but also in the understanding of how a community of developers can work together and the operational advantages that collaborative integration brings.
What is DevOps culture?
As we have seen, DevOps is not simply a single definable practice or technology. We may call it a “set of practices”, but these practices are quite diverse. What then ties them together? There is something less technically defined here, something tied to the bigger picture that motivates the whole approach. That is DevOps culture.
We tend to use the word culture to denote a set of approaches or beliefs shared by a particular group of people. The word also indicates the concept of development in the broader sense, of cultivation. Both of these senses are apt for DevOps culture because they show both the sense in which DevOps is part of an increasingly important conceptualization of software development and also the extent to which it is, in itself, developing as an approach.
We can best characterize this culture as the crossing of three main areas: multi-functionality; collaboration; and the coder mindset. Gone are the days of a strict division of labor in the software development workplace. Everyone may have a specialty, but it is increasingly important also to have an awareness of the bigger picture.
This big picture thinking means that collaboration and communication are vital. This need not be in all the details, but everyone should be aware of the overall intents in the project. This means that there is a significant interpersonal aspect to Developer Operations.
Finally, the coder mindset means that collaborative work does not remain an aspiration. The DevOps approach aims to render processes transparent and accountable, so they can be scripted, version-controlled, and automated.
PMP, Agile, AWS… what should I learn?
If you’ve read this far, you’re likely already interested in DevOps, but you may be wondering whether it is the best move for your career. How does DevOps relate to agile, AWS, or PMP certification?
We’ll begin with agile, not least because agile shares with DevOps a leaning towards open-source technologies. In fact, DevOps owes a lot to agile. Ideas like automated testing, continuous integration, and rapid deployment all began with agile. In many ways the two methodologies are complementary. The main difference is that agile integrates aspects of the customer–developer relationship, with increased release iterations and feedback. DevOps, meanwhile, uses similar techniques to improve the integration of developer and IT operations.
AWS certification verifies skill sets that you will no doubt find useful for DevOps. Many Developer Operations specialists work extensively with the AWS cloud infrastructure. However, while AWS certification will likely be a benefit for your resumé, some in the open-source community have expressed questions about Amazon’s commitment to open-source values.
Similarly with PMP (Project Management Professional), while there is no reason not to get this certification, the approaches taught here are more aligned with older management paradigms. PMP is more focussed on project management in the traditional sense, which may be slightly detached from the concerns of developers on the ground. PMP may be better for legacy projects than the more dynamic approaches of agile and DevOps.
What are the most used DevOps tools? What about open source?
Unsurprisingly there are many tools that have become essential technical components for DevOps, or that have been devised specifically for it. These are just a few of the tools you’ll want to get to grips with to further your DevOps career.
Firstly, version control: Git remains the top source control software out there, usually with GitHub‘s hosted repositories, used by over 82% of developers. While GitHub is now owned by Microsoft, who charge for professional usage, Git itself remains free and open-source.
For CI, Jenkins is invaluable for delivering software projects and is also open-source. Its plugin framework means it can act as the centerpiece for your DevOps toolchain.
For testing, Selenium is worth looking at. Also open-source, it gives you a platform for automated testing in all the main programming languages.
Automating deployment, configuration, and management of server resources is a major part of DevOps, and the following four tools are all commonly used. Chef and Puppet both use Ruby-based DSLs to configure and manage your servers. Ansible and Terraform perform similar functions but use their own declarative languages for configuration. All four are widely used in the industry and are ideal for implementing IaC approaches.
Finally, we shouldn’t forget server monitoring. Another open-source solution, Nagios monitors and analyses log files, giving you early warning of problems before they become critical, and indicates resource limitations that may require new nodes for your server cluster.
Where can I learn about DevOps?
There are numerous learning resources for Developer Operations, both off and online. Books often provide the most thorough grounding in a field and DevOps is no exception. A great start is “The Devops Handbook”, by Kim, Dubois, and Willis. This book offers an introduction to both the technical aspects of DevOps as well as the culture. For learning about enterprise-level DevOps solutions, look at Sanjeev Sharma’s “DevOps Adoption Playbook.”
For real-life stories from DevOps experts, “DevOps Paradox: The truth about DevOps by the people on the front line” by Viktor Farcic is essential. It gives a real insight into DevOps culture and the human-level difficulties that you may encounter. For the technical side, an extremely useful book is “DevOps Troubleshooting” by Kyle Rankin. This text is specifically aimed at practitioners from a developer background. As the title suggests, it focusses on best practices for diagnosing and fixing operational problems.
For more interactive learning experiences, online tutorials are a good resource. JavaTpoint’s DevOps tutorials are a useful start, beginning with the fundamentals and extending to architecture, tools, and pipeline principles.
IntelliPaat’s DevOps tutorials are another good resource. They offer beginner-level tutorials as well as specific tools like Puppet, Ansible, and Jenkins. It is also worth checking the websites for Terraform, Chef, and the other tools mentioned above, as they usually provide good documentation and/or tutorials. For live online tutorials, try Squadex’s DevOps training.
What other DevOps resources are there for staying up to date?
Whether you’re a seasoned expert in Developer Operations, or just setting out on your learning path, there are myriad ways online for you to keep up to date with the latest news, developments, tips, and general chat. Being up to date is not only useful for keeping your knowledge fresh and in turn helping your career. These information sources can also open up opportunities for communication and employment. These may be your first calling point for entry into the DevOps community.
News sites and trusted blogs are a great way to catch up on all the latest DevOps developments. For starters, pay a visit to DevOps.com. Their blog has several posts a day on all things DevOps-related. There are also links to webinars, events, and communities, as well as related sites, making it an invaluable resource.
Other useful blogs include DevopsCube. Their blog is mostly dedicated to individual technologies and tools and they also have useful learning resources for Jenkins, Git, AWS, Docker, and more. DevOps Online is a UK-based news site with regular updates on products, security, finance, and other issues. It’s a useful window into how the industry is getting on.
Podcasts are another great way to keep up to date. For example, ArrestedDevOps has loads of insights from experts in the field, including a recent interview with Patrick Debois, the founder of DevOps. Similar resources can be found at DevOps Chat.
Which professionals should I follow on the web?
As you would expect, many DevOps professionals are active on Twitter and Facebook and their social media updates are a useful way to get a blow by blow account of how they operate. Of course, it’s also a valuable chance for you to interact and become part of the community. So who should you follow on social media? There are far too many to list in full, but here are just four suggestions to get you started.
Patrick Debois is responsible for the conference that unleashed DevOps on the world back in 2009. It is fair to say, then, that he is something of an authority on the subject. Importantly, he has not rested on his laurels and continues to work in the field, so his thoughts are very much still relevant.
Jennifer Davis is another major player in the DevOps community. She presents regularly on culture and technical issues and is a great resource for understanding how DevOps works in the tech industry.
As a practicing sysadmin, Thomas Limoncelli is valuable for insights into operations and systems admin from a practitioner’s point of view. He also has some useful commentary on DevOps culture.
Charity Majors is another Tweeter with extensive developer experience and offers many insights into the links between coding and wider engineering concerns.
Finally, you might also want to have a look at the Annual DevOps Awards. These awards honor everyone and everything from developers to software solutions and are a useful insight into the state of the art.
How can I get involved?
Learning and training is one thing, and these will certainly help to secure your first DevOps position. But to progress to a tech guru, you need to get involved in community activities and events. Take a look at the DevOps Institute. They are focussed on the human aspects of the field, particularly developing professional skills, ideas, and knowledge. They organize a series of one-day micro-conferences, each one dedicated to examining and developing a particular aspect of DevOps. They also offer training resources and a certification program.
Of course, there are many conferences globally dedicated to particular DevOps technologies. Video from some recent conferences is available at Digital Anarchist. Conferences are a great way to get an insight into how tech professionals think about their own work and the kind of issues they face. Hearing seasoned experts discuss their work from the perspective of development, rather than business imperatives, is a great way to cut through the jargon and really understand the terrain.
If you want to get a flavor of where it all came from, Devopsdays should be your focus. This conference was first held in Ghent, Belgium in 2009 and now travels the world spreading the DevOps gospel. If you want to get involved, they even invite you to organize your own Devopsdays conference in your home town.
Since its inception in 2009, DevOps has grown and grown, and the wealth of resources for learning, certification, and community is a testament to the importance it now holds in the software development world. Sometimes, however, it can be hard to keep track of all that’s going on in the expanding field of DevOps, no matter what stage of your career you’re at. One simple way is to sign up for the Codemotion newsletter, using the toolbox at the end of this post. We’re driven by the perspectives of developers rather than businessmen, and we’ll keep you up to date with the latest news and opportunities in the tech community.