Summer launches her web browser, enters the URL for her company’s business analytics application, and voilà — immediately, her browser is filled with beautiful charts, graphs, and statistics loaded from millions of data points.
Meanwhile, Kai navigates to an e-commerce application and struggles to purchase a pair of shoes. Half of the product images in his search results fail to load, and when he finally manages to add an item and click the checkout button, nothing happens.
What could cause such drastically different experiences when using web applications? Often, the answer lies in how businesses manage their infrastructure.
Recall that infrastructure is the set of hardware and software components used to develop, test, and deploy applications. Managing this infrastructure involves quite a number of tasks.
- Hardware needs to be installed and maintained.
- Thought must be given to power and cooling.
- Networks and databases need to be configured.
- Hardware failures and cyber-attacks are serious concerns with any infrastructure.
Dealing with all of these things is a tall task — even for seasoned professionals! While there are various types of infrastructure and methodologies for managing it, with DevOps, certain practices have become the norm.
In this lesson, we’ll explore the ways that infrastructure has traditionally been managed, as well as DevOps practices that address the common issues with traditional infrastructure management. The main topics we will cover are:
- Scaling Infrastructure
- In-house Infrastructure
- Infrastructure as Code
- Cloud Infrastructure
Before we dive in, let’s get a feel for the importance of properly managing infrastructure.
Take a look at the web application here. Every user of the application is represented by a colored ball that bounces around the screen. Pay attention to the speed of the balls and the overall experience of the app in its default state.
Play with the slider included in the app. It simulates adding more users to the application. What is the experience as more users are added? Does the application maintain the same performance?
In this exercise, we saw the symptoms of an application with poorly managed infrastructure. Adding more users caused the speed of the application to slow dramatically. In the next exercise, we’ll explore a key concept related to combating these kinds of experiences — scalability.