Software Instability

6,037 views

Published on

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

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,037
On SlideShare
0
From Embeds
0
Number of Embeds
2,121
Actions
Shares
0
Downloads
17
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Software Instability

  1. 1. Software Instability Renato Lucindo @rlucindo -- lucindo.github.com FFFFUUUU Conf 2010 -- ffffuuuu.me
  2. 2. What kind of software? Web Applications Kinda Big Distributed Systems
  3. 3. Production-ready Software works stable maintainable documented scalable
  4. 4. Real life Production Software it runs
  5. 5. Anatomy of a Real life Software focus on features poor logs no administrative tools no information poorly tested
  6. 6. Why? Feature centric "What're the odds of that happening?" Deadlines ReReReReReReprioritization Over confidence Inexperience Naiveness Over excitement
  7. 7. The Clients... Product Owner? Manager? Stakeholder? Who will deal with your mess? OPERATIONS
  8. 8. Building and Running a System
  9. 9. What to do?
  10. 10. Non-functional Requirements decent logs with context (user, host, operation, ...) automatic reload (configs, templates, ...) administrative tools plenty of it counters and statistics charts operations requirements
  11. 11. Tests that matter Fully automated functional test No mocks Log replay High concurrency test Bullet-proof tests The -STOP test Load test (iozone, gcc test) Kill test
  12. 12. How to add a new feature On/Off switch Tests with different versions Full system functional tests Upgrade test Downgrade (rollback) test
  13. 13. Architecture 101 Cache Queue Partition
  14. 14. Stability Patterns Use Timeouts Circuit Breaker Bulkheads Steady State Fail Fast Handshaking Test Harness Decoupling Middleware
  15. 15. Use your head!
  16. 16. What to expect
  17. 17. CAP Theorem
  18. 18. Failures Hardware failure Network failure Electricity Natural disasters Code failure
  19. 19. Bugs
  20. 20. Human Errors
  21. 21. Your cluelessness

×