It’s been a long time I heard about DevOps but the first time I had my first course about it was two weeks ago. I’m not a master of the topic but I try anyway to write down something very basic for whom may need it.
I work with DevOps practices every day since January 2019 and probably writing about them will help me to check what I learned in these months. I believe in the "learning by teaching" idea.
DevOps is not a tool, is not a programming language, neither a super secret dark magic. DevOps is a new and smarter way to do things in software development.
To be precise, DevOps is a set of practices that help to reach the goal of this movement: reducing the time between the ideation phase of a product and its release in production to the customer (or end user).
Those practices are a combination of software development (coding, testing, ...) and operations (deploying, monitoring, …).
DevOps concepts work very fine with the Agile Methodology and today they’re widely adopted together to accomplish the hard work of continuous delivery (small and frequent releases of software).
DevOps is also a mindset. It aims to remove silos between software development and operations teams and replace this "isolation" with cross-functional teams.
I can refer to my personal situation at work: I’m part of a team made of 9 people and within us you can find software engineers, QA engineers and operation staff. We work together and in sync to deliver the software: planning (understand what the customer needs), development, testing and deploying happen all in our team.
Our work, with the work of other teams, creates something very awesome called pipeline.
This way of working comes with several strong points such interdisciplinarity, the team work and the high quality of the product. And all of this, probably, couldn't happen without the DevOps culture.
As I said, DevOps does not mean tools but we need tools to operate DevOps. Tools like Jenkins (continuous integration), Docker (containerisation) and Nagios (monitoring) help to automate processes in software delivery. Automation is very important in this field: more the process is automated and more it’s error-free (we're all humans!) and faster.