Planetary Scale Applications

How does Lasp provide support for planetary scale applications?

Lasp is composed of a group of Erlang libraries, that work together, to provide services for the development of planetary scale applications.

This is achieved through a set of components that have been designed to work together to provide a comprehensive solution for future Elixir and Erlang applications: large-scale, and geo-distributed. These components, provided as libraries, provide a cohesive solution, that can be used independently; each library is focused on solving a particular problem, composes easily with the other, and provides developer support for easing the development of these applications.

Libraries

Main

  • lasp provides the entire Lasp programming system

Core

  • lasp_pg provides an eventually consistent process registry

Distribution

  • partisan provides a replacement for distributed Erlang that provides configurable topologies depending on your application needs;
  • plumtree provides a fork of Basho's Plumtree library for optimizing overlay networks using spanning trees which are maintained decentrally and adapted to operate with partisan;
  • ishikawa provides tagged reliable causal broadcast support for partisan

Data Structures

  • types provides a reference implementations of both operation-based, state-based, and delta-based Conflict-free Replicated Data Types

Deployment

  • sprinter provides service discovery layer for operating Lasp components on both Mesosphere's DC/OS and Google's Kubernetes

Adoption

Lasp is used as part of the underlying infrastructure for Space-Time Insights's adaptation of Microsoft Orleans in Erlang, erleans.

Architecture Diagram of the Lasp Programming System

Each of these libraries can be used independently, or optionally, as part of a deployment of the entire system. Here's one possible, and the default configuration, provided out of the box when you install the entire suite.

864