Cloud Native Applications

Enterprise as a service (EaaS) is a cutting-edge cloud computing service model that combines software, infrastructure, and platform offerings with new business process management and enterprise governing service layers. EaaS solves issues regarding cloud solution management by implementing comprehensive end-to-end business processes.

Collectively, EaaS and containers are often referred to as “Cloud Native.” The cloud is assisting organizations by connecting people, data, and processes through modern technologies. 

Containers and EaaS: The Business Benefits of Embracing Cloud Native

• Easy to setup so that new developers are able to join the project efficiently

• Cleanly integrated with the operating system or platform where they run, so it is possible to move them between environments

• Deployable to cloud platforms, so that underlying administration of a physical or virtual machine is not necessary

• Minimize differences between development, staging, and production environments

• Interact with other software components via well-defined interfaces so that it is possible to scale without needing to make changes to tooling, architecture, or development process

Cloud Native Twelve-Factor Applications 

While there is a wide diversity of opinion about how “Cloud Native” applications should be designed and built, it’s generally agreed that such applications follow a set of best practices. One important set, often called the “Twelve-Factor App” methodology, is worth reviewing because it has important implications when implementing microservices using Docker and Kubernetes.

The twelve factors in Twelve-Factor Apps are principles intended to create applications highly scalable. They have been broadly adopted and are designed to encourage software.

  1. Codebase
  2. Dependencies
  3. Configuration
  4. Treat backing services as attached resources
  5. Build, release, run
  6. Execute the app as one or more stateless processes
  7. Export services via port binding
  8. Concurrency – Scale-out via the process model
  9. Disposability – Adopt a Cattle Mentality
  10. Maintain Parity Amongst Environments
  11. Treat logs as event streams
  12. Handle admin/management tasks as one-off processes

Types of Cloud Native Applications

The twelve factors of Twelve-Factor applications are often applied in slightly different ways.

When implemented as microservices, they can often be mapped into four types of cloud-native applications. These types also conveniently map to the layers of legacy monolith applications. Some of these application types are stateless, while others are stateful and durable. Some run as batch processes while others execute in an event driven context. Here are the types of cloud-native applications:

Stateless Services (which maps to the scalable layer of previous architectures): in a microservice environment, these types of services expose APIs and user-experiences. The layer can dynamically expand and shrink depending on its runtime usage. Stateful Services (durable layer): these types of services provide storage and persistence

and include relational databases, NoSQL databases, graph databases, and object storage. Like stateless services, these applications also expose an API that can be consumed by either a stateless service or a batch application.

Batch Processing (parallelizable layer): represents scheduled, batch, or parallel jobs. Examples include operations such as extract, transform, and load (ETcL) tasks; the training of machine learning models; or large-scale computations needed for scientific modeling.

Event Driven: the event-driven layer helps to process events or alerts that might have been triggered by other services. The code may be deployed as standalone workers or as part of functions in a “serverless” framework.

Start Your Transformation With DVO Consulting!

Contact us to learn more about containers and how DVO Consulting can help you take advantage of containerization to more rapidly delivery your software and better engage your customers.