For a long time we have built applications that were designed with a function. These are applications that have been bought off the shelf or built to deliver a business function. Legacy applications provide an interface tier for interaction by end-points, a middle layer such as an enterprise service bus, all supported by a database layer. These applications have been built with a traditional mindset that do not leverage software smarts. They were not built with a mindset of highly available, rapid deployment, nor do they accommodate Continuous Integration / Continuous Deployment development cycles. Legacy application stacks like this have relied on network level and infrastructure level availability functions . This is due to code not being written for the demands on on-demand consumption.
The rapid rise and adoption of micro service architectures takes the notion of a small subset of workloads that deliver a service. Workloads can be represented by containers, virtual machines, or even containers on virtual machines! Workloads are the sum which make up a greater whole. Think of it as follows. 20 Web workloads, 10 application workloads, and 5 database workloads. Each workload is stand alone resilient that provides a higher service and which can stand alone from its members. The numerous services provide an application. This allows the ability for workloads to be added to services on demand, allows scale out accordingly without having a constrained chokepoint. No longer relying on infrastructure or network level availability mechanisms in the form of High Availability, Fault Tolerance, or VRRP technologies, application state is replicated across the service. This allows incredible levels of resiliency and the application handles its failover according to the workloads that make up a service.
With this shift in application mentality, development practice and architecture we are seeing the requirements of the OS change. The operating system delivered on a virtual infrastructure has had its hardware interactions stripped from it. With container based application virtualisation there is less requirements of the OS to deliver application libraries or providing function. With that now taking place there is a pivot to container focused distributions that are light weight, slim, and can be iterated near-instantly. Modern applications can be easily deployed, take on a continuously integrated approach, deliver new functionality daily opposed to quarterly, and deliver resilient services for modern applications.
To learn more about Micro service applications and an architecture that is seeing solid traction across the industry I highly recommend reading the 12 Factor webpage.
To learn more about Photon, VMware’s container orientated Linux distribution, and actually use it for free, head over to the GitHub page.