Abstract all the things

David Barroso <dbarroso@fastly.com>

abstraction layer

"All problems in computer science can be solved by another level of indirection"

David Wheeler

Once upon a time


  • Lots of manual work. Hello typos.
  • Remember to not forget any command
  • Remember all the specifics commands and workflows of each potential platform
  • The buffer will bite you back if your config is too long

Template all the things


  • Still a lot of manual work. Hello again, typos.
  • Lots of data to track
  • Duplicated information
  • Never forget a command again

Step back

What are you trying to achieve?

ABSTRACT

Template all the things


  • Things just happened
  • We abstracted our goal and our vendors
  • Still some manual labor still to check everything is fine
  • People has to know how to add/remove a link
  • I have to remember a not very intuitive long command, that I have to set a variable called commit_changes

Did I say abstract already?


  • 🌈 🦄 👸 🐸 ✨ 👽 🤖
  • You can add/remove a link without having a clue what happens behind the scenes
  • check_fabric_health is a red/green check

Abstract again!


  • Operations exposed to the entire organization
  • Do you want to know what happened at 3am when things blew? Just scroll up
  • An API to connect all the systems

Let's recap

  • We abstracted individual interfaces and BGP peers
  • We abstracted our real goal; build a fabric
  • We also abstracted our network equipment
  • We abstracted the operations: adding/removing a link and checking the fabrics' health
  • We finally abstracted the environment by exposing it via slack and an API

Questions?

Don't abstract them

https://www.dravetech.com/presos/abstraction.html
https://github.com/dravetech/preso_abstract_all_the_things