Cloud native applications are designed to be maintained by infrastructure, and cloud native infrastructure is designed to be maintained by applications. With traditional infrastructure, the majority of the work to schedule, maintain, and upgrade applications is done by humans. This can include manually running services on individual hosts or defining a snapshot of infrastructure and applications in automation tools.
But if infrastructure can be managed by applications and at the same time manage the applications, then infrastructure tooling becomes just another application. The responsibilities engineers have with infrastructure can be expressed in the reconciler pattern and built into applications that run on that infrastructure. This lesson will address how to run those applications, or any application, on the infrastructure.
As discussed earlier, it’s important to keep your infrastructure and applications simple. A common way to manage complexity in applications is to break them apart into small, understandable components. We usually accomplish this by creating single-purpose services,1 or breaking out code into a series of event-triggered functions.2
The proliferation of smaller, deployable units can be overwhelming for even the most automated infrastructure. The applications need to become cloud native before they can be managed at scale.
This lesson will not help you build the next great app, but it should give you some starting points ...