Microservices mit ASP.NET Core 1.0 und dem Docker Ökosystem

Alexander Zeitler
Solution Architect und Entwickler bei PDMLab
Microsoft MVP für ASP.NET
ASP.NET Web API / Microsoft Azure Advisor
Agenda
- Microservices
- Herausforderungen
- Wie hilft Docker?
- ASP.NET Core mit Docker deployen
Microservices
In computing, microservices is a software architecture style, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs.
These services are small, highly decoupled and focus on doing a small task.
Beispiel: E-Commerce
- Web Front-End
- Product Data Management (PDM)
- Lager
- Einkauf
- Versand
- Payment-Dienstleister
- Rechnungs- und Mahnwesen
- Identity
Vorteile
- Verschiedene Plattformen für verschiedene Services
- Austausch / Refactoring von Services einfacher
- Entkopplung beim Deployment
- "Two-Pizza"-Regel umsetzbar
- (Code) Ownership einfacher
Herausforderung:
Komplexität
Komplexität
- Significant Operations Overhead
- Substantial DevOps Skills Required
- Implicit Interfaces
- Duplication Of Effort
- Distributed System Complexity
- Asynchronicity Is Difficult!
- Testability Challenges
Anforderungen an Deployment
- Schnell
- Zuverlässig
- Reproduzierbar
Deployment automatisieren!
Wie hilft Docker?
Build, ship and run any application anywhere


vs...

Put it in a Container

Build
Package application in a container image
Ship
Move container image to another machine
Run
Execute container based on that image
Any Application
All applications running on Linux
Anywhere
VM on-premises, cloud, bare metal
Build
Dockerfile
FROM ubuntu:14.04
MAINTAINER Docker Team <education@docker.com>
RUN apt-get update
RUN apt-get install -y nginx
RUN echo 'Hi, I am your father...erm in your container' \
>/usr/share/nginx/html/index.html
CMD [ "nginx", "-g", "daemon off;" ]
EXPOSE 80Ship
Docker Hub
Image name <username>/<reponame>
z.B. microsoft/dotnet
docker push
docker pull
Run
- Leichtgewichtig
- Schnell
Wie schnell?
Benchmark
$ time docker run ubuntu echo hello worldDocker Footprint
$ docker images
$ docker history <CID>Any application
- Web apps
- API backends
- Datenbanken (SQL, NoSQL)
- Big data
- Message queues
- ...
Runs on Linux == Runs in Docker
Windows Container?
Nano Server
Getting started
curl -fsSL https://get.docker.com/ | sh
Try
On OS X / Windows
On Linux
Install
ASP.NET /.NET Core
in Docker
microsoft/aspnet (< RC2)
microsoft/dotnet (>= RC2)







Docker ecosystem
Docker engine
Docker Machine
Docker Compose
Docker Cloud
Docker Hub
Docker Registry
Docker Swarm
Next Steps
- Docker Machine
- Docker Compose
- Docker Swarm
Docker Machine
$ docker-machine create --driver virtualbox devDocker Compose
version: "2"
services:
web:
build: .
links:
- db
ports:
- "8000:8000"
db:
image: postgresDemo
ASP.NET Core 1.0 RC2
in Docker
Fragen?
Danke!
Microservices mit ASP.NET Core 1.0 und dem Docker Ökosystem
By Alexander Zeitler
Microservices mit ASP.NET Core 1.0 und dem Docker Ökosystem
- 1,672