All My Tests Are Passing, Now What?

998 views

Published on

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

No Downloads
Views
Total views
998
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • All My Tests Are Passing, Now What?

    1. 1. All My Tests Are Passing Now What? Chris.Read@ThoughtWorks.com
    2. 2. Software has no value outside of production... • No matter how clean the code • No matter how clean the server room
    3. 3. ...but most software is built to pass QA • Developers sometimes don’t even understand what production will look like • Configuration reflects development environment
    4. 4. Where does our software need to run? • So where does code go after all your tests pass?
    5. 5. Developer Workstations • Often the sweet spot • High rate of change in all directions • Need to get up and running quickly
    6. 6. Continuous Integration • Unit testing • Functional testing • Integration testing • Stubbed • Mocked
    7. 7. Integration • Lots of endpoints (hopefully all of them) • Does my app play nice with others?
    8. 8. Performance • Scaling • Responsiveness • Does my app meet performance criteria?
    9. 9. Formal Acceptance • Sign off the stories...
    10. 10. Staging • Let’s practice deployment
    11. 11. Production • Yay! We’re live at last! All done...
    12. 12. Disaster Recovery • ... not done yet! • DR often has a few subtle differences
    13. 13. All these places need Configuration
    14. 14. Different types of configuration • Environments are different • Different owners • Different rates of change
    15. 15. Developer Centric • Spring Wiring • ORM Models • It’s actually code!
    16. 16. Environment Specific • Hostnames • Passwords • Connection Strings
    17. 17. Application Centric • Pool sizes • Memory sizes • Timeouts
    18. 18. Operator Centric • Logging • Alerting • Monitoring • Housekeeping
    19. 19. Config Management Maturity Model • How do people manage it now?
    20. 20. CMMM 0 • Don’t understand the distinction between configuration and code • “Just edit stuff in production until it works”
    21. 21. CMMM I • Manual Installation • Manual Configuration • Massive Release Notes • Slow • Error Prone
    22. 22. CMMM II • Hard Coded Configuration • Build per environment • Configuration in SCM with code • What’s tested is not what gets to production
    23. 23. CMMM III • Configuration in separate SCM • Automated configuration at deploy time • One package for all environments • Forked configuration - missing and/or deprecated entries
    24. 24. CMMM IV • LDAP/DNS/JNDI • Puppet/Chef/SMS • Focussed on machine level config, not app • Hard to administer • Hard for developers to view and use
    25. 25. CMMM V ? • Configuration Repository • Cross Platform • Language Independent • Encrypt Sensitive Values
    26. 26. Summary • Configuration is hard • Poor configuration management impacts software quality • There’s a lot of room here to make things better...
    27. 27. Escape • http://code.google.com/ p/escservesconfig • Open Source • Apache2 Licensed • Let’s try make things better...

    ×