Post on 27-May-2020
The Velvet Revolution
Modernizing .NET Apps with Docker
Elton Stoneman | Developer Advocate@EltonStoneman | elton@docker.com
Today
• The Docker Platform
• ASP.NET Apps in Docker
• Modernizing Apps with Docker
• The Path to Production
Tomorrow
• Microservices
• DevOps
• Cloud
• .NET Core
• Nano Server
• Linux
GET
v0
v1
v2
v3
v4
v5
Docker is a Platform
.NET Fx
ASP.NET
Web App
Server Core
IIS
> docker build
# escape=`
FROM microsoft/aspnet:windowsservercore
COPY MyApp-1.0.msi C:\
RUN msiexec /i C:\MyApp-1.0.msi /qn
# escape=`
FROM microsoft/windowsservercore
SHELL ["powershell", "-Command"]
RUN Add-WindowsFeature Web-server, `
NET-Framework-45-ASPNET, Web-Asp-Net45; `
Remove-Website -Name 'Default Web Site'
COPY ProductLaunchWeb /product-launch-web
RUN New-Website -Name 'product-launch' `
-PhysicalPath 'C:\product-launch-web' -Port 80
EXPOSE 80
COPY bootstrap.ps1 /
ENTRYPOINT ./bootstrap.ps1
> docker push
hub.docker.com
> docker run
> docker run
.NET Fx
ASP.NET
Web App
Server Core
IIS w3wp.exe
> docker run
Demo: Dockerizing ASP.NET
GET
• Consistency
– Build & distribute
– Run & monitor
– Scale & update
– Secure
v1
GET
• Foundation
– Fast, safe deployment
– Break up monoliths
– Adopt new technologies
– Change processes
v1
• Change frequently
• Change rarely
• Have issues
• Promote re-use
Feature-Driven Monolith Decomposition
│ Release at will
│ Minimize regressions
│ Fix with confidence
│ APIs & event-driven
Modernizing Apps with Docker
Performance
Heavy usage
crashes app
UX
Full release
for UI change
Data Access
Reference
data locked up
Data Insight
Support ticket
for queries
Demo: UX Feature
v2
UX
Full release
for UI change
Data Access
Reference
data locked up
Demo: Data Accessibility
v3
Performance
Heavy usage
crashes app
UX
Full release
for UI change
Data Access
Reference
data locked up
Demo: Performance
v4
Performance
Heavy usage
crashes app
UX
Full release
for UI change
Data Access
Reference
data locked up
Data Insight
Support ticket
for queries
Demo: Data Insight
Performance
Heavy usage
crashes app
UX
Full release
for UI change
Data Access
Reference
data locked up
Data Insight
Support ticket
for queries
v5
From
• ASP.NET WebForms app
• SQL Server database
To
• Event-driven architecture
• Self-service analytics
• Self-service content
With
• Agent-less builds
• Consistent dev & ops experience
• Automated update (and rollback)
The Path to Production
Manager Worker Worker
PS C:> docker …
Manager Worker Worker Worker
PS C:> docker …
:~$ docker …
Manager + UCP Worker + DTR Worker Worker
Production Demo
Takeaways
• Docker is a mature platform
• Dockerizing apps is easy
– It can be the goal
–Or the start of a modernization program
• Docker Labs | dockr.ly/labs
• Image2Docker | dockr.ly/i2d-win
• DockerCon EU | October, Copenhagen
• @EltonStoneman
What Next?
• Workshop | https://dwwx.space
• Pluralsight | https://is.gd/h5qwyf
• Book | Docker on Windows: 2e
• Today's Demos | is.gd/tBerXH
What Next?
THANK YOU