The Migration from Erlang to OTP A case study of a heavy duty TCP/IP client/server application Francesco Cesarini Mickaël.

Slides:



Advertisements
Similar presentations
Describing Complex Products as Configurations using APL Arrays.
Advertisements

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 2.
Processes. Outline Definition of process Type of processes Improvement models Example Next steps… 1.
Drupal Online Tutorial A Product of an ENGL 421 class at Purdue University Page 1.
Software Freedom Day th September 2007 Asia Pacific Institute of Information Technology Colombo, Sri Lanka. Nazly Ahmed Scripting The Web.
Distributed components
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 1 Let’s get started. Let’s start by selecting an architecture from among.
Certificate in Web Applications Development. What Is A Web Application?
Distributed Systems Architecture Presentation II Presenters Rose Kit & Turgut Tezir.
Presented by Sujit Tilak. Evolution of Client/Server Architecture Clients & Server on different computer systems Local Area Network for Server and Client.
AJAC Systems Hotel Reservation System
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
1 Introduction to Web Development. Web Basics The Web consists of computers on the Internet connected to each other in a specific way Used in all levels.
Process-to-Process Delivery:
Section 6.1 Explain the development of operating systems Differentiate between operating systems Section 6.2 Demonstrate knowledge of basic GUI components.
Systems Design. Systems Design Skills People skill (25%) - Listening, understanding others, understanding between two lines, conflict resolution, handling.
September 6, 2015 Connecting Client Applications to Informix Databases using IBM Informix Connect and ODBC James Edmiston Database Consultant Quest Information.
Cli/Serv.: JXTA/151 Client/Server Distributed Systems v Objective –explain JXTA, a support environment for P2P services and applications ,
CSD 2006 / TEAM 12 Final presentation 29 th May 2006.
Oracle8 JDBC Drivers Section 2. Common Features of Oracle JDBC Drivers The server-side and client-side Oracle JDBC drivers provide the same basic functionality.
How to Configure Informix Connect and ODBC James Edmiston Informix DBA Consultant/Quest Information Systems, Inc. Informix User Forum 2005 Moving Forward.
1 Open Source – åpen kildekode Understanding an open source project.
Research infrastructure and knowledge management Eric Maryniak.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
Advanced PI Calculation Engine Makes Complex PI Calculations Easy! Use of EDICTvb for Multi-Plant Advanced PI Calculations Dane OverfieldEXELE Information.
Instant Messaging for the Workplace A pure collaborative communication tool that does not distract users from their normal activities.
Nynox.com Nynox Help Desk Affordable Help Desk Solution.
COLD FUSION Deepak Sethi. What is it…. Cold fusion is a complete web application server mainly used for developing e-business applications. It allows.
PHP With Oracle 11g XE By Shyam Gurram Eastern Illinois University.
Instant Messaging for the Workplace A pure collaborative communication tool that does not distract users from their normal activities.
Jozef Goetz, Application Layer PART VI Jozef Goetz, Position of application layer The application layer enables the user, whether human.
CS480 Computer Science Seminar Introduction to Microsoft Solutions Framework (MSF)
Motorola Internal Use Only Evaluating Erlang for Robust Telecoms Software David King 2004 S 3 Symposium – Henry Nystrom, Phil Trinder, David King.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
MACIASZEK, L.A. (2001): Requirements Analysis and System Design. Developing Information Systems with UML, Addison Wesley Chapter 6 - Tutorial Guided Tutorial.
1 Introduction to Middleware. 2 Outline What is middleware? Purpose and origin Why use it? What Middleware does? Technical details Middleware services.
PHP Features. Features Clean syntax. Object-oriented fundamentals. An extensible architecture that encourages innovation. Support for both current and.
Software Engineering, Lecture 4 Mohamed Elshaikh.
Compaq Customer Services RTR Support Infrastructure European Client-Server Expertise Center Manager Compaq Customer Services James NAUFFRAY.
Active Server Pages (ASP), also known as Classic ASP or ASP Classic, was Microsoft's first server-side script engine for dynamically generated web pages.
Our goal is to make a web based multi-user organizer that can be accessed via cellular devices. There are three main component for this project: A main.
Lecture 6: Sun: 8/5/1435 Distributed Applications Lecturer/ Kawther Abas CS- 492 : Distributed system & Parallel Processing.
Jabber Technical Overview Presenter: Ming-Wei Lin.
Chapter 3 Selecting the Technology. Agenda Internet Technology –Architecture –Protocol –ATM IT for E-business –Selection Criteria –Platform –Middleware.
Practical Erlang Programming OSCON Tutorial July 21 st 2009, San Jose Francesco Cesarini Erlang Training and Consulting Ltd
CS223: Software Engineering Lecture 13: Software Architecture.
1 Kyung Hee University Chapter 11 User Datagram Protocol.
McGraw-Hill Chapter 23 Process-to-Process Delivery: UDP, TCP Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
The Internet Technological Background. Topic Objectives At the end of this topic, you should be able to do the following: Able to define the Internet.
Thepul Ginige Lecture-5 Implementation of Information System Part - I Thepul Ginige.
Successfully Implementing The Information System Systems Analysis and Design Kendall and Kendall Fifth Edition.
Distributed Systems Architectures. Topics covered l Client-server architectures l Distributed object architectures l Inter-organisational computing.
Unit 3 Virtualization.
Custom Administration Package
Introduction to .NET Framework Ch2 – Deitel’s Book
A Short Course on Geant4 Simulation Toolkit How to learn more?
Working at a Small-to-Medium Business or ISP – Chapter 7
Working at a Small-to-Medium Business or ISP – Chapter 7
The “Internet”.
Kontrak Kuliah Web Service.
Getting Erlang to talk to C and C++ from ei to UBF Hal Snyder Vail Systems, Inc. Rick Pettit Vail Systems, Inc.
Lecture-5 Implementation of Information System Part - I Thepul Ginige
Working at a Small-to-Medium Business or ISP – Chapter 7
Process-to-Process Delivery:
Content of Presentation
A Short Course on Geant4 Simulation Toolkit How to learn more?
A Short Course on Geant4 Simulation Toolkit How to learn more?
Snippet Engine as a Database Server
UFCEUS-20-2 Web Programming
Chapter 21 Successfully Implementing The Information System
Presentation transcript:

