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

Deployment within a traditional IT environment

Rob Allen
November 08, 2016

Deployment within a traditional IT environment

Building line-of-business web applications for clients with traditional IT departments brings its own set of challenges when it comes to DevOps. In particular, the IT department adds additional constraints that you may not see in more forward-thinking companies. Rob Allen explores these complexities and shares some solutions he and his team came up with in order to use modern development practices in nontraditional environments. You’ll learn how CI tools with appropriate scripting enable reliable delivery of a quality product on IBM i and Windows. Rob also covers the organizational and technical challenges encountered when IT departments are not used to developers having a say in the server environment and shows you why it’s worth spending time getting them on board.

Presented at Velocity, Amsterdam, November 2016

Rob Allen

November 08, 2016
Tweet

More Decks by Rob Allen

Other Decks in Technology

Transcript

  1. What? Software deployment is all of the activities that make

    a software system available for use. Wikipedia Rob Allen ~ @akrabat
  2. Not in this talk • Cloud deployments • Provisioning of

    servers • Continuous Delivery • Chat Ops Rob Allen ~ @akrabat
  3. Code organisation • Isolate work • Work on branches •

    Always have a way to bugfix live Rob Allen ~ @akrabat
  4. Automatic testing Automatically test every PR • Coding style •

    Unit tests • Functional tests • Acceptance tests Rob Allen ~ @akrabat
  5. Migrations • Schema changes stored in individual files • delta

    files with UP and DOWN functionality • It really doesn't matter which tool you use Rob Allen ~ @akrabat
  6. Context awareness Each instance needs different configuration • Environment variables

    (12factor.net/config) • Local configuration file Rob Allen ~ @akrabat
  7. Manual deployment Simply copy the files to the right place

    (S)FTP / rsync / Remote Desktop Rob Allen ~ @akrabat
  8. Manual deployment • Slow • Inconsistencies between each deploy •

    Failures in production • No records. Who deployed what, when (or where)? Rob Allen ~ @akrabat
  9. Other things to think about • File permissions • Preserve

    user uploaded files • After upload • Stale cache? • Cache priming? • Keeping records Rob Allen ~ @akrabat
  10. Automation People: good at creative judgement Machines: good at doing

    the same thing over and over Rob Allen ~ @akrabat
  11. Benefits • Deferred deployments • Self-service deployments • Automatically triggered

    deployments • Smoke tests • Automatic rollbacks Rob Allen ~ @akrabat
  12. Scripts • Provide consistency • Provide a platform for additional

    abilities • No need to wait for other people • Faster and less hassle. Rob Allen ~ @akrabat
  13. Deployment checklist • Copy files & folders • Database schema

    & content updates • Configuration updates • File permissions • Clear caches Rob Allen ~ @akrabat
  14. Make-like tool • Abstracted script • Easier to make cross

    platform • Make/Phing/Ant/Rake • More likely to push to server Rob Allen ~ @akrabat
  15. Political • What is acceptable? • What are you allowed

    to do? • Does IT change things for you? • Does IT change things unexpectedly? • Change request documentation? Rob Allen ~ @akrabat
  16. Case study 1: Internal • Self-hosted by client • Within

    company network • Windows/IIS/SQL Server Rob Allen ~ @akrabat
  17. Case study 1: Internal Multi-script solution 1. Script to tag

    code & build tarball 2. Ship tarball to UAT server via VPN 3. IT copy tarball from UAT to Live 4. Script to untar & run deploy steps Rob Allen ~ @akrabat
  18. Case study 2: Minicomputer • Self-hosted by client • Some

    access to Internet • IBM i-series/DB2 Rob Allen ~ @akrabat
  19. Case study 2: Minicomputer • CI tooling • Checklist •

    Manual tag creation for release • Automatic script to deploy Rob Allen ~ @akrabat