Streamlining
build & deploy pipelines for microservices
LeviNine ♡ Andrei Mustață ♡ Wehkamp
Mustață
- Software-related activities
- LeviNine
- Wehkamp
wehkamp.nl
- Lots of people working
- Co-ordination can be hard
Architecture
- Microservices
- Apache Kafka
- One repo / service
- Team manages repos
- Decoupled ✓
Tech stack
- Specialists
- Scala, dotnet, JavaScript
- Less writing, more reusing
- Standardised packaging - docker
- Freedom to experiment ✓✓
Building
- git repo
- ???
- docker image
git repo
- Naming convention
- Dockerfile
Jenkins
- Jenkins DSL (Groovy)
- Job definitions in git
job('build-some-service') {
scm {
git('git://github.com/some-organisation/some-service.git')
}
triggers {
scm('H/15 * * * *')
}
steps {
maven('-e clean test')
}
}Jenkins seed
- Scan all the repos
- Create build job
docker build
docker push- Docker images
- JARs, nupkg, npm
Deploying
- docker image registry
- ???
- config
- docker orchestrator
docker image registry
- login-service: 192-4f23cd
- basket-service: 312-89bb31
- ...
Jenkins
- Jenkins DSL (Groovy)
- Job definitions in git
job('build-some-service') {
scm {
git('git://github.com/some-organisation/some-service.git')
}
triggers {
scm('H/15 * * * *')
}
steps {
maven('-e clean test')
}
}Jenkins seed
- Scan all the repos
- Create deploy job
- Get image
- Get config
Config
- Environment variables
- Set in git
Sum it up
- Naming conventions
- Templates
- Standardise packaging
- Standardise deploying
Finito
Streamlining
By andreimoustache
Streamlining
- 39