SlideShare a Scribd company logo
Test Driven Design
& deployment
2007-2010
2011-2013
2014-2015
2016-2018
2019-
Inuits was
founded
and became a
team
of 20+
employees
The first European
Igloos
opened its doors in
The
Netherlands and
Ukraine
Two new Igloos in
The
Czech Republic
and a
second Belgium
office
New Igloos in Hasselt
and
Poland. We became a
team
Of 100+ believers.
New Igloo close to
the port of Antwerp
and
80+ inuit.
Tom Coopman
Commit
‘89
Initial commit Master of science
Elektronics - ICT
Own financial
product
Commit
13da4c
Fanatically
developing
Commit
c8q49e
Exploring patterns
Commit
‘14
Research at spinoff
UA
Commit
‘18
Started @ Inuits
Commit
‘13
Commit
‘17
Jan Collijs
●
Linux & Open-Source enthusiast
●
Made my hobby my profession since 2012
●
Want to drink cocktails on the beach while
everything is automated
https://visibilityspots.org
@visibilityspots
Test Driven Development
1
1. You are not allowed to write any production code unless
it is to make a failing unit test pass.
1. You are not allowed to write any production code unless
it is to make a failing unit test pass.
2. You are not allowed to write any more of a unit test than is sufficient to fail;
compilation failures are failures.
1. You are not allowed to write any production code unless
it is to make a failing unit test pass.
3. You are not allowed to write any more production code than is sufficient
to pass the one failing unit test.
2. You are not allowed to write any more of a unit test than is sufficient to fail;
compilation failures are failures.
Test Driven Design & Deployment
Cons
●
Time consuming
●
Maintenance
●
Hard to do well
●
Everybody on same page
●
More focussed
●
Better code
●
Less debugging
●
Safer for changes
●
Safer for refactoring
●
Auto documents
Pros
Find the right balance in testing
Container
2
In 2013, Docker introduced what would become the industry standard for
containers. Containers are a standardized unit of software that allows
developers to isolate their app from its environment, solving the “it works on my
machine” headache. For millions of developers today, Docker is the de facto
standard to build and share containerized apps - from desktop, to the cloud. We
are building on our unique connected experience from code to cloud for
developers and developer teams.
docker
Dockerfile
FROM microsoft/dotnet:latest as builder
ADD ${PWD} /mnt/
RUN cd /mnt && dotnet build
RUN cd /mnt && dotnet publish -c Release -o publish
CalculatorService/CalculatorService.csproj
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1
COPY --from=builder /mnt/CalculatorService/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "CalculatorService.dll"]
Build
$ docker build -t TAG .
Orchestrators
3
Nomad
https://www.nomadproject.io/
Workload Orchestration Made Easy
A simple and flexible workload orchestrator to deploy and
manage containers and non-containerized applications across
on-prem and clouds at scale.
Nomad job file
job "bowling-result" {
datacenters = ["inuits"]
type = "batch"
group "bowling-result" {
task "bowling-result" {
driver = "docker"
config {
image = "$NEXUS_URL/bowling-result"
force_pull = true
auth {
server_address = "$NEXUS_URL"
username = "$NEXUS_USER"
password = "$NEXUS_PASSWORD"
}
logging {
type = "journald"
config {
tag = "BOWLING-RESULT"
}
}
}
}
}
}
Run job
$ nomad job run bowling-result.hcl
Pipeline
4
Gitlab
cfr part Test Driven Development
https://about.gitlab.com/
gitlab-ci.yml
image: microsoft/dotnet:latest
#image: mcr.microsoft.com/dotnet/core/sdk:3.1
stages:
- compile
- test
- build
- deploy
compile:
stage: compile
tags:
- inuits
script:
- "dotnet build"
- dotnet publish -c Release -o ../publish CalculatorService/CalculatorService.csproj
artifacts:
paths:
- publish/
test:
stage: test
tags:
- inuits
script:
- "cd CalculatorService.Tests"
- "dotnet test"
gitlab-ci.yml
build:
stage: build
image: docker:git
variables:
DOCKER_TLS_CERTDIR: "/certs"
services:
- docker:dind
before_script:
- docker login -u $NEXUS_USER -p $NEXUS_PASSWORD $NEXUS_URL
tags:
- nomad-docker-runner
script:
- docker build -t $NEXUS_URL/bowling-result:$CI_COMMIT_SHORT_SHA .
- docker tag $NEXUS_URL/bowling-result:$CI_COMMIT_SHORT_SHA $NEXUS_URL/bowling-result:latest
- docker push $NEXUS_URL/bowling-result:$CI_COMMIT_SHORT_SHA
- docker push $NEXUS_URL/bowling-result:latest
deploy:
stage: deploy
image: docker:git
variables:
DOCKER_TLS_CERTDIR: "/certs"
services:
- docker:dind
before_script:
- docker login -u $NEXUS_USER -p $NEXUS_PASSWORD $NEXUS_URL
- sed -i "s/$NEXUS_URL/$NEXUS_URL/g" bowling-result.hcl
- sed -i "s/$NEXUS_USER/$NEXUS_USER/g" bowling-result.hcl
- sed -i "s/$NEXUS_PASSWORD/$NEXUS_PASSWORD/g" bowling-result.hcl
tags:
- nomad-docker-runner
script:
- docker run --rm --network host -v ${PWD}/bowling-result.hcl:/tmp/bowling-result.hcl -e NOMAD_ADDR="$NOMAD_ADDR" $NEXUS_URL/nomad:0.11.1 job
run /tmp/bowling-result.hcl
Demo
5
Production
6
infrastructure
Metrics
https://prometheus.io/docs/introduction/overview/
Logging
https://www.elastic.co/what-is/elk-stack
Future enhancements
7
Pipeline - Deployments
goss
https://goss.rocks/
https://github.com/aelsabbahy/goss/tree/master/extras/dgoss
Environments
dev/staging/uat/prod
Nomad deployment strategies
blue/green
canary deployments
Future read
●
Test Driven Development
– Robert Martin
●
The bowling kata
INUITS bvba
Essensteenweg 31
2930 Brasschaat
Belgium
BE 0891.514.231
Contact:
+32.380.821.05
info@inuits.eu
inuits.eu
Jan Collijs
https://visibilityspots.org
@visibilityspots
jan.collijs@inuits.eu
Tom Coopman
@coopmantm
tom.coopman@inuits.eu

