Communicating sequential processes
Communicating sequential processes
A calculus of mobile processes, II
Information and Computation
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
A practical subtyping system for Erlang
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
ACM SIGPLAN Notices
Patterns in Java, volume 1: a catalog of reusable design patterns illustrated with UML
Patterns in Java, volume 1: a catalog of reusable design patterns illustrated with UML
A high performance Erlang system
Proceedings of the 2nd ACM SIGPLAN international conference on Principles and practice of declarative programming
Concurrent Programming in Java: Design Principles and Patterns
Concurrent Programming in Java: Design Principles and Patterns
Advanced Functional Programming, Second International School-Tutorial Text
Hierarchical Storage Systems for Interactive Video-On-Demand
Hierarchical Storage Systems for Interactive Video-On-Demand
Parameterized modules in Erlang
Proceedings of the 2003 ACM SIGPLAN workshop on Erlang
Using Coq to Prove Properties of the Cache Level of a Functional Video-on-Demand Server
Proceedings of the 9th AISC international conference, the 15th Calculemas symposium, and the 7th international MKM conference on Intelligent Computer Mathematics
Certifying properties of an efficient functional program for computing Gröbner bases
Journal of Symbolic Computation
Towards a decentralized and structured network of P2P public information screens
EUROCAST'07 Proceedings of the 11th international conference on Computer aided systems theory
Verification of program properties using different theorem provers: a case study
EUROCAST'07 Proceedings of the 11th international conference on Computer aided systems theory
Model checking a video-on-demand server using McErlang
EUROCAST'07 Proceedings of the 11th international conference on Computer aided systems theory
Designing transparent location-dependent web-based applications on mobile environments
UCS'04 Proceedings of the Second international conference on Ubiquitous Computing Systems
A language-independent approach to black-box testing using Erlang as test specification language
Journal of Systems and Software
Hi-index | 0.01 |
In this paper, we present some experience of using the concurrent functional language Erlang to implement a distributed video-on-demand server. For performance reasons, the server is deployed in a cheap cluster made from off-the-shelf components. The demanding system requirements, in addition to the complex and ever-changing domain, suggested a highly flexible and scalable architecture as well as a quite sophisticated control software. Functional programming played a key role in the development, allowing us to identify functional abstractions throughout the system. Using these building blocks, large configurations can be defined using functional and process composition, reducing the effort spent on adapting the system to the frequent changes in requirements. The server evolved from a prototype that was the result of a project supported by a regional cable company, and it is currently being used to provide services for real-world users. Despite our initial concerns, efficiency has not been a major issue.