The Migration from Erlang to OTP A case study of a heavy duty TCP/IP client/server application Francesco Cesarini Mickaël Rémond

The Product... n IDEALX runs in-house customer projects –Based on Open Source components –develop what is not available –release reusable applications on their site n Develop an Instant Messaging Server –For one of the largest French ISPs –Handle 10,000 simultaneous users –Based on the Jabber protocol –Scaleable during runtime –Allow flexible addition of services

The Product...

Building the Prototype. n A team of 4 software engineers n Erlang Knowledge –All self-taught –Had been active in in-house Erlang projects –Used the erlang-questions mailing list n They had a working prototype in 5 weeks –Handled 900 simultaneous users –Had performance and reliability problems n Delivered to an impressed customer

Building the Prototype. n Decide to take in external help –Code & Architecture review –Improve performance –Explain OTP behaviours n The code review showed –Well written code –Little use of higher order functions –Lots of unnecessary concurrency –NO OTP behaviours or design principles!!

Building the Prototype. multiplexing de-multiplexing state/error handling users socketslistener sockets

How could they miss OTP? How do I apply object oriented design in Erlang? How do I apply object oriented design in Erlang? Mickaël Rémond Joe Armstrong You do not need to apply OO design as Erlang has something more powerful called behaviours!

How could they miss OTP? n The name Open Telecom Platform –They were developing XML based products –They were developing products for ISPs –They were not developing telecom products n They did not find the documentation –Relations between behaviours not evident –No tutorials n Found very few OTP examples online

To the Rescue! n OTP training: 2.5 days –Only behaviours were covered n Code review: 1 day n New system architecture design: 0.5 days –No documents necessary n ‘Code rewrite’ examples: 1 day –Using higher order functions –How to remove deeply nested cases –Bit syntax, etc.

To the Rescue! multiplexing de-multiplexing state/error handling users socketslistener de-multiplexing socketssupervisor simple 1-1

To the Rescue! n 25 days work from prototype to product –Included training, redesign, rewriting, testing n Code reduction of 50% n Free goodies from OTP –Restart strategies, application control, etc. n Problems –Limit of TCP connections per Unix process –One listen socket for many Erlang nodes –Windows NT database performance

The Moral of the Story. n OTP design principles and behaviours fill a gap that existed in pure Erlang –Structuring of programs –Reuse of Code –Methodology –Development strategy n For some one downloading Erlang/OTP off the web, finding/understanding design principles and behaviours is not obvious/easy.

The Moral of the Story. n We who work with OTP should promote it better –Advantages –The gap it fills –More and better examples –Help existing open source projects n Hopefully, this will result in others not doing the same mistake –Happy users = Many users –Many users = Fun user conferences