1 / 52

Content Delivery - in a DevOps World

Content Delivery - in a DevOps World. Leif Hedstrom. Chief Architect, Cisco Cloud Services. July 8, 2012. One of the drivers to Open S ource Traffic Server Committer for Apache Traffic Server VP of Apache Traffic Server PMC ASF member Chief Architect, Cisco Cloud Services

delano
Télécharger la présentation

Content Delivery - in a DevOps World

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Content Delivery- in a DevOps World Leif Hedstrom Chief Architect, Cisco Cloud Services July 8, 2012

  2. One of the drivers to Open Source Traffic Server Committer for Apache Traffic Server VP of Apache Traffic Server PMC ASF member Chief Architect, Cisco Cloud Services zwoop@apache.org lhedstro@cisco.com @zwoop +zwoop Who am I?

  3. Why DevOps? A short story

  4. It’s a disaster! http://www.flickr.com/photos/historyinanhour/4775644390/

  5. Smart people trying to figure it out…

  6. Still a disaster, oh the humanity! http://www.flickr.com/photos/historyinanhour/4775644390/

  7. In the mean time … http://people.apache.org/~weijin/weijin.jpg

  8. Small fix, big results index 30ed932..b74defa 100644 --- a/iocore/net/UnixNetVConnection.cc +++ b/iocore/net/UnixNetVConnection.cc @@ -574,6 +574,9 @@ UnixNetVConnection::do_io_close(intalerrno /* = -1 */ ) write.vio.nbytes = 0; write.vio.op = VIO::NONE; + EThread *t = this_ethread(); + boolclose_inline = !recursion && nh->mutex->thread_holding == t; + INK_WRITE_MEMORY_BARRIER; if (alerrno && alerrno != -1) this->lerrno = alerrno; @@ -582,11 +585,8 @@ UnixNetVConnection::do_io_close(intalerrno /* = -1 */ ) else closed = -1; - if (!recursion) { - EThread *t = this_ethread(); - if (nh->mutex->thread_holding == t) - close_UnixNetVConnection(this, t); - } + if (close_inline) + close_UnixNetVConnection(this, t); }

  9. I’m happy! http://www.flickr.com/photos/mhedstrom/6763754839/

  10. DevOps reward (well, maybe … )

  11. So what is DevOps? • To me, it’s a collaborative, community driven way of developing software, services and IT solutions. • Tear down the borders (and rifts!) between Development and Operations. • Thrives on healthy Open Source communities.

  12. QPS is no longer a meaningful metric

  13. …Other things matters…

  14. Handling thousands of concurrent users Extensible (e.g. plugins, or scripts) Correctness HTTP/1.1 Keep-Alive Chunking etc. … and don’t forget features

  15. When all you have is a hammer … http://www.flickr.com/photos/aai/6936657289/

  16. Evaluate the features that matters to you!

  17. Forward proxy

  18. Transparent (or intercepting) proxy

  19. Reverse proxy

  20. Enemies of all content delivery Server latency 3-Way handshake Congestion control DNS lookups (Page flow)

  21. Enemies of all content delivery Server latency 3-Way handshake Congestion control DNS lookups (Page flow)

  22. TCP 3-way handshake

  23. Enemies of all content delivery Server latency 3-Way handshake Congestion control DNS lookups (Page flow)

  24. Congestion control

  25. Enemies of all content delivery Server latency 3-Way handshake Congestion control DNS lookups (Page flow)

  26. http://news.example.com/ http://finance.example.com/ http://groups.example.com/

  27. http://news.example.com/ http://finance.example.com/ http://groups.example.com/ vs http://www.example.com/news http://www.example.com/finance http://www.example.com/groups

  28. gzip matters http://www.flickr.com/photos/marcovdz/4520986339/

  29. Reduce your round-trips!

  30. Congestion control

  31. Real example (200KB uncompressed)

  32. A primary tool to fight 3-way handshake latency Helps against congestion control too But not always… Slow starts begins again after some idle time Keep-alive

  33. IW = min (4*SMSS, max (2*SMSS, 4380 bytes)) (RFC2581) Typically, 2-4 packets Old Congestion Window Size Algorithm:

  34. 10 New Linux Initial Congestion Window Size Algorithm:

  35. SPDY • Addresses many of the problems related to latency • Not a standard (yet) • SSL requirements, and other quirks, can be a hurdle

  36. Some history

  37. The Concurrency problem

  38. Solution 1: Multi-threading

  39. Problems with Multi-threading

  40. Solution 2: Event Processing

  41. Problems with event processing

  42. http://www.flickr.com/photos/stuartpilbrow/3345896050/

  43. Traffic Server model

  44. Data copies Context Switches Memory allocation Lock contention Four Horseman of Bad Performance

  45. http://www.flickr.com/photos/simpologist/16734948/

  46. http://www.flickr.com/photos/airosan/2232394342/

More Related