Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software Instability


Published on

My presentation at FFFFUUUU Conf 2010

Published in: Technology
  • Be the first to comment

Software Instability

  1. 1. Software Instability Renato Lucindo @rlucindo -- FFFFUUUU Conf 2010 --
  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