software instability

22
Software Instability Renato Lucindo @rlucindo -- lucindo.github.com FFFFUUUU Conf 2010 -- ffffuuuu.me

Upload: renato-lucindo

Post on 05-Dec-2014

4.458 views

Category:

Technology


7 download

DESCRIPTION

My presentation at FFFFUUUU Conf 2010 http://ffffuuuu.me

TRANSCRIPT

Page 1: Software Instability

Software Instability

Renato Lucindo@rlucindo -- lucindo.github.com

FFFFUUUU Conf 2010 -- ffffuuuu.me

Page 2: Software Instability

What kind of software?

Web ApplicationsKinda BigDistributed Systems

Page 3: Software Instability

Production-ready Software

worksstablemaintainabledocumentedscalable

Page 4: Software Instability

Real life Production Software

it runs

Page 5: Software Instability

Anatomy of a Real life Software

focus on featurespoor logsno administrative toolsno informationpoorly tested

Page 6: Software Instability

Why?

Feature centric"What're the odds of that happening?"DeadlinesReReReReReReprioritization

Over confidenceInexperienceNaivenessOver excitement

Page 7: Software Instability

The Clients...

Product Owner?Manager?Stakeholder?

Who will deal with your mess?

OPERATIONS

Page 8: Software Instability

Building and Running a System

Page 9: Software Instability

What to do?

Page 10: Software Instability

Non-functional Requirements

decent logswith context (user, host, operation, ...)

automatic reload (configs, templates, ...)administrative tools

plenty of itcounters and statisticschartsoperations requirements

Page 11: Software Instability

Tests that matter

Fully automated functional testNo mocksLog replayHigh concurrency testBullet-proof tests

The -STOP testLoad test (iozone, gcc test)Kill test

Page 12: Software Instability

How to add a new feature

On/Off switchTests with different versionsFull system functional testsUpgrade testDowngrade (rollback) test

Page 13: Software Instability

Architecture 101

Cache

Queue

Partition

Page 14: Software Instability

Stability Patterns

Use TimeoutsCircuit BreakerBulkheadsSteady StateFail FastHandshakingTest HarnessDecoupling Middleware

Page 15: Software Instability

Use your head!

Page 16: Software Instability

What to expect

Page 17: Software Instability

CAP Theorem

Page 18: Software Instability

Failures

Hardware failureNetwork failureElectricityNatural disastersCode failure

Page 19: Software Instability

Bugs

Page 20: Software Instability

Human Errors

Page 21: Software Instability

Your cluelessness

Page 22: Software Instability