When George Favaloro and Sean O’Sullivan coined the term “cloud computing” in 1996, they detailed a prescient vision that included revisiting the complete software development process. Ten years later, large companies such as Google or Amazon began using the term to describe the new paradigm. And the rest is history.
During the last decade, the software industry has suffered a significant evolution with the growth of cloud computing to specific solutions such as IaaS, SaaS, or PaaS, and the improvement in how software is architectured with the advent of microservices and containers. The cloud market is a $200 billion opportunity where players of all sizes compete for a portion of it. The rapid evolution of the cloud business has created a saturated market in some areas. Different technologies deliver the same value with significant differences in pricing models and technology approaches. The existence of a fragmented ecosystem impacts development and management costs due to the need to learn, maintain, and manage multiple systems. This ecosystem also affects development because the architecture is affected by the ecosystem where it deploys applications but ignores the fact that it will increase costs once the applications go into production.
The use of containers to deploy applications into production with runtimes such as Docker is becoming the de-facto standard for enterprise applications. In conjunction with the expansion of microservice architecture usage, it has generated a new way of developing applications moving from monolithic to complex distributed applications. Considering that even if microservices reduce per-service complexity as it introduces a clear separation of responsibilities, it also increases the complexity at the application level. Instead of monitoring and maintaining a single VM, a modern application requires checking different elements to answer questions such as whether the application as a whole is running or not. For the operator in charge of managing the system, it is necessary to understand how the application works at a high level and use different applications to access monitoring information, logs, or metrics.
Managing a set of coordinated containers is a challenging task. For that reason, different orchestration systems such as Docker compose/swarm or what is becoming the de facto standard — Kubernetes — appeared. These runtimes offer a set of primitives that enable the operator to deploy complex applications that define how they communicate internally among the different microservices and how they communicate with the external world through load balancers or ingresses. Kubernetes is an open-source container orchestration system that offers primitives to represent the entities of an application. The core of the system is platform-independent, but each cloud provider has added its extensions for low-level elements such as storage or networking, making it difficult for the users to reuse an application when changing cloud providers.
The Kubernetes entity model is a set of low-level primitives, which introduces a learning curve for new developers when translating an application into the Kubernetes world. The OAM (Open application Model) addresses this problem by offering a simplified yet complete definition of the elements of a modern application. The main difference between the previous Kubernetes native one is that OAM assumes different user personas and approaches defining an application from them. In this way, the entities help application developers and system operators simplify the definition of an application in a cloud-independent way. The developer takes responsibility for defining the application elements, the infrastructure operators describe the capabilities of the underlying system, and the application operator instantiates the application itself. OAM is an emerging technology backed by significant players such as Microsoft, Alibaba, or Red Hat, aiming to reduce the complexity in the way we specify how an application should run.
So the world is changing, applications are getting complex, and developing, deploying, and managing them is a significant challenge. Our objective at Napptice is to address those issues by introducing a set of tools and frameworks built on top of OAM and Kubernetes, but taking it one step further. If you are interested in knowing more about our solutions, do not hesitate to contact us and try our platform. It’s free to use, you simply need to log in with your existing GitHub account to get started!