Hello folks, I'm Lavish Lekhari and in this blog, I'll be sharing about the "Evolution of DevOps". Every piece of information in this blog is based on the excellent conversation between Kunal Kushwaha & David Flanagan in one of the Open Source Cafes.
David Flanagan's Introduction - David Flanagan is a staff developer advocate with an experience of over 21 years at the infrastructure as code company called Pulumi, also he is the founder of Rawkode Academy where he focuses on making "Cloud Native" much more easier for everyone by providing the best Cloud-Native tutorials, walkthroughs, and Q&As.
This blog is an extract of David's conversation with Kunal on "Evolution of DevOps"
Kunal Kushwaha's Introduction - Kunal Kushwaha is a Developer Advocate at Civo, also he is the founder of Community Classroom and Kubeworld where he focuses on providing free & quality education to all by empowering communities via Open Source and Education and Kubeworld is an organization tailored towards professionals consisting of all the things related to cloud native.
David Flanagan's History of DevOps
David was just 18 years old in 2001 when he got his first programming job in which he was working for a small company in Scotland that built a ticketing system for horse race tracks where he wrote barcode scanners, epos tools, back-end server software, customer relationship management to connect all the things. The pain point of his job was the "Deployment" which looked like, He would be working on the daemon server which is written in C language and then compiling it for months and testing it for months on a Linux machine.
Looking for the ways to improve, in 2006, David was introduced to Puppet which was astonishing because it allowed users to automate their deployments of the software. It was a whole new level of automation where users can have something running on all the servers and in the case of any type of modifications, Puppet would detect that and revert it. Eventually, new software configuration management tools were introduced such as Chef, Ansible & Salt Stack. So, all of this amazing and a whole new level of automation and configuration management was really exciting for him apparently more and more people were getting interested in DevOps.
Rise of Automation
Talking about continuous tests, continuous integration, continuous deployment, continuous delivery, and all the other continuous processes are just fancy words that are shifting-left the certain aspects of the development pipeline. In order, that we do it very often to increase our velocity as well as to do things more confidently. (It's just like you're going six months ahead without doing a deploy, which means that you have approximately 9 billion things that have changed since the last deploy and that is the surface where things can go wrong).
"The quicker and the faster that we do our shipping of software there are less things to go wrong"
So, DevOps started at this automation phase where people realized they need to increase their confidence in order to get more sleep. We have to build a culture where we don't have silos within our development teams. Back in the time, we didn't have fancy automation machines that we have today which makes things way more convenient for us rather than making it something like: (explained with the help of a diagram in the image below) which is an improper, very gut-wrenching and not a very smart way or method.
As we mentioned some of the configuration management tools such as Puppet, Ansible, Chef, etc. earlier, which regularly manage, organize, handle (etc. and such other processes/tasks) by making sure what user has on one server and the same on the other server by looking for parity then increasing over lost and then breaking down silos which is one of the most important part of DevOps because it substantiates that Developers and Operations have shared their responsibilities.
Operations and Other Factors
So now as we have talked quite a lot about automation, Let's move to Operations and talk about it.
We still have a huge need and indispensable need of the people for Operations, as Developers like to think with the cloud. We apparently need to focus on other crucial & important things such as Security, Resiliency, Redundancy, Backup strategies, etc. Talking about this in-depth is that, Developers probably haven't gone down the beaten path before and our operators have. So, it's not about replacing "Ops" with people but rather knowing how to do such tasks by sharing responsibilities and building much more advanced and better platforms are one of the major reasons (in David's opinion) where we're perceiving a significant rise in Platform Engineering today. In this smooth, methodical & systematic running of DevOps for the last 10 years, we can discern that Developers are now thinking about infrastructure, redundancy, resiliency to scale , and more.
Starts with Automation → Achieving Goal → Never-Ending process.
Role of Agile
Many people often raised questions such as:
What do you mean by the adoption of Agile methodologies? What are those Agile methodologies?
Did Agile replace DevOps?
Do they work with each other?
& many other such questions because of the perplexity.
So, first let's talk about what Agile is, Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a "big bang" launch, an agile team delivers work in small, but consumable, increments. Requirements, plans, and results are evaluated continuously so teams have a natural mechanism for responding to change quickly.
(source - Atlassian)
Read more about Agile here.
Now we came to know about what Agile is, let's go back to our consequential discussion. So, DevOps and Agile work hand in hand, because if we consider DevOps to increase the velocity and confidence in an individual's or organization's deployment strategies; Agile brings all those factors to the management of the projects. In short, both DevOps and Agile are grown simultaneously but one is focused on the way that companies are structured, communicated, and processed & on the other hand, one is focused on Deployment, Automation, Developer Velocity, etc.
Moral - DevOps and Agile are harmonious together.
Challenges to Face
In this part, David explains some of the weaknesses and challenges that mostly organizations face while they are planning to adopt DevOps culture. The most crucial blunder in here is the reiteration of mistakes (aka challenges) that were repeatedly made whether it was adopted in Agile or DevOps (whether it was adopting cloud, kubernetes and containers). It's basically the "fear" when you try to embrace these better technologies for the following reasons:
1. Majority of people don't like changes.
(unless you're the one that's saying that "let's change this" because you understand the problem, but the people that haven't acknowledged or seen that problem don't understand it yet for why the change is taking place)
2. Developers are supposed to work and live within a comfortable environment.
(when people make suggestions, you're supposed to understand those suggestions and the problem itself. After understanding the problem, Talking and discussing about it with the team and the other people to get a conclusion of the solution which is highly efficient and effective)
Push people to the boundaries (friends, colleagues, team members, etc.) where they get really uncomfortable and manifest them (prove them/show them) that the thing "xyz" can work. Inspire people through turbulent times so its always fair to get comfortable and uncomfortable at times rather than pushing it back with a voice of negativity.
Moral - "Failure is inevitable and vital to grow"
One of the most often asked questions is that "How do we stay updated with the relevant tech-stacks (with the technology) as an individual and as an organization"?
David answer's this question; which is based on his personal way of going through it, looking after new things in the technology and how he interacts with them.
So, whenever he glimpses about something shiny or glossy, he mandatorily looks after it and play with it (basically checking it) because of the compulsion he has with the curiosity of testing, playing and working with new softwares, tools, tech-stacks and etc. To explain all of this in a single word, he is a T-Shaped developer and is very familiar to it.
(In-short "T-shaped" learning means "Learn something about everything and everything about something")
Back in the time (mid 2000's) the process was something like this: (image mentioned below)
After The DevOps was introduced and automation was adopted, The process become something like this: (image mentioned below)
In order to maintain the velocity of Developing/Building and finding a way (DevOps) to make its working more efficient as shown in image 2 is way better than as shown in image 1, we deprioritized a lot of other things in which one of the things were "Security" because back in the time, It wasn't possible to form a security audit log with every deploy. (because there are more than an average of 25-50 deploys or even more every day).
But in 2022 , Since we have a lot of new tools such as Gitlab, CI/CD pipelines and etc. we can now effectively record and audit all the security changes, occurrences and workings.
As the time passed by , tools and technologies were getting updated rapidly to increase efficiency of work that, developer has to do. With current tools, practices & technologies, A developer can now work on other important aspects of developing such as focusing on it's security, solving problem, framing it properly and etc. Things are showing improvements with open source toolings, especially when we manage services like AWS, GCP and many others.
In this part, David tells us about the things that he is interested in (currently) and will be looking forward to work and play around with them.
Micro-VM (micro virtual machine) is a virtual machine program that serves to isolate an untrusted computing operation from a computer's host operating system, which brings whole new level of security, also we get Kernel Level Isolation that containers don't bring.
Especially, In the Kubernetes context, we've never really seen the promise of the micro-kernel which is where you get an entire kernel for every request on an HTTP application.
So, Micro-VMs and Micro-Kernels are the things that David would personally love to see something about.
Since David is a huge advocate of event-driven systems and we've never really seen the mainstream adoption of event sourcing & EDS (event-driven systems). He is really into the event sourcing where it gets easier for developers to manage and orchestrate event-driven workloads through server-less systems and things like RedPanda & hopefully we'll do that more in the future, where we're seeing some cool stuff from AWS already in this regard with AWS step functions.(where we can write a state machine and each state has its own function that runs against)
Also, David is more into esoteric programming languages as they have become much more mainstream nowadays. For example languages such as Go-Lang and Rust will perceive in the sections of compartments in the future of System Programming, Web Developing, Server-less development and etc.
David's favorite language is Pony , check and read more about "Pony" here.
If you like this blog , make sure you thumb-it-up , follow and & connect to me on Twitter.
Thank you so much for reading this blog and connecting with all of us. We appreciate your time for it and would love to hear your feedback on this. (Mentioning Again) - Every piece of information in this blog is based on the excellent conversation between Kunal Kushwaha & David Flanagan in one of the Open Source Cafes. Therefore, it is an extract of it. Hope it was helpful and Have a great day ahead!