 Growing your software business into a unicorn is tough. The question of the day is how to build a product fast, while maintaining its quality and improve it over time. What's the key? Automation is key, says Brad Arkin, commenting on the use of DevOps in terms of Adobe Digital Transformation. Indeed, Mr. Arkin. Hello, my name is Igor Pavlenko and I'm a Quality Assurance Competence Leader at AltaxSoc. In this series of videos, I'll explain what DevOps is, what the main stages and principles of it are, and how to implement DevOps in your company. And today, we'll try to understand the essence of DevOps and why it's important to software businesses. Let's get started with the basics. DevOps is a relatively new practice. It encourages development and operations teams to collaborate closer. We can think of DevOps as a natural extension of agile, because they are based on similar principles. In agile, there are five stages of software product development, planning and product design, coding, testing, deployment, and finally, operations and feedback gathering. Each of the stages is handled by a dedicated team. So developers make code, that's tested by a testing team, and then deployed and monitored by the IT operations team. The code is split into chunks, they are developed and tested in sprints. This makes the process manageable and flexible to changes. And that sounds great, that's what agile is mostly about. Except for a few things. The cycle of design, coding and testing performed on a big portion of code takes too much time. Consider also reiterations, as we need to fix the bugs in the process. When a given feature is production ready, we might already be way behind our competitors. But as far as we release a large chunk of code at once, we'll also be in trouble with fixing numerous bugs. DevOps speeds up the process by means of developing and testing much smaller chunks of code, and then deploying them. What makes DevOps superior is that we can release more often, test more precisely and receive feedback from production on the go. Eventually, we are delivering more value to our customer more often. So how do we achieve this? The main principles of DevOps are explained in an acronym CAMS, Culture, Automation, Measurement and Sharing. Let's look at every aspect in detail. To get all the benefits of DevOps, first we need to bridge the gap between development, QA and operations by setting the right culture. In a nutshell, DevOps suggests having shared responsibilities between production and development team members. This guarantees that the development team will be involved in software maintenance on the production, while understanding deployment requirements better. The IT team, in its turn, can have a grasp on the functional needs of a system. Another important cultural trait DevOps is centered around a business-oriented mindset of all team members. Basically, we are removing any silencing communication between the team members and stakeholders. That gives us a better understanding of business objectives and makes sure that the team takes personal responsibility for product success. The backbone of DevOps is the practices of continuous delivery and continuous integration. They mean that we constantly push code to testing and deliver it to production. Unlike traditional deployment of large chunks of code, in DevOps we can deploy each time there is a production-ready bit of code. Frequent updates make it vital to run tests faster and monitor code on production, which leads us to the general idea of automating the whole pipeline. So, in DevOps, this is done by creating pipelines that perform code testing, integration, deployment, monitoring, and feedback exchange automatically. With a small percentage of manual effort for testing and deployment, numbers my skyrocket. That's valid not only for enterprises, but also for relatively small companies, like Preply, reporting over 100 deploys a day. Or another example. After migrating its services on AWS cloud and deploying DevOps practices, Amazon reported code deploys once every 11.6 seconds, which resulted in more than 1000 of deployments sent into the production in busy hours. Monitoring the application performance with all the vital KPIs is the final stage of DevOps. The automation of a feedback loop will provide valuable insights about the features put on production. As we are dealing with smaller chunks of code and deploy them right away, the culprits are much easier to spot and fix. The value of feedback can't be overrated. Not only does your product receive feedback, but also the team themselves. From the cultural standpoint, DevOps entails that the members of your cross-functional team will share information between each other to stay engaged in the production. So, wrapping it all up, what exact benefits does DevOps give to your product team? First of all, speed. This is achieved with the rapid delivery that helps your DevOps team quickly launch updates responding to the competition and customer's needs. Not only release-wise, but bug-fix-wise also. The sooner the code gets on production, the earlier you can evaluate its performance and receive portioned feedback. Then, consistent reliability. Yes, I understand that code reliability always depends on your individual approach to coding and testing, but DevOps is designed to provide you with as much information as possible on what you program. Small chunks of code are easier to test, and automated testing makes it even better. After deployment, a feedback loop also brings value, as the whole team can instantly see the result, spot weaknesses, and fix them. All changes in code and production infrastructure settings are managed by version control systems. It's easy to roll back to the previous version if something goes wrong. DevOps and cloud infrastructure go hand-in-hand. That's why it's valid to say that we can scale our infrastructure more easily. A server in the cloud can be scaled to allocate more computing power when it's necessary. DevOps practice helps understand what capacity will be required. Devs and apps working together are able to understand system requirements precisely and scale the system with each small release. By the way, the communication is an advantage itself, in case you like to talk. Sharing the responsibilities and existing in a single workflow, the information becomes more accessible inside the DevOps team. The central point of a successful collaboration between developers and operations is a business-oriented mindset and culture inside the team. But while DevOps presents opportunities to improve the overall development quality, it doesn't give a competitive advantage directly. So it always depends on how exactly you're going to implement it for your software business. That would be the topic for our future videos. And in the next video, we're going to explore the development part of DevOps. Namely, we'll look at the peculiarities and stages of the process and go more in-depth on the continuous development principles. Stay tuned and see you next time.