September 27th, 2013 | Published in Google Open Source
Monkey Project is an open source organization that focuses on the development of web backend technologies with products such as Monkey HTTP Server: a fast and lightweight HTTP Server for Linux and Embedded Linux, and Duda I/O: an event-driven and scalable web services framework in C.
This is our second year participating as a mentoring organization for the Google Summer of Code program and this year we were given four student slots. During the evaluation period we chose the students not just by their technical skills, but also their motivation, previous contribution with the organization, capacity to learn and ability to adapt to change.
After months of hard work, all students accomplished their main goals and they worked very hard to learn networking programming and different areas of the architecture of our HTTP server. Below are descriptions of the four projects our students worked on this summer.
- Monkey Architecture changes (Future Monkey proof for new protocols): Monkey HTTP Server is an event driven web server with a strong focus in Linux and its current architecture allows to extend the core features through plugins. But with the incoming improved protocols such as SPDY and HTTP/2.0, it requires a major refactoring to support multiple protocol layers in the proper way to avoid sacrifice performance. On this project, Sonny Karlsson is busy working on refactoring the plugin API and different scheduler mechanisms, the work completed is very promising and will be merged with mainline code shortly.
- Monkey Caching plugin: the Monkey server is very fast but it can still perform better by reducing some I/O, so this summer we received a good proposal to add caching support to the server through the plugin interface. Hamza Zia did research and tested different caching mechanisms and has already implemented the first caching prototype which is showing good performance improvements.
- Monkey Proxy Reverse plugin: a HTTP server not only needs to serve static content, it is mostly a proxy for different resources. This project aims to create a Proxy Reverse plugin with different balancing algorithms to add a security layer in front of backend servers and redirect requests per different configuration schemas. Nikola Nikov has implemented all required components to accomplish this goal, the plugin is in a good state and already functional for testing purposes.
Nikola Nikov's workstation
- Duda I/O - MariaDB/MySQL and PostgreSQL support: Duda I/O is a web services framework built on top of Monkey, it is an event driven extensible stack in C for high performance web applications. This goal of this project is the creation of two packages to add support for asynchronous connectivity to MariaDB/MySQL and PostgreSQL databases. Zeying Xie has done a very good job adding support for the relational databases mentioned. Now we support NoSQL and common DBs.
It is very important to us to keep our organization and community informed about "how" and "what" is being done by our students through the Google Summer of Code program. If you are interested in more technical details about each project, we invite you to follow the blogs (linked to the student’s names above) that are updated on a weekly basis.
By Eduardo Silva, Monkey Project - Google Summer of Code Organization Administrator