What is DevOps? | CI/CD | Everything You Need to Know For 2022

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey what's up everybody my name is moss and in this video we are going to answer the question what is devops i'm going to give you the short answer of what devops is right away and then if you'd like a longer explanation you can stick around for the rest of the video in short devops is a cultural philosophy and a set of practices that includes people processes and technology to continuously and reliably deliver high quality software efficiently now that definition of devops should sound pretty familiar to you and you've probably seen similar definitions in articles on the internet and maybe even other videos on youtube and i don't think that there's anything special about this definition but i feel like a lot of the videos and explanations of devops don't frame the discussion with the important historical context of how software development has evolved over the years so that's exactly what i'll try to do in this video is provide the events and the circumstances that led to devops as we know it today so if you're interested in learning more let's get started so let's take a trip back in time 20 years ago or so back in the days when we didn't have cloud computing services like aws gcp or azure when it came to sourcing infrastructure to host your software on you had limited options your first option to host software was at home using a home lab or maybe a desktop computer this obviously is not a reliable solution but it might be okay if you're an independent developer who's not running a business the second option was to build your own data center however building and maintaining a data center is hard work not to mention it's also very expensive however this was still a viable option for very large companies and possibly a justified business decision the last option was to outsource to a company that could host your software application in their own data center and this was an ideal option for small to medium-sized companies however the business relationship between the organization and the vendor hosting the organization software included a rigid and cumbersome process on how to deliver software to the vendor and deploy on their infrastructure the vendor had strict downtime and maintenance windows and charged expensive fees to deploy software outside of these windows and the client often didn't have direct access to the vendor's infrastructure this created a boundary between the client's development team and the vendor's operation team and this boundary came to be known as the wall of confusion operation teams knew little about the software they were installing and configuring on their infrastructure likewise development teams had very little insight into the performance of the infrastructure and the software following a release if infrastructure started suffering from memory pressure after a release did the software need to be on more powerful infrastructure or was there a memory leak caused by changes in the new release issues like this were at the source of a lot of conflict between operations and development teams the wall of confusion had many negative effects it resulted in very long feedback loops when issues came up there was complicated triaging processes across various ticketing systems and emailing back and forth between companies and there was rarely direct interaction between developers and system administrators communication was mostly proxied through project managers supervisors and similar points of contact so multiple long email threads and lack of transparency into processes led to exceedingly long resolution times on bugs and operational issues and what's worse is that many of these problems were not isolated to outsourcing your hosting solution even when hosting your own data center internal development and operations teams still had the same kind of issues so the motivation for devops stems from this friction between the people who developed software and the people who hosted and maintained that software so what changed two kinds of changes happened technology improved and people changed the way they worked both of these changes happened in parallel and it's important to note that they complemented each other some technology improvements enabled new ways of working and people who are already motivated to change how they worked utilize those technologies to drive the change when i talk about these changes just keep in mind that the changes are not necessarily listed in chronological order in addition this is my opinion on what changes had the most impact and led to today's devops model based on my relatively short but diverse experience in the industry self-service cloud computing services and the beginning of infrastructure as a service had the highest technological impact on reducing friction specifically between development and operations teams it completely changed the business relationship between operations and development teams cloud computing services leveraged virtualization technologies and gave their clients sandbox networks that they had full control over and access to while at the same time abstracting the complexity of provisioning and managing infrastructure in a data center cloud computing services offered self-service portals where their clients could provision infrastructure and access previously provisioned infrastructure development teams could now release on-demand and scale infrastructure as needed and on-demand they could also monitor infrastructure in applications deployed on infrastructure more easily and cloud services offered a flexible pay-as-you-go model the next technological improvement is decentralized version control systems specifically git this improvement has less to do with the relationship between development and operations teams centralized version control systems often required a lot of manual integration of feature branches into release branches engineers did not frequently merge changes and they worked on their branches for a long time meaning when it came to merge there was a lot of changes to merge the git version control system offered efficient and quick branching and merging branches was a lot easier with git's diffing system you could also backup local changes to the remote repository the benefits of git allowed developers to branch and merge changes more frequently and merging small chunks of code changes frequently made integration of changes easier the next technical improvement is collaboration in source code management systems specifically github introduced pull requests that provided a vehicle through which changes could be reviewed discussed approved or rejected poll requests encouraged frequent communication collaboration and visibility into changes although development teams were integrating small changes more frequently this was still a manual process but why not automate the integration process since developers were integrating smaller changes more frequently the integration process was more predictable and less likely to result in merge conflicts with this in mind automation engines like jenkins were released and while we're at it can we automatically test changes and deploy verified changes to different environments like staging and production in addition to automation engines like jenkins we also saw the introduction of test automation tools like selenium as well as automated configuration management tools like ansible chef and puppet it's also worth mentioning the practice of containerization using tools like docker which enabled standardized test and deployment environments as well as many other benefits the mindset of devops has now extended to other areas of the software development lifecycle including testing logging and monitoring services provided both development and operations teams insight into the health of their software and infrastructure as well as automated alerting systems collaboration in project management tools also improved over time tools like jira slack video conferencing and documentation software improved collaboration and communication within and between teams let's talk about how people and the way they worked changed over time and the cultural philosophy that was developed some technological improvements enabled new ways of working such as self-service cloud computing collaborative scm systems like github and even collaboration tools like slack zoom etc these technical improvements triggered more synchronous ad-hoc communication between people and you could say that some tools might have been inspired by agile methodology like pull requests in github or jira other tools like git enabled teams to be more agile but i don't think that when linus came up with git he said i need an agile version control system but what happened was that git provided benefits that encouraged an agile way of working people realize you shouldn't develop software like an assembly line with agile methodology teams moved from an assembly line process like waterfall where a function of the software development process tossed its output to the next function to a new iterative development process that involved all relevant parties in each step of the software development life cycle vertically sliced agile teams contained all the talent required to develop build test and deploy code developers started learning about operations and operations started learning more about the product and they shared responsibility for delivery of the software product agile methodology shortened release cycles with a focus on small deliverable chunks of value rather than really large releases that took sometimes 6 to 12 months to complete now that we have more historical context on what led to the devops model let's walk through the devops practices that exist today first let's discuss the culture of devops the devops model is about communication and collaboration shared responsibility of the software development lifecycle shorter feedback loops and delivering small chunks of value frequently transparency around business processes and related to transparency information sharing self-service and cross-functional teams outside of the devops cultural philosophy we have the practice of continuous integration continuous integration means that devops teams utilize continuous testing to automatically perform frequent integration of small changes into the remote repository the next practice is continuous testing which means that code changes are automatically and continually tested in a standardized environment at all phases of the delivery pipeline from local testing to system level tests in a production-like environment continuous delivery extends continuous integration and continuous testing by automatically creating deliverable software packages that can be released on demand and after code changes have been built and verified through continuous integration the goal is to always have a verified and deployment ready software build another common practice in devops is infrastructure as code and configuration management tools like terraform ansible pollumi etc related to infrastructure as code we have security as code and devsecops which seeks to automatically integrate security at each step of the software development lifecycle in addition to infrastructure as code and security as code we generally strive to define everything as code this is also referred to as x as code and when we define everything as code we should also apply the same practices like continuous integration and continuous testing to the text-based definitions and configurations of things like infrastructure and security policies this is where the concept of git ops comes from and finally we have monitoring logging and site reliability engineering devops teams should proactively monitor logs and metrics of deployed software and proactively monitor logs and metrics throughout the delivery pipeline in the words of ben trainer who pioneered site reliability engineering site reliability engineering is what happens when you ask a software engineer to design an operations function site reliability engineers are first responders when there's trouble in production and they write software to improve the reliability of the production systems you can probably see now that devops is no longer just about development and operations teams it has evolved to encompass much more than what previously started out as an effort to reduce friction between development and operations teams and devops isn't really a good term for what devops is anymore but unfortunately companies still use it as part of their titles for people who specialize in the devops practices that i previously listed the result is that depending on the company that you join being a devops engineer might mean that you're working with configuration management tools like ansible or it might mean that you're developing continuous integration pipelines for development teams rather than have a generic name like devops engineer companies should begin renaming those roles to focus on devops practices such as a continuous integration specialist or a continuous delivery specialist and some companies have already started doing this i hope this explanation of devops has given you a better understanding of how it came to be and what devops means in today's world of software development devops will continue to evolve and as time passes i'm sure that some of what i've said about what devops is today will undoubtedly change and it may even become irrelevant or obsolete if you have any feedback or questions on the video please let me know in the comments if you enjoyed the video please consider throwing a like on it and subscribing to the channel for more videos like this thanks for watching
Info
Channel: Tech and Beyond With Moss
Views: 192
Rating: undefined out of 5
Keywords: what is devops, devops tutorial, devops tools, devops training, learn devops free, learn devops online, devops tools 2022, devops training free, devops, what is devops for beginners, devops engineer, devops tools 2021, dev ops, devops explained, devops tutorial for beginners, cicd, continuous integration, continuous delivery, jenkins, gitlab ci, github actions, ci cd, trending devops tools 2021, devops training for beginners, ci cd explained
Id: ViNnV2W0pec
Channel Id: undefined
Length: 14min 15sec (855 seconds)
Published: Fri Dec 10 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.