14
DON’T ROLL YOUR OWN HTTP SERVER JOEL W KALL, CHIEF CCO OFFICER @ LOOP54

Don't roll your own HTTP server

Embed Size (px)

Citation preview

Page 1: Don't roll your own HTTP server

DON’T ROLL YOUR OWN HTTP SERVER

JOEL W KALL, CHIEF CCO OFFICER @ LOOP54

Page 2: Don't roll your own HTTP server

Loop54

• On-site e-commerce search engine• SaaS• Relevant search results• Machine learning

Page 3: Don't roll your own HTTP server

In the beginning

• Small scale prototype• Nothing fancy – just accept requests• No configuration

Page 4: Don't roll your own HTTP server

HTTP request-response sample

POST /path HTTP/1.1Content-Type: application/jsonContent-Length: 28

{“key”:”value”

}

HTTP/1.1 200 OKContent-Type: application/jsonContent-Length: 31

{"anotherkey":"andavalue"

}

Page 5: Don't roll your own HTTP server

HOLD MY BEERHOW HARD CAN IT BE?

Page 6: Don't roll your own HTTP server

ENCODINGHEADACHE #1

Page 7: Don't roll your own HTTP server

SOCKET QUEUEHEADACHE #2

Page 8: Don't roll your own HTTP server

CONTENT LENGTHHEADACHE #3

Page 9: Don't roll your own HTTP server

NAGLINGHEADACHE #4

Page 10: Don't roll your own HTTP server

100 CONTINUEHEADACHE #5

Page 11: Don't roll your own HTTP server

VERSIONINGHEADACHE #6

Page 12: Don't roll your own HTTP server

KEEP-ALIVE & PIPELININGTHE NAIL IN THE COFFIN

Page 13: Don't roll your own HTTP server

Kestrel to the resqueue

• Part of ASP.NET Core, embeddable• Cross-platform• 5% faster, 15% less memory• Full HTTP support• Probably more secure

Page 14: Don't roll your own HTTP server

DON’T DO IT!BUT IF YOU DO, READ UP BEFOREHAND