Monkey
HTTP Server everywhere




Eduardo Silva ( edsiper )
edsiper@monkey-project.com

Jonathan Gonzalez ( Zeus )
zeus@gnu.org
< Project Goals >

● Community !
● Embedded in mind

● Small core / Lightweight

● Fast

● Flexible API

● Linux Kernel
< General Features >

● HTTP/1.1
● Events oriented (async sockets)

● Indented configuration

● Ready for Embedded
< Hardware Support >

    ● x86
    ● x64

    ● ARM
< HTTP Client/Server Flow >
< Monkey Architecture >
Indented Configuration
< WORKERS >

  ●   Scheduler

  ●   Clock
< Worker: Scheduler >


      “Assign new client connection
       to a worker thread...”
< Worker: Scheduler >
< Worker: Clock >


    “Keep in a global variable the current
     unix time and also a human
     readable time format as required
     per HTTP protocol...”
< Worker: Clock >
< Layer Models >

● OSI    : O. System Inter 7 layers
● TCP/IP : Internet        4 layers
● MOL    : Monkey Layers 3 layers
< Monkey Layers >
< Layer / Networking >


        “Expose connectivity capabilities,
         in a few words: sockets support...”
< Layer / Networking >
< Layer / Events >



        “Expose hooks for socket events...”
< Layer / Events >
< Layer / Stages >


         “Specify the cycles of an HTTP
          connection and expose hooks
          for them...”
< Layer / Stages >
Plugins
< Logger Plugin >
< Logger Plugin >
< Mandril Plugin >




    Security
< Mandril Security Plugin >
< Liana Plugin >




 Connectivity
< Liana Plugin >
SSL ?
...Yes!

using MatrixSSL
< Liana SSL Plugin >
Liana 6
IPv6 Support
< IPv6 Plugin >
HTML5
Web Sockets
< WebSockets Plugin >
Palm Plugin & App Server
< Palm Plugin & App Server >
< Benchmark >
< Benchmark >

    Apache Benchmark

    Archivo      : 100 bytes

    NginX        : v1.0        port = 2002
    Cherokee     : v1.2.2      port = 2003
    Apache2      : v2.2.17     port = 80
    Monkey       : v0.14.0     port = 2001

    ab -n 15000 -c 20 -k http://localhost/100b.txt
< Requests/Second >

     30000


     25000


     20000


     15000                                        Requests/Second


     10000


      5000


        0
             Monkey   NginX   Cherokee   Apache
< Memory Usage >

    1600

    1400

    1200

    1000

     800                               Uso de Memoria

     600

     400

     200

      0
           Monkey   NginX   Cherokee
< List of features>

● HTTP/1.1            ● Basic Auth
● Virtual Hosts       ● Directory Listing

● IPv4 & IPv6         ● CGI / Palm

● SSL                 ● Websockets

● Security            ● Shell

● Log writer
< To Do List >

 ●   FastCGI

 ●   NoSQL !

 ●   URL Rewrite

 ●   Improve Docs!
< Get Involved ! >
  ●   Community

  ●   Beta Testers

  ●   Art Work

  ●   Documentation

  ●   Coding
Q&A
Eduardo Silva ( edsiper )    Jonathan Gonzalez ( Zeus)
edsiper@monkey-project.com   zeus@gnu.org

Eduardo Silva - monkey http-server everywhere