Article item

Domain-Driven Design, Containerization and Serverless Computing

Sep 29, 2020



Domain-Driven Design, Containerization and Serverless Computing can help enhance flexibility and cost-effectiveness when delivering and deploying business solutions. These concepts predominantly reside on either the Development or Operations side of DevOps. In this article, I will provide a high-level introduction to these approaches, how they complement each other, and how they align with the Uniface low code platform.

Domain-Driven Design (DDD)

In DDD, a software solution is divided into discrete domains that mirror the business. The data, activity, and objects interact with application business logic to deliver domain services. For example, a Human Resources application could be composed of Absence, Payroll, and Recruitment domains.

DDD follows three core principles:

  • The primary focus of a project is the core domain and domain logic.
  • Complex designs are based on models of the domain.
  • A creative collaboration between technical and domain experts.

These principles lead to tangible outcomes such as modular maintainable systems, within well-defined bounded packages. These principles are core to Uniface and make it possible to create microservices as a vehicle to deliver business value.

Cloud Deployment

Cloud computing has evolved much since its inception. Two approaches to emerge are Containerization & Serverless. Moving to the cloud typically aims to reduce overheads (costs, labour, processes, etc.) when provisioning and maintaining local infrastructure, whilst also simplifying activities related to scaling. These goals can be met, but there are potential downsides to these simplified requirements (also known as Infrastructure as a Service - IaaS).

Containerization

With IaaS, a business still maintains and manages many aspects of the servers, even if they are in the cloud. Scaling the infrastructure can be simple and quick, but tasks such as deployment and patching remain essentially the same. Containerization solves this by packaging the application, its dependencies, and configuration into a portable container. This container can be easily deployed and run on any server that supports the container runtime environment. This is a popular PaaS approach. However, a Serverless approach addresses a second key issue of IaaS.

Serverless - Functions as a Service (FaaS)

Imagine using a dedicated taxi kept on permanent standby near your home. This would obviously be inefficient since you would need to pay for the unused service between rides. Serverless computing offers a seemingly obvious solution given the taxi analogy. You only need to pay for the service you use. Contrary to the name, it does not mean there are no servers.

In a serverless architecture, the business only needs to concentrate on developing the domain microservices and deploying them to a FaaS provider. Server provisioning, capacity planning, elasticity, and maintenance remain the responsibility of the cloud service provider. Importantly, the business only pays for the services used, not a predetermined number of servers.

Uniface. That’s code for happiness!

I’ve briefly introduced a few concepts that can help you when developing new, or modernising existing business solutions. At Uniface we are happy that our low-code platform aligns with the principles presented here and will continue to do so.

Uniface, the most productive and reliable development and deployment tool in the industry, provides a model-driven environment for the rapid development of scalable enterprise mission-critical applications.