App A
● manual/inconsistent deployment process
● 1 deployment / month
● 1-3 weeks to scale
● business critical
App B
● automated and cryptographically signed deployment process
● 3 deployments / week
● minutes to scale
● business critical
Challenges for Enterprise Apps● Need to look at incremental innovation across entire app
portfolio
○ Hundreds of apps
○ Years of development per app
● Sunset and rewrite is possible with a small subset of apps
● Balance driving innovation while controlling cost
Modernize Traditional Apps (MTA) with Docker● Containerize with Docker EE● Leverage modern properties from your
traditional applications without rewriting them● Use container based supply chain to innovate
apps incrementally● Accelerate container adoption across app
portfolio
Assess Containerize Deploy Measure
● Infrastructure● App
● Containerize● Configure● Compose
● Docker EE ● Functional● Performance● Operational
Architecture
Runtime
Dependencies
Implementation
● Narrow down to 1-3 target applications● Containerize-able in 2-3 days of work● Representative of other enterprise app● Aligned with existing initiatives● Technical resources available by app
Assess Containerize Deploy Measure
General Guidance
Architecture
Runtime
Dependencies
Implementation
● .NET Fx or Java EE● 2-3 tiers architecture● 1-5 runtime components● Manageable / known
dependencies
Assess Containerize Deploy Measure
Architecture
Runtime
Dependencies
Implementation
● IIS 6-8, Tomcat, WebLogic, WebSphere, JBoss
● .NET Framework 2.0 or later
Assess Containerize Deploy Measure
Architecture
Runtime
Dependencies
Implementation
● Availability of application artifacts + expertise
● Databases out of scope for containerization
● Consider database and user authentication
Assess Containerize Deploy Measure
Architecture
Runtime
Dependencies
Implementation
● No hardcoded IPs or hostnames
● Application startup time time < ~5mins
● Deployment artifacts support unattended installation
Assess Containerize Deploy Measure
Containerize
App Artifacts
FROM tomcat:7.0.82-jre8
Select Base Image
COPY myapp.war /opt/tomcat/webappsCOPY bootstrap.sh /bootstrap.sh
Copy App Artifacts
RUN [“sh”,“config_app_server.sh”]ENTRYPOINT [“sh”,“bootstrap.sh”]
Configure App Server
Dockerfile
Assess Containerize Deploy Measure
Containerization Tooling
VM
App Server
AppApp
Conversion Dockerfile
Assess Containerize Deploy Measure
FROM microsoft/aspnet:windowsservercore-10.0.14393.1066SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
# disable DNS cache so container addresses always fetched from DockerRUN Set-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters' -Name ServerPriorityTimeLimit -Value 0 -Type DWord
RUN Remove-Website 'Default Web Site';
RUN Enable-WindowsOptionalFeature -Online -FeatureName IIS-ApplicationDevelopment,IIS-ASPNET45,IIS-BasicAuthentication,IIS-CommonHttpFeatures,IIS-DefaultDocument,IIS-DirectoryBrowsing,IIS-HealthAndDiagnostics,IIS-HttpCompressionStatic,IIS-HttpErrors,IIS-HttpLogging,IIS-ISAPIExtensions,IIS-ISAPIFilter,IIS-NetFxExtensibility45,IIS-Performance,IIS-RequestFiltering,IIS-Security,IIS-StaticContent,IIS-WebServer,IIS-WebServerRole,NetFx4Extended-ASPNET45
Image2Docker - ASP.NET
Accelerating MTA DeploymentsVersion Control
Build images Integration
Docker Trusted Registry
Docker Universal Control Plane
Build Service
1. Commit app (compiled assets), Dockerfiles and compose files to Source Control
2. Build Service builds Docker Images
3. Build Service pushes image to Docker Trusted Registry (DTR)
4. Build Service deploys/updates Docker Stack on Universal Control Plane (UCP) cluster
Assess Containerize Deploy Measure
MTA CI/CDPre-wired and self-contained
● Docker Trusted Registry● Docker Universal Control
Plane● Gogs [git]● Jenkins
Modernize Traditional Applications at
Fox MediaCloudPart of Fox Entertainment Group
GhostedPremiering Sunday, October 1
1 Billion + Subscribers
500 + Channels
170 + Countries
That Level Of Demand MeansConstant Innovation
● Speed to market● Elasticity and reliability● Improving CI/CD
Cloud is critical to success moving forward.
Challenges to overcome● A majority of budget goes towards
maintaining the status quo.● Limited resources to port everything
quickly● Architecture constraints
The quickest way to cut into that budget
App
Accomplishments in 3 Days• Portability across multiple
infrastructures• Reduce/Eliminate deployment
downtime• Improve application density• Embrace DevOps/CICD• Baked in DR strategy
By Docker, Avanade, Microsoft “MTA was the quickest way to cut into
that budget and accelerate our path to the cloud”
Modernize Traditional Applications POC Program
The Broadcast Affiliate Portal App allows Fox affiliate TV stations around the country to pick the promotional content they would like to air.
App Details
FMC Portal Load Balancer
HTT
P
HTT
P
FMC Portal FMC Portal
FMC Portal
DB
Okta & other
services
Redis
● ASP.NET 3.5+ applications / MSSQL 2012● 25% Max CPU Utilization on these
servers● 2 vm’s running 5-6 IIS Apps● Windows Server 2012
Challenges● Deploying and maintaining this application
involves lots of manual process● DR isn’t part of the overall structure, app just
gets rebuilt and redeployed. Downtime required.
Broadcast Affiliate Portal
FMC Portal Load Balancer
Worker_010.X.X.2
Worker_110.X.X.3
Worker_210.X.X.4
FMC PortalDB
Web
Redis
Okta & other
services
Load Balancer
Manager_010.X.X.5 UCP
DTR
Overlay Network
HTT
P
HTT
P
HTT
P
HTT
P
HTT
P
HTT
P
App went from running on prem on Windows Server 2012,
To fully containerized application running in Azure
on Windows Server 2016
Microsoft Azure Microsoft Azure
RedisWe
bRedis
Web
Redis
Broadcast Affiliate Portal Using Docker EE
MTA Results
FMCPortal
Before After• 3 weeks to get code
into production• No app redundancy
or DR
• Security fixes are resolved same day but require downtime
• Time to Scale is 1+ weeks
Completed in 3 Days
• Deploy in minutes• Built in redundancy
easily into design/architecture
• Groundwork for CI/CD built into the platform
• No downtime for security fixes
• Time to Scale now takes minutes
Want to learn more?● Stop by the booth (MTA pod) ● Download the kit www.docker.com/mta● Look for a MTA Roadshow near you● Contact your Account Team
Docker EEHosted Demo
● Free 4 Hour Demo● No Servers Required● Full Docker EE
Cluster Access
docker.com/trial