More Related Content

PDF
Auterion exhibiting at Zurich Tech Job Fair Spring 2019
PPT
[Curs Android] C05 - Emulator (IPW 2011)
PDF
Console Application Using Visual C/C++
PDF
Docker for Developers
PDF
Containerised Testing at Demonware : PyCon Ireland 2016
PDF
Scaling Engineering with Docker
PDF
Docker for Devs - John Zaccone, IBM
PDF
Docker in Production: How RightScale Delivers Cloud Applications
Auterion exhibiting at Zurich Tech Job Fair Spring 2019
[Curs Android] C05 - Emulator (IPW 2011)
Console Application Using Visual C/C++
Docker for Developers
Containerised Testing at Demonware : PyCon Ireland 2016
Scaling Engineering with Docker
Docker for Devs - John Zaccone, IBM
Docker in Production: How RightScale Delivers Cloud Applications

Similar to Test Driven Design & Deployment (20)

PDF
In cluster open source testing framework - Microservices Meetup
PPTX
Fits docker into devops
PPTX
Kubernetes is all you need
PDF
Containers, microservices and serverless for realists
PPTX
DockerCon EU 2015: Placing a container on a train at 200mph
PPTX
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
PPT
Containers 101
PDF
Containers and microservices for realists
PDF
Containers and Microservices for Realists
PPTX
OpenStack Boston
PPTX
Docker open stack boston
PDF
Docker and OpenStack Boston Meetup
PPTX
Containers: DevOp Enablers of Technical Solutions
PDF
Cloud Native Dünyada CI/CD
PDF
Introduction to DevOps and the Practical Use Cases at Credit OK
PPTX
Docker data science pipeline
PDF
Modernizing Java Apps with Docker
PDF
ContainerDays Boston 2015: "Continuous Delivery with Containers" (Nick Gauthier)
PPTX
Docker datascience pipeline
PDF
Cloud native development without the toil
In cluster open source testing framework - Microservices Meetup
Fits docker into devops
Kubernetes is all you need
Containers, microservices and serverless for realists
DockerCon EU 2015: Placing a container on a train at 200mph
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
Containers 101
Containers and microservices for realists
Containers and Microservices for Realists
OpenStack Boston
Docker open stack boston
Docker and OpenStack Boston Meetup
Containers: DevOp Enablers of Technical Solutions
Cloud Native Dünyada CI/CD
Introduction to DevOps and the Practical Use Cases at Credit OK
Docker data science pipeline
Modernizing Java Apps with Docker
ContainerDays Boston 2015: "Continuous Delivery with Containers" (Nick Gauthier)
Docker datascience pipeline
Cloud native development without the toil
Ad

