MVC design pattern does not work for cloud-native

How is MVC used in application development?

MVC (Model View Controller) entails to divide the application logic into View (user experience) Model (data shown to the user) and Controller (business logic). The controller exists between the view and the model. It listens to events triggered by the view (or another external source) and executes the appropriate reaction to these events. In most cases, the reaction is to call a method on the model. Since the view and the model are connected through a notification mechanism, the result of this action is then automatically reflected in the view.

What difference does cloud make?

With the advent of FaaS (functionality as a service) in cloud, there are many options to build compute which are edge optimised. For example Lambda or S3 or DynamoDB, few region agnostic functionalities which enables application-logic to run in the closest data centre to the user. In short, developers have the capability to spin up a virtual server in real-time and process the incoming user request.

Stateless & Stateful business logic

In order to truly leverage the cloud components, developers must plan to split the business logic into Stateless and Stateful logic. Basically the Controller gets now split into C1 (Stateless controller) and C2 (Stateful controller). C1 can be built/scaled easily in region agnostic cloud components. C2 can be built/scaled on a server cluster. Another advantage of splitting the logic (single controller) into C1 and C2 is that the load on C2 would be much lesser than having one single controller.

Cloud Native Execution Flow

View <-> Model <-> Stateless Business Logic <-> Stateful Business logic

One example of this is shown in the below architecture.

You can see the Regional Lambda is the stateful controller and hence is closer to the database. The CDN + Edge Lambda takes 80% of workload and hence making the overall experience of the application fast.


kitsune (https://www.getkitsune.com)

kitsune is a cloud-native framework which enables developers to create full stack serverless web applications without having to worry about architecture, scalability and maintenance. kitsune also provides a HTML based language for developers making it the simplest way to build serverless web apps.