building resilient user experiences
DESCRIPTION
Video of this talk from the Velocity Conference 2012: http://www.youtube.com/watch?v=bM0yL0eQ9EM Large-scale sites are complex systems, where every page is generated with data pulled from multiple back-end data stores and services. Yet, not every piece of data on the page is critical to the user experience. The front-end of your site (i.e. front-end applications, templates, and user interface) needs to be designed to tolerate service outages. We can achieve this by teaching our product design teams about working with an operational mindset, and having our product teams inform our engineering and operations teams about business priorities so that they can anticipate the right patterns to use for fault-tolerance.TRANSCRIPT
Resilient User Experiences
Mike Brittain!"#$%&'# '( $)*")$$#")*, $&+,
@mikebrittain
Interfaces and user experiencesthat adapt to technical and
architectural failure
/** * Creates a database connection. */ public function __construct($host, $user, $pass, $db) { parent::__construct($host, $user, $pass, $db);
if (mysqli_connect_error()) {
throw new DBConnection_Exception( sprintf("Error: %s, %s", mysqli_connect_errno(), mysqli_connect_error()));
}}
try { $conn = new DBConnection('viewsdb.host', 'db_read_user', 'ssssshh!', 'views_db');} catch (DBConnection_Exception $e) {
// TODO: Someone should figure out what to do if // we can't connect to the views db. throw $e;}
Critical path
Every back-end service is anopportunity for failure.
1
2 3
4
5 6
10
8
9
4
11
13
12
7
14
7
Are you showing your visitors the door?
! "## ms
Non-blocking Ajax
Google Docs
Google Calendar
GMail
“Oops, we aren’t able to access click metrics right now, do not worry —
your data is safe.”
Product design doesn’t stopat !""# availability.
Product
OpsDev
1
2 3
4
5 6
10
8
9
4
11
13
12
7
14
7
Operability reviews andpost-mortems
Operational Mindset
OpsDev Product
Business Priorities
Operational Mindset
OpsDev Product
!"#$ %&$'( )*+ $++*+ ,$-!.",$
This is hard
... but the benefits are great.
Flickr: striatichttp://www.flickr.com/photos/34427466731@N01/2192192956/
Flickr: roboppyhttp://www.flickr.com/photos/51035735481@N01/163374138/
Flickr: jamesjyuhttp://www.flickr.com/photos/32593095@N00/3465022/
Flickr: circulatinghttp://www.flickr.com/photos/26835318@N00/2318226026/
PHOTO CREDITS