SlideShare a Scribd company logo
1 of 29
Download to read offline
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.
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

Similar to Test Driven Design & Deployment

Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...
Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...
Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...Intel® Software
 
IRJET- IOT Dune Buggy –Control it from Anywhere
IRJET- IOT Dune Buggy –Control it from AnywhereIRJET- IOT Dune Buggy –Control it from Anywhere
IRJET- IOT Dune Buggy –Control it from AnywhereIRJET Journal
 
IRJET- IOT Dune Buggy –Control it from Anywhere
IRJET-  	  IOT Dune Buggy –Control it from AnywhereIRJET-  	  IOT Dune Buggy –Control it from Anywhere
IRJET- IOT Dune Buggy –Control it from AnywhereIRJET Journal
 
How to develop a Flutter app.pdf
How to develop a Flutter app.pdfHow to develop a Flutter app.pdf
How to develop a Flutter app.pdfSmith Daniel
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday developmentJustyna Ilczuk
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDocker, Inc.
 
arduino 320126512170.pptx
arduino 320126512170.pptxarduino 320126512170.pptx
arduino 320126512170.pptxpriyaanaparthy
 
Cloud Conf 2015 - Develop and Deploy IOT Applications
Cloud Conf 2015 - Develop and Deploy IOT ApplicationsCloud Conf 2015 - Develop and Deploy IOT Applications
Cloud Conf 2015 - Develop and Deploy IOT ApplicationsCorley S.r.l.
 
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXo Platform
 
Hands on-intro to Node-RED
Hands on-intro to Node-REDHands on-intro to Node-RED
Hands on-intro to Node-REDPooja Mistry
 
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019TechMeetups
 
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019TechMeetups
 
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019TechMeetups
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisOW2
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)Samsung Open Source Group
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...Ambassador Labs
 
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18Jorge Morales
 
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Ambassador Labs
 

Similar to Test Driven Design & Deployment (20)

Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...
Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...
Accelerate Your IoT and Robotics Development Using Web Technology and Apache ...
 
IRJET- IOT Dune Buggy –Control it from Anywhere
IRJET- IOT Dune Buggy –Control it from AnywhereIRJET- IOT Dune Buggy –Control it from Anywhere
IRJET- IOT Dune Buggy –Control it from Anywhere
 
IRJET- IOT Dune Buggy –Control it from Anywhere
IRJET-  	  IOT Dune Buggy –Control it from AnywhereIRJET-  	  IOT Dune Buggy –Control it from Anywhere
IRJET- IOT Dune Buggy –Control it from Anywhere
 
How to develop a Flutter app.pdf
How to develop a Flutter app.pdfHow to develop a Flutter app.pdf
How to develop a Flutter app.pdf
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday development
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
arduino 320126512170.pptx
arduino 320126512170.pptxarduino 320126512170.pptx
arduino 320126512170.pptx
 
Cloud Conf 2015 - Develop and Deploy IOT Applications
Cloud Conf 2015 - Develop and Deploy IOT ApplicationsCloud Conf 2015 - Develop and Deploy IOT Applications
Cloud Conf 2015 - Develop and Deploy IOT Applications
 
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
 
Hands on-intro to Node-RED
Hands on-intro to Node-REDHands on-intro to Node-RED
Hands on-intro to Node-RED
 
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
 
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
 
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
Auterion exhibiting at Zurich Tech Job Fair Autumn 2019
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
 
webthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzrwebthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzr
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
CV Juhani Polvi
CV Juhani PolviCV Juhani Polvi
CV Juhani Polvi
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
 
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
 
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
 

Recently uploaded

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 

Recently uploaded (20)

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 

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.
  • 9.
  • 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