Successfully reported this slideshow.
Your SlideShare is downloading. ×

Simple software is hard...don't give up!

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 46 Ad

More Related Content

More from Bertrand Delacretaz (20)

Advertisement

Recently uploaded (20)

Simple software is hard...don't give up!

  1. 1. SimpleSoftwareisHard TalesfromtheTrenches BertrandDelacrétaz
 @bdelacretaz, grep.codeconsult.ch PrincipalScientist,CQ/AEMR&Dgroup,AdobeBasel
 ApacheSoftwareFoundationMemberandDirector November2014
 slidesrevision2014-11-14
  2. 2. lookingforanswers? wrongplace! I’mmoreaboutquestionstoday…
  3. 3. picture: dhester on morguefile.com couldwe invent this today?
  4. 4. beautifulsimplicity
assimpleaspossible,butnotsimpler (tobeprecise,it’saVictorinoxskipperknife)
  5. 5. a
 storyof simplicity
(twostories,actually)
  6. 6. s = UDP socket While(s is open) { Wait for packet Packet matches our filter? If not -> continue If yes: Compute storage path from T Append packet to storage file } 26linesofcode 3monthsof work (happilychuggingalongsince1999)
  7. 7. recorddigital audio
 continuously cannotlosemore
 than15seconds (remember-1999)
  8. 8. options? BigCo#1 BigCo#2 picture:RoganJoshonmorguefile.com picture:MrMagiconmorguefile.com
  9. 9. picture:RoganJoshonmorguefile.com N-dimensional picture:pschubertonmorguefile.com
  10. 10. picture:RoganJoshonmorguefile.com picture:andykonmorguefile.com 5127prototypes
  11. 11. overnight?no-8WIREDApril2011
  12. 12. picture:RoganJoshonmorguefile.com N-dimensional picture:pschubertonmorguefile.com
  13. 13. that’syouroptions… BigCo#1 BigCo#2 picture:RoganJoshonmorguefile.com picture:MrMagiconmorguefile.com
  14. 14. simpler? picture:RoganJoshonmorguefile.com picture:MrMagiconmorguefile.com
  15. 15. yes! picture:RoganJoshonmorguefile.com picture:MrMagiconmorguefile.com RTP
 packet
 recorder
  16. 16. 26linesofcode
 3months picture:RoganJoshonmorguefile.com picture:MrMagiconmorguefile.com RTP
 packet
 recorder s = UDP socket While(s is open) { Wait for packet Packet matches our filter? If not -> continue If yes: Compute storage path from T Append packet to storage file }
  17. 17. ifit’snotsimpleenoughyet donotgive up
  18. 18. picture:RoganJoshonmorguefile.com picture:MrMagiconmorguefile.com RTP
 packet
 recorder storage?
  19. 19. RTP
 packet
 recorder storage? continuousstorage seekbytimestamp variablespeedreplay 100%robust
  20. 20. enterpriseDB! picture:jusbenonmorguefile.com
  21. 21. picture:RoganJoshonmorguefile.com picture:pschubertonmorguefile.com N-dimensional
  22. 22. RTP
 packet
 recorder 2014/06/25/1402.rtp chronologicalhierarchyof
 timestamp-addressedfiles
 stores15secondsofRTPpackets unbreakable storage!
  23. 23. picture:RoganJoshonmorguefile.com picture:MrMagiconmorguefile.com RTP
 packet
 recorder storage 2014/06/25/1402.rtp continuousrecording continuousstorage seekbytimestamp variablespeedreplay s = UDP socket While(s is open) { Wait for packet Packet matches our filter? If not -> continue If yes: Compute storage path from T Append packet to storage file }
  24. 24. beautifulsimplicity
assimpleaspossible,butnotsimpler
  25. 25. Apowerfulmetaphor cat sortgrep awk stdout stderr pipelinemetaphor simplemodules simpleassemblymodel transparent,robust,powerful
  26. 26. Asimpleuniverse “TherearejustthreeabstractionsinApacheStorm: spouts,bolts,andtopologies.” PicturefromApacheStorm:distributedstreamprocessing
  27. 27. Asimplemodel picturefromhttp://de.wikipedia.org/wiki/MapReduce
  28. 28. SlingHealthChecks
  29. 29. donotreinvent themetaphor!whatdoesmyproblemlooklike?
  30. 30. ok,but high-end CMS?
  31. 31. HTTPrequest C C C C C CC C C processor dispatcher it’s
 justa
 Web
 server…
  32. 32. HTTP0.9
 (startsimple) GET/hello.txt <html>hello!</html> client server
  33. 33. HTTPrequests C C C C C CC C C dispatcher evenifit
 getsbusy… processor processor processor processor processor processor processor processor processor
  34. 34. inspiredbynature… multipleworkerswith specificroles picture:kakiskyonmorguefile.com
  35. 35. so, how?
  36. 36. putthebar high donotacceptextracomplexity
  37. 37. investinsimplicity canbeexpensive…andworthit
  38. 38. chasetheright metapho r “anetworkpacketsrecorderandplayer”
  39. 39. simplicityisa process youusuallyknowwhenyou’rethere
  40. 40. beautifulsimplicity
assimpleaspossible,butnotsimpler
  41. 41. whatarethe enablers?
  42. 42. modularitenablers
  43. 43. open
 developmenenablers
  44. 44. JCR’sbigtreewithlowcoupling
 promotes“local”simplictyenablers
  45. 45. ApacheSlingenablers
  46. 46. notsimpleenough? don’tgiveup! BTW...wearehiring!


×