From the course: Getting Started with Azure DevOps for Non-Programmers
Who maintains software—and how—in the modern workplace - Azure Tutorial
From the course: Getting Started with Azure DevOps for Non-Programmers
Who maintains software—and how—in the modern workplace
- [Instructor] So we've looked at software development, which might be extending or replacing existing software or creating something completely new. But let's not forget the work that goes into keeping software running. This is the world of software operations. It's less visible and glamorous than software development, but no less important. The work is not finished when you release your software. That's like buying a house and thinking you will never need to clean, decorate, or maintain it. There are operational teams who sit within IT, who look after the servers and the databases to keep your app running. Let's say your whole company has been subject to cyber attacks, and you need to upgrade all of your security. The operations teams make that happen while keeping the lights on for your app. So what's a server and database anyway? These words are bandied about, but most people don't really know what they mean or how they eat through man hours at work. A server is a computer. If you are watching this video on a laptop, that computer could be used as a server. A server is not a special kind of machine. It's defined by the use to which you put it. A server serves data. Its purpose is to send data out to people who request it. Every time you visit a website, you are issuing a request to a server to send you the website files. Now, let's say you've arrived at the homepage, so you've received an HTML file to your browser and probably a series of image files. Now, if you log into your an account of some kind, you are also interacting with the database, which is checking your username and password against a list of allowed accounts. When did your phone last ask you to upgrade your operating system? Did you have to plug it in, restart it, take some time out of your data, pander to the phone's needs to achieve your upgrade? While all computers are the same and servers are no exception, they need upgrades to operating systems. They need better antivirus software. Meanwhile, databases change versions. Programming languages themselves change versions, and sometimes they aren't backed compatible. This is the painful cost of progress. If you create an app, release it and never make any changes to it, eventually, that app will stop working. Because it depends upon programming languages, operating systems, and database versions that become obsolete. If you get into too much of this technical debt, by ignoring these changes, you might have to entirely redevelop your app. But if you keep on top of the changing environment, you will find just small things that stop working i.e. bugs until you recode certain aspects of your app. So always hang back from blaming bugs on your development teams. Sometimes they simply spring into life because a so-called upgrade has changed how something works. So who does the operations? Traditionally, there were separate development and operations teams. Although sometimes nowadays the operations are sorted out by development teams. There isn't a clear winner here in terms of organizational setup, in my opinion. If your developers look after the operations, the advantage is that they know all the code so they can fix bugs much more easily. Plus, they know what's being developed right now, and they can plan among themselves when to upgrade what. It is rare that one thing can be upgraded in isolation. It's like dominoes with one upgrade necessitating another. The disadvantage of your developers running your operations is that you will have periods of work called sprints in the world of Azure DevOps that are taken up with operational work, leaving your business teams frustrated that nothing is happening and nobody is doing anything. We are used to seeing new wizzy features from our development teams, but our operations teams don't have that luxury. Operational work can dramatically slow down development. Meanwhile, if your operational work is done by a separate ops team, the advantage is clear in that your developers can continue to develop. However, then you waste time coordinating between the development and operations teams. Your developers are still going to start finding bugs when your operations teams upgrade your server or database or introduce new security. Managing this tension between development and operations teams is DevOps, a crucial concept for this course. Azure DevOps is Microsoft's offering to try to manage these conflicts, and it does a very good job. In fact, ADO can be used for far more than software. It is great for organizing small pieces of work across remote teams and could be used for anything with a predefined process from running a hospital to organizing a concert. Next up, we will look at how Azure DevOps seeks to manage the competing priorities of development and operations.