Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dealing with big black boxes

Fergus Doyle
September 20, 2014

Dealing with big black boxes

"Full-stack" includes so much more than just client and server these days, with systems building on top of multiple database engines, caching layers, search backends, third party web services and hosting solutions to name but a few.

What does this mean for infrastructure? In this talk we'll explore the impact maintaining so many independent cogs can have on a system as a whole.

We’ll look at third-party components vs. those developed and maintained in-house and their similarities and differences. How can we encapsulate and efficiently test components in such disparate systems? What can we do to minimise the overhead and risk of releasing new code to individual components nested deep within the machine?

Fergus Doyle

September 20, 2014
Tweet

More Decks by Fergus Doyle

Other Decks in Technology

Transcript

  1. Introduction Who am I? Distributed systems Services and their dependencies

    Not all integration tests are evil ... but some are
  2. Distributed systems can be difficult! Harder to see the big

    picture Visibility and standardisation of tools Integration points between components Atomicity of actions Debugging / Tracebacks / Callstacks
  3. Close to perfection production Always have a realistic test environment

    Always have a staging environment that mirrors production
  4. Swapping out cogs (releasing) Expect the system to evolve Make

    sure you test against the current versions of everything else Re-run the circles prior to release Confidence is key Check the surrounding cogs
  5. Looking inside the box Introspect the box - tooling for

    live systems Monitor - Logstash, StatsD Report - Sentry, pagerduty
  6. What does it all mean Systems grow out of necessity

    - the distributed paradigm is just one way of managing this Don't lose sight of the overall system while working at the smaller scale Classify your tests and be clear on what you're testing Make sure you have tools to do the hard stuff for you