the velvet revolution - sdd conference...•asp.net apps in docker •modernizing apps with docker...

48
The Velvet Revolution Modernizing .NET Apps with Docker Elton Stoneman | Developer Advocate @EltonStoneman | [email protected]

Upload: others

Post on 27-May-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

The Velvet Revolution

Modernizing .NET Apps with Docker

Elton Stoneman | Developer Advocate@EltonStoneman | [email protected]

Page 2: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Today

• The Docker Platform

• ASP.NET Apps in Docker

• Modernizing Apps with Docker

• The Path to Production

Page 3: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Tomorrow

• Microservices

• DevOps

• Cloud

• .NET Core

• Nano Server

• Linux

Page 4: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

GET

v0

Page 5: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

v1

Page 6: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

v2

Page 7: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

v3

Page 8: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

v4

Page 9: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

v5

Page 10: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Docker is a Platform

Page 11: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

.NET Fx

ASP.NET

Web App

Server Core

IIS

> docker build

Page 12: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

# escape=`

FROM microsoft/aspnet:windowsservercore

COPY MyApp-1.0.msi C:\

RUN msiexec /i C:\MyApp-1.0.msi /qn

Page 13: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

# 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

Page 14: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

> docker push

hub.docker.com

Page 15: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core
Page 16: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

> docker run

Page 17: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

> docker run

.NET Fx

ASP.NET

Web App

Server Core

IIS w3wp.exe

Page 18: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

> docker run

Page 19: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Demo: Dockerizing ASP.NET

Page 20: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

GET

• Consistency

– Build & distribute

– Run & monitor

– Scale & update

– Secure

v1

Page 21: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

GET

• Foundation

– Fast, safe deployment

– Break up monoliths

– Adopt new technologies

– Change processes

v1

Page 22: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

• Change frequently

• Change rarely

• Have issues

• Promote re-use

Feature-Driven Monolith Decomposition

│ Release at will

│ Minimize regressions

│ Fix with confidence

│ APIs & event-driven

Page 23: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Modernizing Apps with Docker

Page 24: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Performance

Heavy usage

crashes app

UX

Full release

for UI change

Data Access

Reference

data locked up

Data Insight

Support ticket

for queries

Page 25: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Demo: UX Feature

Page 26: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

v2

Page 27: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

UX

Full release

for UI change

Data Access

Reference

data locked up

Page 28: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Demo: Data Accessibility

Page 29: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

v3

Page 30: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Performance

Heavy usage

crashes app

UX

Full release

for UI change

Data Access

Reference

data locked up

Page 31: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Demo: Performance

Page 32: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

v4

Page 33: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Performance

Heavy usage

crashes app

UX

Full release

for UI change

Data Access

Reference

data locked up

Data Insight

Support ticket

for queries

Page 34: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Demo: Data Insight

Page 35: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Performance

Heavy usage

crashes app

UX

Full release

for UI change

Data Access

Reference

data locked up

Data Insight

Support ticket

for queries

Page 36: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

v5

Page 37: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

From

• ASP.NET WebForms app

• SQL Server database

Page 38: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

To

• Event-driven architecture

• Self-service analytics

• Self-service content

Page 39: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

With

• Agent-less builds

• Consistent dev & ops experience

• Automated update (and rollback)

Page 40: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

The Path to Production

Page 41: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Manager Worker Worker

PS C:> docker …

Page 42: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Manager Worker Worker Worker

PS C:> docker …

:~$ docker …

Page 43: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Manager + UCP Worker + DTR Worker Worker

Page 44: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Production Demo

Page 45: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

Takeaways

• Docker is a mature platform

• Dockerizing apps is easy

– It can be the goal

–Or the start of a modernization program

Page 46: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

• Docker Labs | dockr.ly/labs

• Image2Docker | dockr.ly/i2d-win

• DockerCon EU | October, Copenhagen

• @EltonStoneman

What Next?

Page 47: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

• Workshop | https://dwwx.space

• Pluralsight | https://is.gd/h5qwyf

• Book | Docker on Windows: 2e

• Today's Demos | is.gd/tBerXH

What Next?

Page 48: The Velvet Revolution - SDD Conference...•ASP.NET Apps in Docker •Modernizing Apps with Docker •The Path to Production Tomorrow •Microservices •DevOps •Cloud •.NET Core

THANK YOU