Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fighting Continuous Entropy

Fighting Continuous Entropy

What happens when you leave a codebase alone for a year? Would you expect it to still work? What about 5 years? 10 years?

If you've experienced you know the answer: it's a whole bunch of work to replatform the code to something more modern, more supported.

It doesn't have to be like this.

What if we used continuous integration and deployment techniques to ensure an easier future for ourselves and our future teams? Let's discuss a world in which we can write systems that, to a large degree, can look after themselves when we're not looking.

In this session, we'll explore code rot, continuous deployment, and the tools (automated and otherwise) you can use to keep your code alive for a bit longer.

garyfleming

April 04, 2019
Tweet

More Decks by garyfleming

Other Decks in Technology

Transcript

  1. !

  2. ▸ No source code (written in an older language) ▸

    Runs in a green screen terminal, ▸ Has to be emulated.
  3. WHAT IS ENTROPY? "a thermodynamic quantity representing the unavailability of

    a system's thermal energy for conversion into mechanical work, often interpreted as the degree of disorder or randomness in [a closed] system."
  4. SYSTEM EXPERIMENT: FISHES AND TIME ▸ 10 minutes? ▸ 10

    hours? ▸ 10 days? ▸ 10000 years?
  5. !

  6. EXPERIMENT: DEPENDENCY UPDATE DAILY ▸ Update ▸ Build and test

    ▸ Commit/Revert ▸ Commit causes CD to happen
  7. OUTCOME: DEPENDENCY UPDATE DAILY Mostly success! ▸ Some Major Version

    upgrades would need intervention, ▸ Temporary exclusions are important, ▸ Found unexpected end-to-end issues!
  8. INTERMEDIARY TOOLING ▸ Java -> Jabba ▸ Ruby -> RVM

    ▸ Node -> NVM ▸ Python -> Virtualenv (to some degree)
  9. AVOID SNOWFLAKE SERVERS ▸ Hard to Reproduce ▸ Hard to

    Modify ▸ Require manual processes, auditing, and docs.
  10. AVOIDING OBSOLESCENCE ▸ Move to new versions, ▸ Cautiously embrace

    new languages, ▸ Design language agnostic APIs