From HTTP to HTML – Erlang/OTP Experiences
in Web Based Service Applications
Francesco Cesarini, Lukas Larsson, Michał Ślaski
Erlang Training and Consulting Ltd
401 London Fruit and Wool Exchange
Brushfield Street
London, E1 6EL
United Kingdom
{francesco, lukas, michal}@erlang-consulting.com
Abstract
This paper describes the lessons learnt when internally developing
web applications in Erlang. On the basis of these experiences, a
framework called the Web Platform has been implemented. The
Web Platform follows a design pattern separating data processing
and formatting, allowing the construction of flexible and
maintainable software architectures. It also delivers mechanisms for
building dynamic pages and components. On top of the platform
and components, web interfaces to commercial Erlang systems have
been built.
Categories and Subject Descriptors D.3.3 [Programming
Languages]: Frameworks
General Terms Design, Reliability.
Keywords Erlang, HTTP, HTML, Web Frameworks
1. Introduction
Erlang was developed in the late 1980's by Ericsson to program the
next generation of telecom applications. Telecom applications are
distributed, fault-tolerant, massively concurrent soft real-time
systems with high availability requirements. On a software level,
these requirements are similar to those put upon Internet based
applications, making Erlang a good candidate for development of
web based services.
A typical web application will consist of an Apache[11] web server
and a MySQL[12] database back-end, glued together with Perl[7]
and PHP[4]. These components need to be independently managed
and supported, and interfaces and data formats between them have
to be defined. Erlang, on the other hand, will run all these
components within the same platform and technology concept,
allowing them to share the same memory space.
This facilitates support of these systems, which together with the
built-in ability to upgrade software during runtime can provide
systems with no downtime. Using built-in fault tolerance
mechanisms ensures that errors are not only isolated, but also
uniformly handled. Furthermore, what makes Erlang special in
developing web applications is its extremely powerful concurrency
model, allowing a constant throughput of requests under extremely
heavy loads[1]. Joe Armstrong showed in one of his
presentations[8] that in a denial of service attack, the number of
parallel connections needed to crash the Erlang web server was
about 20 times as many as an Apache web server running on the
same hardware.
Ericsson’s computer science laboratory experimented with HTTP as
early as 1994, writing an Erlang based proxy used to study the
HTTP protocol[13]. This proxy evolved into a simple web server
consisting of a couple hundred lines of code, and eventually became
the first web server to be included in OTP. This server, often
referred to as the INETS server, was presented at the third Erlang
User Conference in 1997[3]. With 10k lines of Erlang, the
development team had achieved 80% of the Apache server
functionality, which at the time consisted of about 100k lines of
code.
After presenting INETS to the general public, different platforms
and frameworks have been developed to take advantage of Erlang's
characteristics in web based contexts. One of the very early
adopters, Eddie application[10], did what Erlang does best. By
using distribution, a hybrid of machines and operating systems
would join forces to create a server farm providing scalability,
reliability and fault tolerance.
A web platform used for operation and maintenance of the AXD301
switch dynamically developed web pages through SNMP
instrumentation functions and generic Erlang data structures[2]. It
led the way to the first documented web platform based on INETS.
Unfortunately, little information is available about this platform
outside of Ericsson, and it has not been released as an open source.
The most powerful Erlang based web server around is Yaws[9]. It
was released as an open source in 2002 and implements most of the
features met in today’s HTTP servers. What makes it really
powerful, however, is its ability to execute dynamic pages with
Erlang code.
Through OTP applications, Erlang has reached a high level of
maturity in the telecoms market. But when compared to other “late
majority”[6] languages for web services such as PHP and Perl,
regardless of the above examples, Erlang is still considered to be in
the stage of the “early adopters”[6] (see Figure 1). With the
exception of the Erlang wiki
1
, released in 1999, there have been few
reusable components commonly needed for developing web services
1
Erlang wiki, http://erlang.sics.se:5000/
Permission to make digital or hard copies of all or part of this work for personal or
classroom use is granted without fee provided that copies are not made or distributed for
profit or commercial advantage and that copies bear this notice and the full citation on
the first page. To copy otherwise, or republish, to post on servers or to redistribute to
lists, requires prior specific permission and/or a fee.
Erlang’06 September 16, 2006, Portland, Oregon, USA.
Copyright © 2006 ACM 1-59593-490-1/06/0009…$5.00.