SlideShare a Scribd company logo
“Let’s put Numéro into Containers on
Windows!”
This is what happened…
Callcredit
Who we are
• Credit Reference Agency
• Data Company
• Windows .NET
• “Software” Products
Protects Cardholder Data
Regulates Use & Storage of Personal Info.
Implementation of the FoI Act
Financial markets need to be honest, fair and effective so that consumers get a fair deal.
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
numéro
Numéro solutionNuméro solution
Some Of Our Clients
UTILITYTELECOMSRETAIL FINANCIAL GOV
Platform
 Windows
 SQL
 .Net / IIS
 Java / Tomcat
 NodeJS / IIS
 nginx
Tools
 Visual Studio
 Git
 Jenkins
 Redmine
 Grunt
 Package Managers
Headline Technical Info – Numéro Interactive
Architecture
Enterprise / Bespoke Solutions
Browser Mobile
App
Data
Platform DefinitionApp Definition – ADK
ConfigurationContent
API Based Architecture
Core
Services
API
Transactions
API
Web API
Web UI
Creation
API
API
Identity and Access Management
PUBLIC/DMZPRIVATECLIENT
JSON Store
API
Enterprise
API Process Proxy
Legacy
Services
Legacy
Services
Value Stream Mapping
Retrospective
Fact finding
Talk of the future not allowed!
Identify waste
Types of wasteRed pen
Lots of waste
Important to be open
Time for the green pen
How can we improve?
the
The Value Stream Map
• Starts with sales
Issues can be introduced long
before any technology involved
• Manual steps, waiting,
• multiple deployments
Multiple manual
deployments
Lots of waiting and
manual steps
Long builds – 8 hours
Failures common -> re run -> 16 hours
Due to tech debt, such as redundant tests
Queued builds due to hardware bottleneck
Manual deployment, often
using copy/paste over RDP
One site uses Octopus for
deployment
Multiple customers means
multiple deploys
Some customers don’t
upgrade: wait time to receive
value = infinity!
Callcredit’s requirements:
• Portable (deployable onto platform of choice)
• Push an update once to all live instances
• Quickly replicate any bespoke customer solution
• Methodology suitable for other software products
• Scalability
• Resilience
Containers were the most obvious thing to try
Before the Hackathon Started, we…
• Identified the minimum viable components
 Database
 Core Services
 Identity Component
• Built Numéro solution from scratch
• Confirmed Prerequisites
• Created a Pipeline in Octopus Deploy
• Set up Azure Sandbox
• Set up VSTS
• Imported code into VSTS from Git
Prep Work
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
http://www.visualstudio.com/news/release-archive-vso
Why VSTS?
• Callcredit use TFS
• Integrate Numéro with other product teams’ practices
• Useful to have a cloud service - sharing with remote teams
• Strong push to evaluate VSTS
• Updates and enhancements handled by Microsoft
• VSTS Updated before TFS
The Hack
Aims for the Hack
• Build our three components within VSTS
 Database
 Core Services
 Identity Component
• Release Process:
 Docker Containers
 Test and Live environments
 Azure
