Erlang Application Stack
for LING and
Unikernel Environments

Maxim Sokhatsky
maxim@synrc.com
Synrc Research Center s.r.o.



Pure and Simple. This site is dedicated to full stack Erlang applications: SLICE, VXZ, N2O, KVS, SHEN, REST, MAD, BPE, MQS, FORMS, UPL. They provide you services such as provisioning instances, development tools, frameworks, business engines and languages.

Minimal and Effective. Because everything is so small that can fit your old FD, everything is also fast. We tried to keep number of levels and operability points as small as possible, keeping in mind the full stack of application.

Unikernel Based. This stack can be provisioned in Erlang Xen containers under LING. So you can run full stack in Xen (without OS) or in posix modes. Also all aplications could be shipped as a single-file bundle which is able to run in Windows, Linux and Mac environments with LING or BEAM virtual machine.

Picture 1. Synrc Application Stack




N2O Application Server

N2O provides a microcore based on chain of handlers applied to each websocket request. It also provide core services such as ETS-based expirable sessions, error formatting and logging, term pickling, message queue service and others. The most comprehensive part is the complete set of HTML elements. The JavaScript issuing withing IO protocol messages #wire and #js could be extended with shen JavaScript-subset language.

n2o

api

update(Name,Render) insert_top(Name,Render) insert_bottom(Name,Render) insert_before(Name,Render) insert_after(Name,Render) remove(Name) wire(Wiring) async(Name,Fun) flush(Name) pickle(Term) depickle(Binary) session(Key) session(Key,Term) user() user(User) send(Name,Term) reg(Name,Term) unreg(Name) q(Name) qc(Name) qp(Name) Module:event(init) Module:event(Parameters) Module:event(terminate)

n2o

protocol

{io,Eval,Data} PING PONG N2O {client,Data} {server,Data} {bin,Data} {binary,_,_,_,_,_,_,_,_,_,_} {pickle,_,_,_} {ev,_,_,_,_}

KVS Abstract Term Database

KVS provides a simple database conectivity for various database backends. It allows you to store linked lists and to make any record foldable. KVS doesn't provide consistency guarantees besides capabilities provided by its backends. This framework is used in two servers: chain replication database cr; and feeds server. It is also a companion storage framework for N2O.

kvs

api

delete(Table,Key) remove(Table,Key) get(Table,Key) index(Table,K,V) next_id(Table,DX) join(Node) count(Table) add(Record) all(Table) put(Record) link(Record) change_storage(Table,Type) start() stop() destroy() version() dir() entries(Feed,Type,Count)

kvs

backends

fs kai mnesia redis riak sql