Most Web applications start being developed as standalone monoliths. However, when the complexity of the application increases, adding new functionalities often ceases to be cost and time-effective. A solution to cope with the usual problem of an application which has become unmaintainable is to consider adopting a decoupled architecture where the elements of the standalone application get split into smaller interacting components.
A good way is to start by decoupling the frontend (i.e. the user interface) from the backend (i.e., the business logic of the application). In this setting, the backend functionalities are typically exposed through an API (Application Programming Interface) through which the frontend can interact with the backend. This makes the backend much less dependent on the UI (User Interface) and brings many benefits, the primary being streamlined and faster development in general.
As new functionalities build up, it makes sense to further split the backend functionalities into smaller and independent self-contained components providing each a unique business capability. A so-called "microservice" is responsible for its own data model and data. Such approach significantly improves testability of smaller components of the application, reduces the number of iterations and simplifies the opportunities for migration from one technology to a newer one.
On the Web, APIs nowadays typically refers to RESTful APIs making use of the HTTP protocol with JSON or XML payloads for data transfers, and following the REST (Representational State Transfer) architectural principles.
Microservices functionalities can be exposed through RESTful APIs and then be integrated into a coherent application within the framework of a well-designed microservices architecture.
At Vantino, we regularly develop custom RESTful APIs and deploy microservices architecture in the cloud for our customers. See for example Project P. The architecture we deployed for Project P makes use of the powerful Amazon API Gateway and of microservice instances deployed in the cloud.
Securing the APIs we develop and the microservice architectures we deploy is an essential part of our approach. At Vantino, we have developed a specific expertise to:
A microservice architecture allows for better scalability as microservices can be deployed on small Virtual Machines (VM) in the cloud and be easily duplicated when needed behind a load balancer.
At Vantino, we make use of different cloud providers including Amazon Web Services (AWS), Google, Microsoft Azure, Digital Ocean, Vultr, and our partner Exoscale.
For complex applications, we usually stick to container-based deployments and use technologies such Docker, Vagrant and Kubernetes.