Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Boring dot com - the virtues of boring technology

3,966 views

Published on

See https://plus.google.com/+KristianK%C3%B6hntopp/posts/4dme9PNZ1pa for slide with text/spoken word as explaination.

Published in: Internet

Boring dot com - the virtues of boring technology

  1. 1. The virtues of boring technology Kristian Köhntopp, Scalability Team Veteran Boring
  2. 2. What people think Booking looks like… Photo: ©2012 Kristian Köhntopp
  3. 3. What Booking actually looks like… Photo: ©2015 Kristian Köhntopp
  4. 4. Interesting times…
  5. 5. Interesting times…
  6. 6. Interesting times… Photo: ©2012 Kristian Köhntopp
  7. 7. Boring Setup… nginx uwsgi MySQL Replication Write Read Apache mod_perl
  8. 8. Not using sharding… Web Server Group Apache (mod_perl) bp Database av Database Web Server Group Apache (mod_perl) bp Database
  9. 9. Doing it over an over again… Web Server Group Apache (mod_perl) Many Databases Fragile!
  10. 10. Many web servers… LB Redirect Many bp servers Load balanced direct connect Doing something about it…
  11. 11. Y U SO BORING? CC BY-SA 3.0 Kartin st, https://en.wikipedia.org/wiki/Pallas%27s_cat#/media/File:Manul2.jpg
  12. 12. Growth kills… Problem appears Solution must be ready Solution in use Solution falling apart 3 years, Factor 10 © 2006-2015 booking.com
  13. 13. Growth kills… Moore’s Law © 2006-2015 booking.com
  14. 14. Keep it simple, that’s complicated enough! "AK-47 type II Part DM-ST-89-01131". Public Domain - https://commons.wikimedia.org/wiki/File:AK-47_type_II_Part_DM-ST-89-01131.jpg
  15. 15. What’s wrong with this model? Wait… Wait… Result Set https SQL HTML
  16. 16. All the things we didn’t do… ● Not doing many network hops. ● Not doing distributed. ● Not doing asynchronous. ● Not doing microservices. ● Not doing schemaless. ● Not doing sharding. ● Not doing virtualization. ● Not doing hyperconvergence. ● Not doing multiple datacenters. ● Not doing multirepo. ● Not doing test driven development. ● Not doing change management.All Lies!
  17. 17. Not doing many network hops. ● Reliable, predictable performance. ● Low response time. ● Low response time variance. ● Works in a regular data-center network.
  18. 18. Not doing distributed… ● Strictly speaking a bug. ● We do have per-schema masters, ● we do multi-schema updates. ● This happes in places where it does not matter: ● Low concurrency, ● non-critical information. ● Also: “fsck” av Master user Master
  19. 19. Not doing asynchronous… ● Perl can’t (with MySQL) and mostly doesn’t (elsewhere). ● MySQL couldn’t. ● Non-critical Javascript on page for animations and spellchecking.
  20. 20. Not doing microservices… ● Codebase has structure and contracts. ● This does not express itself in the form of service boundaries. ● Saves a lot serialization/copying/instantiation. ● Less overhead. ● Less Jitter. ● Less locking issues.
  21. 21. Not doing schemaless… ● There is no such thing as schemaless. ● The sooner you admit that, the less painful it is going to be.
  22. 22. Not doing sharding… ● Except where we are doing it. ● Unfortunately, in an increasing number of places. ● Even where we aren’t doing it, we are seeing application-side hash-joins. ● At least they are visible.
  23. 23. Not doing virtualization… ● Again, predictable, reliable performance. ● Also, lots of problems with high density networking and computing. ● Semi-manual is painful. ● Fully automated is unreliable, and doesn’t scale. = 2005, 2 Racks 2015, 2U 50 Cores, 50 GBit/s, 512 GB SSD = moar IOPS!
  24. 24. Not doing hyperconvergence… ● Again, predictable, reliable performance. ● Does painful things to your network. ● Has high commit-latency. ● Good for archive storage. ● Bleeding edge technology. 18U Rack (resize vertically) 18U Rack (resize vertically) 18U Rack (resize vertically)
  25. 25. Not doing multiple datacenters… ● Well, there is CDN… ● Many, many, many images. ● The load for the active content actually isn’t that much.
  26. 26. Not doing multirepo… ● »The booking.com git-insanity.« ● Actually, the technical term is ● »Monorepo with trunk-based development and separation of rollout and activation.« ● Man, am I thankful for that, if only after the fact.
  27. 27. Not doing TDD… ● “Making it safe to test in production.” ● “Separation of rollout and activation.” ● “A/B-testing” aka “Requirements validation.” ● “Conversion tracking” aka “fast metrics.” ● Fast, lag-free monitoring.
  28. 28. Not doing change-management… ● “The Booking-Rules.” ● “Roll-Call.” ● “Separation of rollout and activation.” ● Duplicate data keeping. ● Fast, lag-free monitoring.
  29. 29. All the things we didn’t do… ● Not doing many network hops. ● Not doing distributed. ● Not doing asynchronous. ● Not doing microservices. ● Not doing schemaless. ● Not doing sharding. ● Not doing virtualization. ● Not doing hyperconvergence. ● Not doing multiple datacenters. ● Not doing multirepo. ● Not doing test driven development. ● Not doing change management.
  30. 30. http://booking.com/jobs Photo: ©2012 Kristian Köhntopp Want a boring job?

×