• Monitoring
DevTest Labs Azure DevTest
Labs
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
First output of the hack…
Container ecosystem
DevOps process with containers
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
IIS with .NET 4.5 (numerocr.azurecr.io/iis-net45)
FROM microsoft/windowsservercore
SHELL ["powershell"]
RUN Add-WindowsFeature Web-Server,NET-Framework-45-Core,NET-Framework-45-
ASPNET,Web-Net-Ext45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Asp-Net45
COPY waitservice.ps1 /
CMD c:waitservice.ps1 -ServiceName W3SVC -AllowServiceRestart
Tomcat & Java in addition to IIS
(numerocr.azurecr.io/tomcat-java-iis)
FROM numerocr.azurecr.io/iis-net45
SHELL ["powershell"]
COPY /drop /drop
RUN /drop/scripts/install.ps1
Reusing existing
PowerShell
Core Services
(numerocr.azurecr.io/core)
FROM numerocr.azurecr.io/tomcat-java-iis
COPY /drop/smartagent/ /drop/smartagent/
COPY /drop/scripts/ /drop/scripts/
COPY /drop/certs/ /drop/certs/
SHELL ["powershell"]
#dns fix due to bug
RUN set-itemproperty -path 'HKLM:SYSTEMCurrentControlSetServicesDnscacheParameters'
-Name ServerPriorityTimeLimit -Value 0 -Type DWord
RUN .dropscriptsinstall.ps1
EXPOSE 80
node.js on IIS
FROM numerocr.azurecr.io/iis-net45:279
SHELL ["powershell"]
## Install IIS RewriteModule
RUN Invoke-WebRequest -Uri http://go.microsoft.com/fwlink/?LinkID=615137 -OutFile
rewrite.msi
RUN Start-Process -Wait -FilePath .rewrite.msi -ArgumentList /quiet, /norestart
RUN Remove-Item rewrite.msi
## Install IISNode
COPY iisnode-core_x64.msi iisnode.msi
RUN Start-Process -Wait -FilePath .iisnode.msi -ArgumentList /quiet, /norestart
RUN Remove-Item iisnode.msi
MS SQL Server
FROM microsoft/windowsservercore
ENV sql_express_download_url "https://go.microsoft.com/fwlink/?linkid=829176"
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN Invoke-WebRequest -Uri $env:sql_express_download_url -OutFile sqlexpress.exe ; 
Start-Process -Wait -FilePath .sqlexpress.exe -ArgumentList /qs, /x:setup ; 
.setupsetup.exe /q /ACTION=Install /INSTANCENAME=SQLEXPRESS /FEATURES=SQLEngine /UPDATEENABLED=0
/SQLSVCACCOUNT='NT AUTHORITYSystem' /SQLSYSADMINACCOUNTS='BUILTINADMINISTRATORS' /TCPENABLED=1 /NPENABLED=0
/IACCEPTSQLSERVERLICENSETERMS ; 
Remove-Item -Recurse -Force sqlexpress.exe, setup
RUN stop-service MSSQL`$SQLEXPRESS ; 
set-itemproperty -path 'HKLM:softwaremicrosoftmicrosoft sql
servermssql13.SQLEXPRESSmssqlserversupersocketnetlibtcpipall' -name tcpdynamicports -value '' ; 
set-itemproperty -path 'HKLM:softwaremicrosoftmicrosoft sql
servermssql13.SQLEXPRESSmssqlserversupersocketnetlibtcpipall' -name tcpport -value 1433 ; 
set-itemproperty -path 'HKLM:softwaremicrosoftmicrosoft sql servermssql13.SQLEXPRESSmssqlserver' -name
LoginMode -value 2;
HEALTHCHECK CMD [ "sqlcmd", "-Q", "select 1" ]
What about data?
nginx
FROM microsoft/windowsservercore
SHELL ["powershell"]
RUN mkdir /drop
RUN wget -uri 'http://nginx.org/download/nginx-1.11.12.zip' -OutFile /drop/nginx.zip
RUN Expand-Archive -Path /drop/nginx.zip -DestinationPath /nginx -Force
COPY nginx.conf /nginx/nginx-1.11.12/conf/
COPY certs/hack.numerotraining.com.key /nginx/nginx-1.11.12/conf/
COPY certs/hack.numerotraining.com.cer /nginx/nginx-1.11.12/conf/
#dns fix due to bug
RUN set-itemproperty -path 'HKLM:SYSTEMCurrentControlSetServicesDnscacheParameters' -
Name ServerPriorityTimeLimit -Value 0 -Type Dword
EXPOSE 80
EXPOSE 443
WORKDIR /nginx/nginx-1.11.12
ENTRYPOINT ["nginx.exe"]
nginx for SSL offload
and routing
Build
Build Definition
Flag: we set tests to continue on error
Docker tasks once build is complete
Build the image
Push the image to Azure Container Registry
• acr
View verbose logs for
each build stage
View build output
including test and
deployment status
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Release
Release using Docker Compose
• Why Compose & Swarm?
• Needed to deploy to single VM
• Swarm provides a Windows only solution
• No Linux servers required
• What's in the compose file?
• Services and their configuration
• Image
• Ports
• Environment variables
• Dependencies
• Networking details
Release Pipeline
Used docker-compose up to run
containers. If using Swarm would
use docker deploy
For the hack, two
environments Test &
LV (live)
Release triggers
It Works!!
Monitoring
• Microsoft Operations Management Suite
• Collects logs from Docker hosts
• Integrates into the Azure portal
• Allows export of logs to external platforms such
as ELK
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017
• Right now…
• Map and Script everything we did
• Shout about it
• Orchestration: Kubernetes? Swarm?
• Recreate it in a fully automated way from scratch – on Azure
• Within a Year
• Prove Portability – Callcredit environment – AWS
• Add Customer config
• Fully functional, Live customer solution running in containers
• Begin containerisation of next Software product
Next steps
Callcredit’s requirements:
• Portable (deployable onto platform of choice)
• Push an update once to all live instances
• Quickly replicate any bespoke customer solution
• Methodology suitable for other software products
• Scalability
• Resilience
• Right now…
• Map and Script everything we did
• Shout about it
• Orchestration: Kubernetes? (Marcus - Swarm?)
• Recreate it in a fully automated way from scratch – on Azure
• Within a Year
• Prove Portability – Callcredit environment – AWS
• Add Customer config
• Fully functional, Live customer solution running in containers
• Begin containerisation of next Software product
Next steps
Resources
Alex Carter
System Build Engineer
Callcredit Information Group
Email: Alexandra.carter@callcreditgroup.com
Twitter: @smileandeliver
• DevOps Fundamentals:
https://channel9.msdn.com/Series/DevOps-Fundamentals
• DevOps Dimensions:
https://channel9.msdn.com/Shows/DevOps-Dimension
• Lots of videos about Azure and containers
https://channel9.msdn.com/
• Get access to free online training:
https://mva.microsoft.com/training-topics/devops
• Numero Interactive:
http://www.thisisnumero.com/
• Callcredit
http://www.callcredit.co.uk/
Want access to Azure, VSTS and more for FREE?
Visual Studio Dev Essentials - https://www.visualstudio.com/dev-essentials/

More Related Content

What's hot (17)

5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline
Michel Schildmeijer
 
DevOps Toolbox: Infrastructure as code
DevOps Toolbox: Infrastructure as codeDevOps Toolbox: Infrastructure as code
DevOps Toolbox: Infrastructure as code
sriram_rajan
 
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp BerlinTech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
LeanIX GmbH
 
Windows Azure Workflows Manager - Running Durable Workflows in the Cloud and ...
Windows Azure Workflows Manager - Running Durable Workflows in the Cloud and ...Windows Azure Workflows Manager - Running Durable Workflows in the Cloud and ...
Windows Azure Workflows Manager - Running Durable Workflows in the Cloud and ...
BizTalk360
 
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entitySpring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Toni Jara
 
Practical Approaches to Cloud Native Security
Practical Approaches to Cloud Native SecurityPractical Approaches to Cloud Native Security
Practical Approaches to Cloud Native Security
Karthik Gaekwad
 
Devops with Amazon Web Services (January 2017)
Devops with Amazon Web Services (January 2017)Devops with Amazon Web Services (January 2017)
Devops with Amazon Web Services (January 2017)
Julien SIMON
 
Connect + Docker + AWS = Bitbucket Pipelines
Connect + Docker + AWS = Bitbucket PipelinesConnect + Docker + AWS = Bitbucket Pipelines
Connect + Docker + AWS = Bitbucket Pipelines
Atlassian
 
Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019
J V
 
Zure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training dayZure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training day
Okko Oulasvirta
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Gilad Garon
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClass
Paul Withers
 
Testing Microservices
Testing MicroservicesTesting Microservices
Testing Microservices
Anil Allewar
 
WebLogic and GraalVM
WebLogic and GraalVMWebLogic and GraalVM
WebLogic and GraalVM
Michel Schildmeijer
 
Continuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsContinuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applications
Sunil Dalal
 
ASP.NET: Present and future
ASP.NET: Present and futureASP.NET: Present and future
ASP.NET: Present and future
Hrvoje Hudoletnjak
 
5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline
Michel Schildmeijer
 
DevOps Toolbox: Infrastructure as code
DevOps Toolbox: Infrastructure as codeDevOps Toolbox: Infrastructure as code
DevOps Toolbox: Infrastructure as code
sriram_rajan
 
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp BerlinTech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
LeanIX GmbH
 
Windows Azure Workflows Manager - Running Durable Workflows in the Cloud and ...
Windows Azure Workflows Manager - Running Durable Workflows in the Cloud and ...Windows Azure Workflows Manager - Running Durable Workflows in the Cloud and ...
Windows Azure Workflows Manager - Running Durable Workflows in the Cloud and ...
BizTalk360
 
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entitySpring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Toni Jara
 
Practical Approaches to Cloud Native Security
Practical Approaches to Cloud Native SecurityPractical Approaches to Cloud Native Security
Practical Approaches to Cloud Native Security
Karthik Gaekwad
 
Devops with Amazon Web Services (January 2017)
Devops with Amazon Web Services (January 2017)Devops with Amazon Web Services (January 2017)
Devops with Amazon Web Services (January 2017)
Julien SIMON
 
Connect + Docker + AWS = Bitbucket Pipelines
Connect + Docker + AWS = Bitbucket PipelinesConnect + Docker + AWS = Bitbucket Pipelines
Connect + Docker + AWS = Bitbucket Pipelines
Atlassian
 
Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019
J V
 
Zure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training dayZure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training day
Okko Oulasvirta
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Gilad Garon
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClass
Paul Withers
 
Testing Microservices
Testing MicroservicesTesting Microservices
Testing Microservices
Anil Allewar
 
Continuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsContinuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applications
Sunil Dalal
 

Similar to Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017 (20)

How (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaSHow (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaS
Ryan Crawford
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Emerson Eduardo Rodrigues Von Staffen
 
Continuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyContinuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases Weekly
RightScale
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
Ben Hall
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud training
Brian Christner
 
VMware Automation, PowerCLI presented at the Northern California PSUG
VMware Automation, PowerCLI presented at the Northern California PSUGVMware Automation, PowerCLI presented at the Northern California PSUG
VMware Automation, PowerCLI presented at the Northern California PSUG
Alan Renouf
 
Tooling and DevOps for the Hybrid Cloud with Azure and Azure Stack
Tooling and DevOps for the Hybrid Cloud with Azure and Azure StackTooling and DevOps for the Hybrid Cloud with Azure and Azure Stack
Tooling and DevOps for the Hybrid Cloud with Azure and Azure Stack
Microsoft Tech Community
 
Azure Functions Real World Examples
Azure Functions Real World Examples Azure Functions Real World Examples
Azure Functions Real World Examples
Yochay Kiriaty
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf
 
Virtualization Vs. Containers
Virtualization Vs. ContainersVirtualization Vs. Containers
Virtualization Vs. Containers
actualtechmedia
 
VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...
VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...
VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...
VMworld
 
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAconCloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Mario-Leander Reimer
 
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesGIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
Patrick Chanezon
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB
 
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup
 
Chinnasamy Manickam
Chinnasamy ManickamChinnasamy Manickam
Chinnasamy Manickam
Chinnasamy Manickam
 
DevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to HabitatDevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to Habitat
Jessica DeVita
 
Ibm xamarin gtruty
Ibm xamarin gtrutyIbm xamarin gtruty
Ibm xamarin gtruty
Ron Favali
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
Noriaki Tatsumi
 
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Lucas Jellema
 
How (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaSHow (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaS
Ryan Crawford
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Emerson Eduardo Rodrigues Von Staffen
 
Continuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyContinuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases Weekly
RightScale
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
Ben Hall
 
VMware Automation, PowerCLI presented at the Northern California PSUG
VMware Automation, PowerCLI presented at the Northern California PSUGVMware Automation, PowerCLI presented at the Northern California PSUG
VMware Automation, PowerCLI presented at the Northern California PSUG
Alan Renouf
 
Tooling and DevOps for the Hybrid Cloud with Azure and Azure Stack
Tooling and DevOps for the Hybrid Cloud with Azure and Azure StackTooling and DevOps for the Hybrid Cloud with Azure and Azure Stack
Tooling and DevOps for the Hybrid Cloud with Azure and Azure Stack
Microsoft Tech Community
 
Azure Functions Real World Examples
Azure Functions Real World Examples Azure Functions Real World Examples
Azure Functions Real World Examples
Yochay Kiriaty
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf
 
Virtualization Vs. Containers
Virtualization Vs. ContainersVirtualization Vs. Containers
Virtualization Vs. Containers
actualtechmedia
 
VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...
VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...
VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...
VMworld
 
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAconCloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Mario-Leander Reimer
 
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesGIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
Patrick Chanezon
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB
 
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup
 
DevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to HabitatDevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to Habitat
Jessica DeVita
 
Ibm xamarin gtruty
Ibm xamarin gtrutyIbm xamarin gtruty
Ibm xamarin gtruty
Ron Favali
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
Noriaki Tatsumi
 
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Lucas Jellema
 

Recently uploaded (20)

Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 

Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill - Dec 2017

  • 1. “Let’s put Numéro into Containers on Windows!” This is what happened…
  • 2. Callcredit Who we are • Credit Reference Agency • Data Company • Windows .NET • “Software” Products
  • 3. Protects Cardholder Data Regulates Use & Storage of Personal Info. Implementation of the FoI Act Financial markets need to be honest, fair and effective so that consumers get a fair deal.
  • 6. Some Of Our Clients UTILITYTELECOMSRETAIL FINANCIAL GOV
  • 7. Platform  Windows  SQL  .Net / IIS  Java / Tomcat  NodeJS / IIS  nginx Tools  Visual Studio  Git  Jenkins  Redmine  Grunt  Package Managers Headline Technical Info – Numéro Interactive
  • 9. Enterprise / Bespoke Solutions Browser Mobile App Data Platform DefinitionApp Definition – ADK ConfigurationContent API Based Architecture Core Services API Transactions API Web API Web UI Creation API API Identity and Access Management PUBLIC/DMZPRIVATECLIENT JSON Store API Enterprise API Process Proxy Legacy Services Legacy Services
  • 11. Fact finding Talk of the future not allowed!
  • 12. Identify waste Types of wasteRed pen
  • 14. Time for the green pen How can we improve?
  • 16. • Starts with sales Issues can be introduced long before any technology involved
  • 17. • Manual steps, waiting, • multiple deployments Multiple manual deployments Lots of waiting and manual steps
  • 18. Long builds – 8 hours Failures common -> re run -> 16 hours Due to tech debt, such as redundant tests Queued builds due to hardware bottleneck
  • 19. Manual deployment, often using copy/paste over RDP One site uses Octopus for deployment Multiple customers means multiple deploys Some customers don’t upgrade: wait time to receive value = infinity!
  • 20. Callcredit’s requirements: • Portable (deployable onto platform of choice) • Push an update once to all live instances • Quickly replicate any bespoke customer solution • Methodology suitable for other software products • Scalability • Resilience Containers were the most obvious thing to try
  • 21. Before the Hackathon Started, we… • Identified the minimum viable components  Database  Core Services  Identity Component • Built Numéro solution from scratch • Confirmed Prerequisites • Created a Pipeline in Octopus Deploy • Set up Azure Sandbox • Set up VSTS • Imported code into VSTS from Git Prep Work
  • 24. Why VSTS? • Callcredit use TFS • Integrate Numéro with other product teams’ practices • Useful to have a cloud service - sharing with remote teams • Strong push to evaluate VSTS • Updates and enhancements handled by Microsoft • VSTS Updated before TFS
  • 26. Aims for the Hack • Build our three components within VSTS  Database  Core Services  Identity Component • Release Process:  Docker Containers  Test and Live environments  Azure • Monitoring
  • 27. DevTest Labs Azure DevTest Labs
  • 35. First output of the hack…
  • 37. DevOps process with containers
  • 39. IIS with .NET 4.5 (numerocr.azurecr.io/iis-net45) FROM microsoft/windowsservercore SHELL ["powershell"] RUN Add-WindowsFeature Web-Server,NET-Framework-45-Core,NET-Framework-45- ASPNET,Web-Net-Ext45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Asp-Net45 COPY waitservice.ps1 / CMD c:waitservice.ps1 -ServiceName W3SVC -AllowServiceRestart
  • 40. Tomcat & Java in addition to IIS (numerocr.azurecr.io/tomcat-java-iis) FROM numerocr.azurecr.io/iis-net45 SHELL ["powershell"] COPY /drop /drop RUN /drop/scripts/install.ps1 Reusing existing PowerShell
  • 41. Core Services (numerocr.azurecr.io/core) FROM numerocr.azurecr.io/tomcat-java-iis COPY /drop/smartagent/ /drop/smartagent/ COPY /drop/scripts/ /drop/scripts/ COPY /drop/certs/ /drop/certs/ SHELL ["powershell"] #dns fix due to bug RUN set-itemproperty -path 'HKLM:SYSTEMCurrentControlSetServicesDnscacheParameters' -Name ServerPriorityTimeLimit -Value 0 -Type DWord RUN .dropscriptsinstall.ps1 EXPOSE 80
  • 42. node.js on IIS FROM numerocr.azurecr.io/iis-net45:279 SHELL ["powershell"] ## Install IIS RewriteModule RUN Invoke-WebRequest -Uri http://go.microsoft.com/fwlink/?LinkID=615137 -OutFile rewrite.msi RUN Start-Process -Wait -FilePath .rewrite.msi -ArgumentList /quiet, /norestart RUN Remove-Item rewrite.msi ## Install IISNode COPY iisnode-core_x64.msi iisnode.msi RUN Start-Process -Wait -FilePath .iisnode.msi -ArgumentList /quiet, /norestart RUN Remove-Item iisnode.msi
  • 43. MS SQL Server FROM microsoft/windowsservercore ENV sql_express_download_url "https://go.microsoft.com/fwlink/?linkid=829176" SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] RUN Invoke-WebRequest -Uri $env:sql_express_download_url -OutFile sqlexpress.exe ; Start-Process -Wait -FilePath .sqlexpress.exe -ArgumentList /qs, /x:setup ; .setupsetup.exe /q /ACTION=Install /INSTANCENAME=SQLEXPRESS /FEATURES=SQLEngine /UPDATEENABLED=0 /SQLSVCACCOUNT='NT AUTHORITYSystem' /SQLSYSADMINACCOUNTS='BUILTINADMINISTRATORS' /TCPENABLED=1 /NPENABLED=0 /IACCEPTSQLSERVERLICENSETERMS ; Remove-Item -Recurse -Force sqlexpress.exe, setup RUN stop-service MSSQL`$SQLEXPRESS ; set-itemproperty -path 'HKLM:softwaremicrosoftmicrosoft sql servermssql13.SQLEXPRESSmssqlserversupersocketnetlibtcpipall' -name tcpdynamicports -value '' ; set-itemproperty -path 'HKLM:softwaremicrosoftmicrosoft sql servermssql13.SQLEXPRESSmssqlserversupersocketnetlibtcpipall' -name tcpport -value 1433 ; set-itemproperty -path 'HKLM:softwaremicrosoftmicrosoft sql servermssql13.SQLEXPRESSmssqlserver' -name LoginMode -value 2; HEALTHCHECK CMD [ "sqlcmd", "-Q", "select 1" ] What about data?
  • 44. nginx FROM microsoft/windowsservercore SHELL ["powershell"] RUN mkdir /drop RUN wget -uri 'http://nginx.org/download/nginx-1.11.12.zip' -OutFile /drop/nginx.zip RUN Expand-Archive -Path /drop/nginx.zip -DestinationPath /nginx -Force COPY nginx.conf /nginx/nginx-1.11.12/conf/ COPY certs/hack.numerotraining.com.key /nginx/nginx-1.11.12/conf/ COPY certs/hack.numerotraining.com.cer /nginx/nginx-1.11.12/conf/ #dns fix due to bug RUN set-itemproperty -path 'HKLM:SYSTEMCurrentControlSetServicesDnscacheParameters' - Name ServerPriorityTimeLimit -Value 0 -Type Dword EXPOSE 80 EXPOSE 443 WORKDIR /nginx/nginx-1.11.12 ENTRYPOINT ["nginx.exe"] nginx for SSL offload and routing
  • 45. Build
  • 46. Build Definition Flag: we set tests to continue on error Docker tasks once build is complete
  • 48. Push the image to Azure Container Registry • acr
  • 49. View verbose logs for each build stage
  • 50. View build output including test and deployment status
  • 53. Release using Docker Compose • Why Compose & Swarm? • Needed to deploy to single VM • Swarm provides a Windows only solution • No Linux servers required • What's in the compose file? • Services and their configuration • Image • Ports • Environment variables • Dependencies • Networking details
  • 54. Release Pipeline Used docker-compose up to run containers. If using Swarm would use docker deploy For the hack, two environments Test & LV (live)
  • 57. Monitoring • Microsoft Operations Management Suite • Collects logs from Docker hosts • Integrates into the Azure portal • Allows export of logs to external platforms such as ELK
  • 70. • Right now… • Map and Script everything we did • Shout about it • Orchestration: Kubernetes? Swarm? • Recreate it in a fully automated way from scratch – on Azure • Within a Year • Prove Portability – Callcredit environment – AWS • Add Customer config • Fully functional, Live customer solution running in containers • Begin containerisation of next Software product Next steps
  • 71. Callcredit’s requirements: • Portable (deployable onto platform of choice) • Push an update once to all live instances • Quickly replicate any bespoke customer solution • Methodology suitable for other software products • Scalability • Resilience
  • 72. • Right now… • Map and Script everything we did • Shout about it • Orchestration: Kubernetes? (Marcus - Swarm?) • Recreate it in a fully automated way from scratch – on Azure • Within a Year • Prove Portability – Callcredit environment – AWS • Add Customer config • Fully functional, Live customer solution running in containers • Begin containerisation of next Software product Next steps
  • 73. Resources Alex Carter System Build Engineer Callcredit Information Group Email: [email protected] Twitter: @smileandeliver • DevOps Fundamentals: https://channel9.msdn.com/Series/DevOps-Fundamentals • DevOps Dimensions: https://channel9.msdn.com/Shows/DevOps-Dimension • Lots of videos about Azure and containers https://channel9.msdn.com/ • Get access to free online training: https://mva.microsoft.com/training-topics/devops • Numero Interactive: http://www.thisisnumero.com/ • Callcredit http://www.callcredit.co.uk/ Want access to Azure, VSTS and more for FREE? Visual Studio Dev Essentials - https://www.visualstudio.com/dev-essentials/