Subscribe to our Erlang Factory newsletter to receive the latest updates and news

Xu Cao
Bringing more power and beauty to the system with Erlang

Xu obtained a Masters in Computer Architecture from Wuhan University, China in 2008.  After graduation, he started  his development career with mobile banking and airline services, in which robust and scalable backend services are of paramount importance. After looking through several programming languages, they found Erlang inspired them to construct the core of their system. He spent three years building the core system with Erlang. Since then, it has been deployed in a handful of the largest banks and airline companies in China. Now he is an enthusiast of Erlang and is working on bringing more power and beauty to the system.

Xu Cao is Giving the Following Talks
Design and implementation of an Erlang-based gateway

To contemporary applications, the Web has become a fundamental layer of databases and application logic. For example, in a mobile banking system, financial services--such as account management, bill payment, security trading--sit in application servers, and a content gateway integrates these web services APIs, translates data to presentation, and delivers to mobile devices for rendering. In such an architecture, a content gateway is the key integration point of many application systems. HTTP persistent connections are used between the gateway and application servers, and between the gateway and mobile clients. This gateway is required to efficiently support large number of concurrent requests from many clients, and within each request, possibly long queries to and from various remote application servers; therefore, the scalability and robustness of the gateway are crucial to the entire system.

In this presentation, we describe the implementation of such a content gateway system, and share our real-world experience in its optimization and operation. We chose to use Erlang to implement this gateway because of its efficient and robust support of asynchronous communication and process abstraction. To reduce CPU and memory usage under load, we made frequent use of linked-in drivers to implement functions such as template generation, XML processing, and database connection. This system has been deployed and running in some of the largest mobile banking systems and airline mobile portals in China, supporting millions of users. We found that the robustness of Erlang and the freedom to optimize a component by migrating it to C were crucial during this process.