Integrating software 

An introduction

Integration, etc.

  • Software
  • Software life-cycle
  • Adjacent activities

Software

  • What makes software?
  • The problem it solves
  • The code
  • There's more to software

Software

  • ?
  • Code it
  • Run it
  • Profit

Software

  • Ohnoe bugs
  • Fix it
  • Run it
  • Profit

Software

  • Version control
  • git
  • GitHub, GitLab, BitBucket

Code -> Code repository

Building

  • Compiling
  • Unit tests
  • Other resources

Building

  • Build server
  • Clones the code repository
  • Compiles the code
  • Runs the unit tests
  • Creates the executable (artifact)

Building

  • Build server
  • TeamCity, Jenkins

Building

  • Executable
  • Artifact repository
  • All the versions

Artifact repository

  • Plain filesystem, FTP
  • Dedicated server
  • Artifactory, JFrog, NuGet, etc.

Executable -> Artifact repository

Collaboration

  • Collaborate on it?
  • Make sure it works?
  • Distribute it?

Collaboration

  • More people => more fun
  • More code => more complexity

Integration

  • Get everybody's work together
  • Pull Requests
  • Code review

Continuous Integration (CI)

  • Integrate often
  • Automate as much as possible
  • Unit tests

Testing

  • Unit tests
  • Integration tests
  • Other types of tests

Testing

  • Development team
  • Testing team
  • Different needs

Testing

  • Separate environment
  • Safe
  • OK to break stuff

Artifact repository -> Environments

Environments

  • Isolated
  • Whole system
  • Specific 

Environments

DEV

  • Development, testing
  • Full speed ahead!
  • Safe
  • Breaking things is OK

Environments

ACC

  • Acceptance, staging
  • Less breakage
  • Breaking things is still OK
  • Fix things immediately

Environments

PROD

  • Production, live
  • Tread lightly
  • $$$

Environments

  • ENV VARs
  • Configuration
  • Connection strings, accounts, IPs
  • Only difference

Deployment

  • Install the software
  • Download executable
  • Configure server
  • Etc

ENV_VARs -> Environments

Hm

Made with Slides.com