Eduardo Silva - monkey http-server everywhere

46
Monkey Eduardo Silva ( edsiper ) [email protected] Jonathan Gonzalez ( Zeus ) [email protected] HTTP Server everywhere
  • date post

    20-Oct-2014
  • Category

    Technology

  • view

    8.212
  • download

    1

description

 

Transcript of Eduardo Silva - monkey http-server everywhere

Page 1: Eduardo Silva - monkey http-server everywhere

Monkey

Eduardo Silva ( edsiper )[email protected]

Jonathan Gonzalez ( Zeus )[email protected]

HTTP Server everywhere

Page 2: Eduardo Silva - monkey http-server everywhere

< Project Goals >

● Community !● Embedded in mind● Small core / Lightweight● Fast● Flexible API ● Linux Kernel

Page 3: Eduardo Silva - monkey http-server everywhere

< General Features >

● HTTP/1.1● Events oriented (async sockets)● Indented configuration● Ready for Embedded

Page 4: Eduardo Silva - monkey http-server everywhere

< Hardware Support >

● x86● x64● ARM

Page 5: Eduardo Silva - monkey http-server everywhere

< HTTP Client/Server Flow >

Page 6: Eduardo Silva - monkey http-server everywhere

< Monkey Architecture >

Page 7: Eduardo Silva - monkey http-server everywhere

Indented Configuration

Page 8: Eduardo Silva - monkey http-server everywhere
Page 9: Eduardo Silva - monkey http-server everywhere

< WORKERS >

● Scheduler

● Clock

Page 10: Eduardo Silva - monkey http-server everywhere

< Worker: Scheduler >

“Assign new client connection to a worker thread...”

Page 11: Eduardo Silva - monkey http-server everywhere

< Worker: Scheduler >

Page 12: Eduardo Silva - monkey http-server everywhere

< Worker: Clock >

“Keep in a global variable the current unix time and also a human readable time format as required per HTTP protocol...”

Page 13: Eduardo Silva - monkey http-server everywhere

< Worker: Clock >

Page 14: Eduardo Silva - monkey http-server everywhere

< Layer Models >

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

Page 15: Eduardo Silva - monkey http-server everywhere

< Monkey Layers >

Page 16: Eduardo Silva - monkey http-server everywhere

< Layer / Networking >

“Expose connectivity capabilities, in a few words: sockets support...”

Page 17: Eduardo Silva - monkey http-server everywhere

< Layer / Networking >

Page 18: Eduardo Silva - monkey http-server everywhere

< Layer / Events >

“Expose hooks for socket events...”

Page 19: Eduardo Silva - monkey http-server everywhere

< Layer / Events >

Page 20: Eduardo Silva - monkey http-server everywhere

< Layer / Stages >

“Specify the cycles of an HTTP connection and expose hooks for them...”

Page 21: Eduardo Silva - monkey http-server everywhere

< Layer / Stages >

Page 22: Eduardo Silva - monkey http-server everywhere

Plugins

Page 23: Eduardo Silva - monkey http-server everywhere

< Logger Plugin >

Page 24: Eduardo Silva - monkey http-server everywhere

< Logger Plugin >

Page 25: Eduardo Silva - monkey http-server everywhere

< Mandril Plugin >

Security

Page 26: Eduardo Silva - monkey http-server everywhere

< Mandril Security Plugin >

Page 27: Eduardo Silva - monkey http-server everywhere

< Liana Plugin >

Connectivity

Page 28: Eduardo Silva - monkey http-server everywhere

< Liana Plugin >

Page 29: Eduardo Silva - monkey http-server everywhere

SSL ?

Page 30: Eduardo Silva - monkey http-server everywhere

...Yes!

using MatrixSSL

Page 31: Eduardo Silva - monkey http-server everywhere

< Liana SSL Plugin >

Page 32: Eduardo Silva - monkey http-server everywhere

Liana 6IPv6 Support

Page 33: Eduardo Silva - monkey http-server everywhere

< IPv6 Plugin >

Page 34: Eduardo Silva - monkey http-server everywhere

HTML5Web Sockets

Page 35: Eduardo Silva - monkey http-server everywhere

< WebSockets Plugin >

Page 36: Eduardo Silva - monkey http-server everywhere
Page 37: Eduardo Silva - monkey http-server everywhere

Palm Plugin & App Server

Page 38: Eduardo Silva - monkey http-server everywhere

< Palm Plugin & App Server >

Page 39: Eduardo Silva - monkey http-server everywhere

< Benchmark >

Page 40: Eduardo Silva - monkey http-server everywhere

< Benchmark >

Apache Benchmark

Archivo : 100 bytes

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

ab -n 15000 -c 20 -k http://localhost/100b.txt

Page 41: Eduardo Silva - monkey http-server everywhere

< Requests/Second >

Monkey NginX Cherokee Apache0

5000

10000

15000

20000

25000

30000

Requests/Second

Page 42: Eduardo Silva - monkey http-server everywhere

< Memory Usage >

Monkey NginX Cherokee0

200

400

600

800

1000

1200

1400

1600

Uso de Memoria

Page 43: Eduardo Silva - monkey http-server everywhere

< List of features>

● HTTP/1.1● Virtual Hosts● IPv4 & IPv6● SSL● Security● Log writer

● Basic Auth● Directory Listing● CGI / Palm● Websockets● Shell

Page 44: Eduardo Silva - monkey http-server everywhere

< To Do List >

● FastCGI

● NoSQL !

● URL Rewrite

● Improve Docs!

Page 45: Eduardo Silva - monkey http-server everywhere

< Get Involved ! >

● Community

● Beta Testers

● Art Work

● Documentation

● Coding

Page 46: Eduardo Silva - monkey http-server everywhere

Q & A

Eduardo Silva ( edsiper ) Jonathan Gonzalez ( Zeus)[email protected] [email protected]