$30 off During Our Annual Pro Sale. View Details »

Decisions Decisions

Decisions Decisions

Architecture isn't just the static "shape" of your software. It's the set of decisions that define it, enabling — or inhibiting — change, evolution and improvement over time.

It is also the decisions about how you verify, deploy, version, manage and monitor an application. Each of these decisions is a trade-off: there are no Best Practises. Some decisions can have a huge forward impact, and it isn't always obvious which ones!In this talk Dan offers several strategies to help you improve your architecture decision-making.

He won't tell you whether to prefer stability or uncertainty, DRYness or coupling, latency or throughput, manual or automated testing. That's up to you. But he might help you go into those decisions with your eyes open.

Daniel Terhorst-North
PRO

June 06, 2012
Tweet

More Decks by Daniel Terhorst-North

Other Decks in Programming

Transcript

  1. Decisions, Decisions
    Dan North
    @tastapod

    View Slide

  2. @tastapod
    Every decision is a trade-off
    development
    architecture
    deployment

    View Slide

  3. @tastapod
    Development – the trade-offs
    automated or manual build
    automated or manual testing
    test-driven or test-after development
    or test-first
    or test-whenever!

    View Slide

  4. @tastapod
    Spike and Stabilize – a pattern
    Why do we do TDD?
    What is the opportunity cost of TDD?
    feedback from defects or feedback from users
    Invest in code based on evidence

    View Slide

  5. @tastapod
    Architecture – the trade-offs
    monolith or components
    objects or functions
    synchronous or asynchronous
    threads or single event loop
    or actors or CSP

    View Slide

  6. @tastapod
    Short Software Half-Life – a pattern
    Small, separate components
    Each component does one thing
    Hard shell, soft centre
    The message is the API
    identifiable boundaries for experimenting

    View Slide

  7. @tastapod
    Evolvable architecture
    DRY or ...?
    Evolution is anything but DRY!
    DNA doesn't refactor
    decoupled

    View Slide

  8. @tastapod
    Ginger Cake – a pattern

    View Slide

  9. 1.5 cups flour 3 tablespoons cocoa
    1 teaspoon baking soda 1 cup sugar
    1/2 teaspoon salt 1 tablespoon white vinegar
    1 tablespoon vanilla 4 tablespoons melted butter
    1 cup cold water
    Mix dry ingredients together. Make three wells in the
    mixture. In the first well, pour vinegar, in the second
    vanilla, and in the third, the liquid fat. Pour cold
    water over the whole thing and mix together well. Pour
    batter into a 9x9 pan, ungreased, and bake at 350
    degrees for 35 to 40 minutes.
    chocolate cake
    @tastapod

    View Slide

  10. ginger cake
    like chocolate cake
    (but with ginger)
    @tastapod

    View Slide

  11. @tastapod
    Deployment – the trade-offs
    automated or manual deployment
    vertical or horizontal scaling
    managed or in-house
    virtual or physical

    View Slide

  12. @tastapod
    Dancing Skeleton – a pattern
    Get something – anything! – into production
    Full stack, with an interface
    Fire, aim, ready!
    Theory is only like practice in theory

    View Slide

  13. @tastapod
    When you know what you are
    trading off
    you can make
    informed decisions

    View Slide

  14. Thanks for listening
    @tastapod
    http://dannorth.net
    [email protected]

    View Slide