This document discusses moving Microsoft .NET applications to containers using Docker. It provides a brief history of .NET and open source efforts. It explores the developer experience of .NET outside of Windows and demystifies .NET in Docker and containers. The document outlines several hands-on demos of developing a .NET app on Windows and running it in a Linux container on AWS. It also discusses how AWS supports .NET and Docker through options like rolling your own on EC2, using Elastic Beanstalk, or Amazon ECS. The document encourages attendees to discuss their training plans and opportunities to get AWS certified.
2. Agenda
• A Brief History of Microsoft .Net
• Explore Developer Experience Outside of Windows OS
• Demystify .Net in Docker and Containters
• Level 300 - .Net and Docker hands on Demos
• Your AWS Service Adoption Options
4. Multi Language VM – Microsoft .Net
(Common Language Runtime)
• Launched with Support of 23 Programming Languages
• Languages such as Pascal, Haskel, Cobol, VB.Net, C#, J#/Java, etc
• Designed to Abstract Windows 32 API and COM
• Simplification of Windows Development which was a “Black Art” at the
Time
• Visual Studio .Net IDE Launched as the Primary Developer Experience
5. .Net and Open Source Efforts
• MSFT Shared Sourced and ECMA standardised .Net
• Shared Source Common Language Infrastructure (SSCLI) codenamed Rotor
• Not Licensed to be Used Commercially
• It didn’t go very far Outside of Academia and Research
• Then Mono Came Along…
• Took the great ideas of .Net CLR and Rotor and Rebuilt it from Scratch
• Made it Multi-platform (OSX and Linux - and Windows)
• And Mono-touch made it Cross Device (iOS and Android)
• Added Support for Visual Studio / MonoDevelop (and XCode)
• Now (2016) Microsoft has acquired Xamarin
6. .Net and Open Source Efforts (2)
• Roslyn Released – .Net Compiler Platform Tools
• Set of open-source compilers and code analysis APIs for C# and Visual Basic .NET
languages
• Microsoft Decided to go Full Open Source with .Net Runtime
• Announced and Released .Net Core CLR
• Cross platform run-time support for .Net applications + ASP.net vNext
• Docker support announced for Windows Developers
• MSFT and 3rd Party Projects at www.dotnetfoundation.org
• Aims to take Open Source Community Projects to the Next Level
7. ASP.Net vNext and CoreCLR Cross Platform
• Premiere Developer Experience on Windows (still)
• Predominantly GUI and now more command line centric
• Now Developers can edit in Visual Studio Code, Sublime, emacs with
intellisense and tools extensions on OSX and Linux
• Learn more from http://www.omnisharp.net
• Command Line Experience same across All Platforms (CLI)
• Windows, OSX and Linux Variants
• Enables true Automation, continuous Integration and Delivery (CI/CD)
8. Visual Studio Code on Mac OSX
Visual Studio Code
A Mini-Visual Studio IDE Development Environment for Cross Platform Development
9. Your .Net Framework and Runtime Options
• (Classic) .Net Framework – Windows Only and Feature Complete
• .Net Core CLR – New Microsoft Cross Platform Runtime
• Feature Complete now in Stabilisation Phase (RC2)
• Linux and OSX in-progress RC2 builds (Ubuntu, Centos, FreeBSD, OSX, SuSe)
• Available on Git: https://github.com/dotnet/coreclr
• Mono – 3rd Party Cross Platform and Open Source
• Similar APIs to .Net Framework with high level of compatibility
11. Porting to .NET Core
• Apiport – .NET Portability Analyser
• Source available on Git: https://github.com/Microsoft/apiport
• Console and Visual Studio Versions: https://dotnet.github.io/porting/
• MSDN: Porting MSBuild to .NET Core: http://bit.ly/1QyFVaX
12. What’s the Difference Between Runtimes?
(And why should I care?)
• .Net Core – No longer large monolithic core Framework libraries requiring whole assembly
redeployments – instead lots of little packages are used
• Using Popular NuGet Package Format Used – extend the application and runtime support libraries
• Some Common (60+) Projects at https://github.com/aspnet
System.Core.File
System.Core.IO
System.Web.Session
System.Web.SignalR
MyApp.Service MyApp.Libs1
MyApp.LibsNMyApp.APISystem.Web
System.Core
MyApp.Everything
14. How is Docker Different from VMs?
Containers have similar resource isolation and allocation benefits as virtual
machines but a different architectural approach allows them to be much more
portable, light-weight and efficient.
15. About Containers…
• Include the Application and all of its Dependencies
• Share the Kernel with Other Running Containers
• Run as an Isolated Process in user space on the Host Operating
System
• Not Tied to any Specific Infrastructure – Docker Containers run on
Any Computer, on Any Infrastructure such as the AWS Cloud
• Popular in Linux World and Now Available to .Net Developers (thank
MSFT)
16. Why It Matters to Microsoft Applications?
• For Existing Applications
• Move your existing .Net applications into highly portable self-sufficient containers
• Extend the life of applications or merely renovate them
• For Green Field Applications
• Develop brand new applications using ASP.Net vNext/.Net Core
• Develop via Visual Studio (Windows) or Visual Studio Code (OSX/Linux) or CLI
• Press a button or run a script to deploy it into Docker on AWS
• Bring your applications into a modern and agile (CI/CD) DevOps world
• Move into AWS – Gain Agility, Cost Reduction and Mass-Scale Out
18. Demo 1: Roll Your Own on EC2
Develop on Windows, Deploy and Run in Linux
Docker Engine
Windows Server on
EC2
+ Visual Studio IDE
Deploy Application
Visual Studio
Deployed
20. Demo 2: Use AWS ElasticBeanstalk Service
Develop on Windows, Deploy and Run in Linux
Windows Server on
EC2
+ Visual Studio IDE
Deploy Application
AWS Elastic
Beanstalk
Amazon Linux
Beanstalk Agent
22. Demo 3: Use Amazon EC2 Container Service (ECS)
Develop on Windows, Deploy and Run in Linux
Windows Server on
EC2
+ Visual Studio IDE
Amazon ECS
Amazon Linux
ECS Agent
Deploy Application
24. Demo 3 – Part B: Deployment Overview
Amazon ECR
Amazon ECS
aws-cli
Elastic Load
Balancing
Auto Scaling group
EC2 Instance EC2 Instance
Task Definition
Service Definition
ecs-cli
aws-cli
25. How Does AWS Support .Net & Docker?
Option 1: Roll Your Own
• Run Docker on EC2
• Something you may have already tried to do on your local development PC
Option 2: Use Rapid Deployment Services
• Use the AWS ElasticBeanstalk Service which natively supports both Docker and
Windows IIS
• Great for developers wishing to get started quickly with low interest in the
underlying infrastructure
Option 3: Use Docker as a Service
• Use the AWS EC2 Container Service (ECS) with full native Docker support
• Great for engineers who want full access to the underlying core infrastructure
26. In Summary:
1. Microsoft is Making Cross Platform Development Easier
2. The .Net Core Runtime has been Open Sourced
3. Existing .Net and Greenfield Applications can run in
Docker
• Under Mono and .Net Core run-time environments
4. AWS Supports your Journey in a Number of Ways here
5. Speak to Your Friendly AWS Solution Architect
☐✔
☐✔
☐✔
27. AWS Training & Certification
Intro Videos & Labs
Free videos and labs to
help you learn to work
with 30+ AWS services
– in minutes!
Training Classes
In-person and online
courses to build
technical skills –
taught by accredited
AWS instructors
Online Labs
Practice working with
AWS services in live
environment –
Learn how related
services work
together
AWS Certification
Validate technical
skills and expertise –
identify qualified IT
talent or show you
are AWS cloud ready
Learn more: aws.amazon.com/training
28. Your Training Next Steps:
ü Visit the AWS Training & Certification pod to discuss your
training plan & AWS Summit training offer
ü Register & attend AWS instructor led training
ü Get Certified
AWS Certified? Visit the AWS Summit Certification Lounge to pick up your swag
Learn more: aws.amazon.com/training