cwmwl, a LINDA‐like shallow embedded DSL in Haskell for the cloud.
cwmwl, a LINDA-like shallow embedded DSL in Haskell for the cloud. Joerg Fritsch, J.Fritsch@cs.cardiff.ac.uk School of Computer Science and Informatics, Cardiff University UKIntroduction Do cloud computing and FPLs match? Why the LINDAThe vision and requirements of cloud computingplatforms can be matched with functional programming model? Immutable Data. Shared nothing. The LINDA model is decoupling parallel processesprogramming languages (FPLs). Functions are Aynschronous Message passing (e.g. actors) available to re-synchronize processes both spatial and temporal. Its orthogonalitysmall in (code)size and there is no obvious way to operations STM better manageable than locks. blends well with the notion of pure FPLs to isolatematch threads and functions. This projectproposes cwmwl a LINDA-like shallow embedded side effects. We expect that parallel DSLs based onDomain Specific Programming Language (DSL) the LINDA model are highly scalable because the Parallel, FPLs are inerently parallel. Functions, Closures, Curryingembedded in Haskell to coordinate secure parallel central tuple repository multi- & many core Declarativeexecution of functions and mobile tenant code support Compiler has freedom to re-arrange “everything”thereby creating a novel PaaS framework. • can scale to “infinite” size. • can be built on top of e.g. distributed inHypothesis Elasticity & large scale Elasticity is left to the developer or to the “app engine” memory key-value stores.A Cloud Computing Platform (PaaS), where the operations Code easily testable & maintainableunit of scale is a process rather than an entire • is eventually map reducible.operating system, can be implemented if FPLs canbe used to provide light weight units of scale (e.g. No call graphs need to be maintained.processes, functions or closures) across many Secure, multi tenancy, Nocores and computing nodes in a multi tenant confidentiality “Safe Haskell” may be a good start.environment. Approach We currently develop cwmwl, a shallow embedded DSL in Haskell that will coordinate theGoals distribution and computation of work loads(1) Proof by demonstration: Identify and solve real (Figure 1). Worker nodes consist of a Haskell problems by building a real PaaS framework. runtime system (RTS) that executes tenant code as Develop a DSL that can be used as artefact to Haskell Plugin and secured with the Safe Haskell proof or disproof my hypothesis. language extensions. Eventually the tuple space(2) Seek a formal proof by using mathematics or and the worker nodes are programming language programming language theory (PLT). agnostic and the worker nodes can consist of the RTS of “any” programming language.Why PaaS?IaaS is using a combination of 1:many Preliminary results(hypervisors) and many:1 (load balancers, Since protocols are the main cost center, weclustering) “virtualizations” to achieve the illusion developed “CMQ”, that is a Haskell module thatof elasticity. provides a lightweight means to facilitate Inter Process Communication and communicationPaaS, if based on functional programming from/to the tuple space that blends with thelanguages, does not need hypervisors or load notion of cloud computing to perform well in thebalancers to duplicate and virtualize e.g. whole presence of errors and to remediate error ratheroperating systems. The unit of scale is lightweight: than to avoid it.e.g. processes, functions or closures. “∞ number” of processes thinkable withouteffort. Papers Fritsch J. Walker C. (2012), “CMQ - A lightweight, asynchronous high-performance messaging queue for the cloud”, Journal of Cloud Computing: Advances, Systems and Applications, 1(1) Figure 1 Logical Diagram showing the cwmwl PaaS platform using a LINDA-like shallow embedded DSL into Haskell to distribute and compute (to “coordinate”) work loads in a cloud. The PaaS platform consists of a tuple space and worker nodes.