Imperative Locally, Functional Globally: A New Programming Model for Full-Stack Distributed Systems
Over the last two decades, backends have evolved from simple monoliths to complex distributed systems, incorporating microservices, serverless functions, multiple databases, event queues, and more.
These architectures improve scalability and modularity at the cost of significant complexity in managing data consistency.Even without the extra complications in the backend, the inherently distributed nature of the frontend and the backend was already complicated enough.We present a new programming model for building full-stack distributed systems that unifies application logic with data management.
The programming model relies on built-in primitives for reactivity, atomicity, and idempotency that dramatically simplify development without sacrificing safety or scalability.Instead of thinking in tables and rows in a database, developers think in data structures and functions, and the programming model provides a well-defined semantics for how those functions can be composed safely together.While well suited for a new programming language, we’ll demonstrate the programming model using an implementation for TypeScript.