LYME (software bundle)
{{unreliable sources|date=October 2014}}
LYME and LYCE are software stacks composed entirely of free and open-source software to build high-availability heavy duty dynamic web pages. The stacks are composed of:
- Linux, the operating system;
- Yaws, the web server;
- Mnesia or CouchDB, the database;
- Erlang, the functional programming language.
The LYME and LYCE bundles can be and are combined with many other free and open-source software packages such as e.g. netsniff-ng for security testing and hardening, Snort, an intrusion detection (IDS) and intrusion prevention system (IPS), RRDtool for diagrams, or Nagios, Collectd, or Cacti, for monitoring.
Details
Both databases Mnesia and CouchDB as well as Yaws (and also Mochiweb, Misultin, and Cowboy) are written in Erlang, so web applications developed for LYME/LYCE may be run entirely in one Erlang virtual machine. This is in contrast to LAMP where the web server (Apache) and the application (written in PHP, Perl or Python) might be in the same process, but the database is always a separate process. As a result of using Erlang, LYME and LYCE applications perform well under high load{{cite web | last=Ghodsi | first=Ali | url=http://www.sics.se/~joe/apachevsyaws.html | title=Apache vs. Yaws | access-date=2013-10-14 | url-status=dead | archive-url=https://web.archive.org/web/20070118063239/http://www.sics.se/~joe/apachevsyaws.html | archive-date=2007-01-18 }} and if distribution and fault tolerance is needed.{{cite web | last=Armstrong | first=Joe | url=http://www.erlang.org/download/armstrong_thesis_2003.pdf | title=Making reliable distributed systems in the presence of software errors | year=2003 | access-date=2013-10-14 | archive-date=2008-05-16 | archive-url=https://web.archive.org/web/20080516051720/http://www.erlang.org/download/armstrong_thesis_2003.pdf | url-status=live }}
The query and data manipulation language of Mnesia is also Erlang (rather than SQL), therefore a web-application for LYME is developed using only a single programming language.
Interest in LYME as a stack had begun by August 2005,{{cite web | title=Things I Can No Longer Be Bothered With (LAMP) | url=http://codepoetics.com/octoblog/blog/2005/08/22/things-i-can-no-longer-be-bothered-with/ | date=August 22, 2005 | access-date=2013-10-14 | archive-date=2014-05-29 | archive-url=https://web.archive.org/web/20140529051903/http://codepoetics.com/octoblog/blog/2005/08/22/things-i-can-no-longer-be-bothered-with/ | url-status=live }} as was soon cited as a high-performance web application platform that used a single development language throughout. Favorable comparisons to other popular stacks such as Ruby on Rails were soon forthcoming. Comparisons to LAMP have also been favourable,{{Citation needed|date=September 2008}} although some{{cite web | url=http://21ccw.blogspot.com/2008/02/lyme-vs-lamp-i.html | title=Lyme vs Lamp I | access-date=2008-09-29 | archive-url=https://web.archive.org/web/20090316012909/http://21ccw.blogspot.com/2008/02/lyme-vs-lamp-i.html | archive-date=2009-03-16 | url-status=dead }} have highlighted the difficulties of porting "SQL thinking" to the very different context of Mnesia.
Adoption
A successful user of LYME is the Swedish internet payment-processing company Klarna, who have built their whole architecture on LYME. This is seen as a successful project that demonstrates virtues of both LYME and functional programming in general.{{cite web | title=Functional Programming in Real Life | author=Dr. Erik Stenman | url=http://www.it.uu.se/edu/course/homepage/pk/ht07/OH/K.pdf | date=13 December 2007 | access-date=2013-10-14 | format=PDF | publisher=Department of Information Technology, Uppsala University }}
LYME was also covered in the Erlang session at the Software Practice Advancement (SPA) 2008.{{cite conference | title=Erlang: What All The Fuss Is About | conference=Software Practice Advancement (SPA) 2008 | conference-url=http://www.bcs-spa.org | url=http://www.spaconference.org/spa2008/sessions/session159.html | date=16–19 March 2008 | access-date=2013-10-14 | publisher=BCS | archive-date=2013-10-14 | archive-url=https://web.archive.org/web/20131014173402/http://www.spaconference.org/spa2008/sessions/session159.html | url-status=live }}
Besides Yaws, there are several other web servers written in Erlang, e.g. Mochiweb, Misultin, and Cowboy.
Besides Mnesia and CouchDB, there are a couple of other databases written in Erlang, e.g., Cloudant, Couchbase Server (born as Membase), database management system optimized for storing data behind interactive web applications, Riak, and SimpleDB (part of Amazon Web Services{{Cite web |url=http://www.satine.org/archives/2007/12/13/amazon-simpledb/ |title=What You Need To Know About Amazon SimpleDB |access-date=2013-10-14 |archive-date=2011-06-23 |archive-url=https://web.archive.org/web/20110623221347/http://www.satine.org/archives/2007/12/13/amazon-simpledb/ |url-status=live }}).
See also
- LAMP (software bundle)
- MEAN (software bundle){{snd}} a JavaScript software stack for building dynamic web sites and web applications