building resilient user experiences

38
Resilient User Experiences Mike Brittain , @mikebrittain

Upload: mike-brittain

Post on 06-May-2015

4.386 views

Category:

Technology


1 download

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

Page 1: Building Resilient User Experiences

Resilient User Experiences

Mike Brittain!"#$%&'# '( $)*")$$#")*, $&+,

@mikebrittain

Page 2: Building Resilient User Experiences

Interfaces and user experiencesthat adapt to technical and

architectural failure

Page 3: Building Resilient User Experiences
Page 4: Building Resilient User Experiences
Page 5: Building Resilient User Experiences
Page 6: Building Resilient User Experiences
Page 7: Building Resilient User Experiences
Page 8: Building Resilient User Experiences

/** * 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()));

}}

Page 9: Building Resilient User Experiences

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;}

Page 10: Building Resilient User Experiences
Page 11: Building Resilient User Experiences
Page 12: Building Resilient User Experiences
Page 13: Building Resilient User Experiences

Critical path

Page 14: Building Resilient User Experiences

Every back-end service is anopportunity for failure.

Page 15: Building Resilient User Experiences
Page 16: Building Resilient User Experiences
Page 17: Building Resilient User Experiences
Page 18: Building Resilient User Experiences

1

2 3

4

5 6

10

8

9

4

11

13

12

7

14

7

Page 19: Building Resilient User Experiences
Page 20: Building Resilient User Experiences
Page 21: Building Resilient User Experiences
Page 22: Building Resilient User Experiences
Page 23: Building Resilient User Experiences

Are you showing your visitors the door?

Page 24: Building Resilient User Experiences

! "## ms

Page 25: Building Resilient User Experiences

Non-blocking Ajax

Page 26: Building Resilient User Experiences

Google Docs

Google Calendar

Page 27: Building Resilient User Experiences

GMail

Page 28: Building Resilient User Experiences

“Oops, we aren’t able to access click metrics right now, do not worry —

your data is safe.”

Page 29: Building Resilient User Experiences

Product design doesn’t stopat !""# availability.

Page 30: Building Resilient User Experiences

Product

OpsDev

Page 31: Building Resilient User Experiences

1

2 3

4

5 6

10

8

9

4

11

13

12

7

14

7

Page 32: Building Resilient User Experiences

Operability reviews andpost-mortems

Page 33: Building Resilient User Experiences

Operational Mindset

OpsDev Product

Page 34: Building Resilient User Experiences

Business Priorities

Operational Mindset

OpsDev Product

Page 35: Building Resilient User Experiences

!"#$ %&$'( )*+ $++*+ ,$-!.",$

Page 36: Building Resilient User Experiences

This is hard

Page 37: Building Resilient User Experiences

... but the benefits are great.

Page 38: Building Resilient User Experiences

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