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
Integrating software
By andreimoustache
Integrating software
An introduction. What is software integration, why do you need it, and how to do it.
- 62