Recently uploaded (20)

PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
ai tools demonstartion for schools and inter college
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
top salesforce developer skills in 2025.pdf
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Nekopoi APK 2025 free lastest update
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
AI in Product Development-omnex systems
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
Transform Your Business with a Software ERP System
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Design an Analysis of Algorithms II-SECS-1021-03
Design an Analysis of Algorithms I-SECS-1021-03
ai tools demonstartion for schools and inter college
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
top salesforce developer skills in 2025.pdf
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Nekopoi APK 2025 free lastest update
How to Migrate SBCGlobal Email to Yahoo Easily
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
AI in Product Development-omnex systems
Wondershare Filmora 15 Crack With Activation Key [2025
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Transform Your Business with a Software ERP System
Which alternative to Crystal Reports is best for small or large businesses.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
CHAPTER 2 - PM Management and IT Context
PTS Company Brochure 2025 (1).pdf.......
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Ad

Test Driven Design & Deployment

  • 1. Test Driven Design & deployment
  • 2. 2007-2010 2011-2013 2014-2015 2016-2018 2019- Inuits was founded and became a team of 20+ employees The first European Igloos opened its doors in The Netherlands and Ukraine Two new Igloos in The Czech Republic and a second Belgium office New Igloos in Hasselt and Poland. We became a team Of 100+ believers. New Igloo close to the port of Antwerp and 80+ inuit.
  • 3. Tom Coopman Commit ‘89 Initial commit Master of science Elektronics - ICT Own financial product Commit 13da4c Fanatically developing Commit c8q49e Exploring patterns Commit ‘14 Research at spinoff UA Commit ‘18 Started @ Inuits Commit ‘13 Commit ‘17
  • 4. Jan Collijs ● Linux & Open-Source enthusiast ● Made my hobby my profession since 2012 ● Want to drink cocktails on the beach while everything is automated https://visibilityspots.org @visibilityspots
  • 6. 1. You are not allowed to write any production code unless it is to make a failing unit test pass.
  • 7. 1. You are not allowed to write any production code unless it is to make a failing unit test pass. 2. You are not allowed to write any more of a unit test than is sufficient to fail; compilation failures are failures.
  • 8. 1. You are not allowed to write any production code unless it is to make a failing unit test pass. 3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test. 2. You are not allowed to write any more of a unit test than is sufficient to fail; compilation failures are failures.
  • 10. Cons ● Time consuming ● Maintenance ● Hard to do well ● Everybody on same page ● More focussed ● Better code ● Less debugging ● Safer for changes ● Safer for refactoring ● Auto documents Pros Find the right balance in testing
  • 12. In 2013, Docker introduced what would become the industry standard for containers. Containers are a standardized unit of software that allows developers to isolate their app from its environment, solving the “it works on my machine” headache. For millions of developers today, Docker is the de facto standard to build and share containerized apps - from desktop, to the cloud. We are building on our unique connected experience from code to cloud for developers and developer teams. docker
  • 13. Dockerfile FROM microsoft/dotnet:latest as builder ADD ${PWD} /mnt/ RUN cd /mnt && dotnet build RUN cd /mnt && dotnet publish -c Release -o publish CalculatorService/CalculatorService.csproj FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 COPY --from=builder /mnt/CalculatorService/publish/ App/ WORKDIR /App ENTRYPOINT ["dotnet", "CalculatorService.dll"]
  • 16. Nomad https://www.nomadproject.io/ Workload Orchestration Made Easy A simple and flexible workload orchestrator to deploy and manage containers and non-containerized applications across on-prem and clouds at scale.
  • 17. Nomad job file job "bowling-result" { datacenters = ["inuits"] type = "batch" group "bowling-result" { task "bowling-result" { driver = "docker" config { image = "$NEXUS_URL/bowling-result" force_pull = true auth { server_address = "$NEXUS_URL" username = "$NEXUS_USER" password = "$NEXUS_PASSWORD" } logging { type = "journald" config { tag = "BOWLING-RESULT" } } } } } }
  • 18. Run job $ nomad job run bowling-result.hcl
  • 20. Gitlab cfr part Test Driven Development https://about.gitlab.com/
  • 21. gitlab-ci.yml image: microsoft/dotnet:latest #image: mcr.microsoft.com/dotnet/core/sdk:3.1 stages: - compile - test - build - deploy compile: stage: compile tags: - inuits script: - "dotnet build" - dotnet publish -c Release -o ../publish CalculatorService/CalculatorService.csproj artifacts: paths: - publish/ test: stage: test tags: - inuits script: - "cd CalculatorService.Tests" - "dotnet test"
  • 22. gitlab-ci.yml build: stage: build image: docker:git variables: DOCKER_TLS_CERTDIR: "/certs" services: - docker:dind before_script: - docker login -u $NEXUS_USER -p $NEXUS_PASSWORD $NEXUS_URL tags: - nomad-docker-runner script: - docker build -t $NEXUS_URL/bowling-result:$CI_COMMIT_SHORT_SHA . - docker tag $NEXUS_URL/bowling-result:$CI_COMMIT_SHORT_SHA $NEXUS_URL/bowling-result:latest - docker push $NEXUS_URL/bowling-result:$CI_COMMIT_SHORT_SHA - docker push $NEXUS_URL/bowling-result:latest deploy: stage: deploy image: docker:git variables: DOCKER_TLS_CERTDIR: "/certs" services: - docker:dind before_script: - docker login -u $NEXUS_USER -p $NEXUS_PASSWORD $NEXUS_URL - sed -i "s/$NEXUS_URL/$NEXUS_URL/g" bowling-result.hcl - sed -i "s/$NEXUS_USER/$NEXUS_USER/g" bowling-result.hcl - sed -i "s/$NEXUS_PASSWORD/$NEXUS_PASSWORD/g" bowling-result.hcl tags: - nomad-docker-runner script: - docker run --rm --network host -v ${PWD}/bowling-result.hcl:/tmp/bowling-result.hcl -e NOMAD_ADDR="$NOMAD_ADDR" $NEXUS_URL/nomad:0.11.1 job run /tmp/bowling-result.hcl
  • 28. Future read ● Test Driven Development – Robert Martin ● The bowling kata
  • 29. INUITS bvba Essensteenweg 31 2930 Brasschaat Belgium BE 0891.514.231 Contact: +32.380.821.05 info@inuits.eu inuits.eu Jan Collijs https://visibilityspots.org @visibilityspots jan.collijs@inuits.eu Tom Coopman @coopmantm tom.coopman@inuits.eu