28
Docker com ASP .NET Core e Hospedagem no Azure Rogério Moraes de Carvalho Consultor e desenvolvedor de sistemas rogeriom.wordpress.com | @rogeriomc #GlobalAzure

Docker com ASP.NET Core e Hospedagem no Azure

Embed Size (px)

Citation preview

Page 1: Docker com ASP.NET Core e Hospedagem no Azure

Docker com ASP.NET Core e

Hospedagem no Azure

Rogério Moraes de CarvalhoConsultor e desenvolvedor de sistemas

rogeriom.wordpress.com | @rogeriomc

#GlobalAzure

Page 2: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Agenda

ContêineresO que é um contêiner?

Contêineres versus máquinas virtuais

Contêineres e máquinas virtuais juntos

Padronização de contêineres

DockerO que é Docker

Docker em todo lugar

ASP.NET CoreO que é o ASP .NET Core?

Executando uma app ASP.NET Core

ASP.NET Core em detalhes

Docker com contêineres WindowsDocker para Windows Server 2016

Suporte a Docker no AzureAzure Container Service (ACS)

Outros serviços com suporte a Docker

Visual Studio 2017 & Docker

Suporte a Docker no Visual Studio 2017

Demonstração com contêiner Linux

Recursos para estudoDocumentação, vídeos e outros recursos

Page 3: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Contêineres

Page 4: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

O que é um contêiner?

Um pacote de software em uma unidade padronizada

Uma imagem de contêiner inclui tudo que você precisa para executá-la

Código

Ambiente de execução

Ferramentas de sistema

Bibliotecas de sistema

Configurações

Disponível para apps em Linux e em Windows

Leve (compartilha o kernel do sistema operacional)

Padronizado (baseado em padrões abertos)

Seguro (isola as aplicações uma das outras e da infraestrutura)

Page 5: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Contêineres versus máquinas virtuais

Benefício em comum

Ambiente isolado para execução de aplicações

Artefatos binários que se movem entre hospedeiros

Diferenças na virtualização

Contêineres virtualizam o sistema operacional (SO)

Múltiplos contêineres compartilham o kernel do SO

Tipicamente possuem algumas dezenas de MBs

Costumam ter uma inicialização quase instantânea

Máquinas virtuais virtualizam o hardware

Cada máquina virtual inclui uma cópia completa do SO

Tipicamente possuem algumas dezenas de GBs

Costumam ter uma inicialização lenta

Page 6: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Contêineres e máquinas virtuais juntos

Juntos, fornecem flexibilidade no gerenciamento e implantação de apps

Page 7: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Padronização de contêineres

Estrutura de governança aberta para criar padrões abertos para contêineres

Criado em junho de 2015 pelo Docker e outros líderes da indústria de contêineres

www.opencontainers.org

Atualmente contém duas especificações:

Runtime Specification (runtime-spec)

Especificação para o ambiente de execução de um contêiner no padrão OCI

github.com/opencontainers/runtime-spec

Image Specification (image-spec)

Especificação para o formato da imagem de um contêiner no padrão OCI

github.com/opencontainers/image-spec

Page 8: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Docker

Page 9: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

O que é Docker

Docker é a líder mundial de plataforma de software para contêineres

Page 10: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Docker em todo lugar

Docker para desenvolvedores (desktop – Windows, macOS e Linux)

Desenvolvedores criam imagens Docker com o necessário para executar suas apps

Contêineres Docker otimizados são completamente sem estado e imutáveis

Docker on-premises (servidor – máquinas físicas ou virtuais)

Docker para Linux (CentOS, Oracle Linux, Ubuntu, RHEL, ...)

Docker para Windows (Windows Server 2016)

Docker na nuvem

Docker para Amazon Web Services (AWS)

Docker para Azure

Docker para Google Cloud Platform (Docker em Compute Engine – Alpha)

Page 11: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

ASP.NET Core

Page 12: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

O que é o ASP .NET Core?ASP.NET Core

Um novo framework ASP.NET de código aberto e multiplataforma

Para construir aplicações Web modernas, prontas para a nuvem, em .NET

Multiplataforma

Escolha seus editores

e ferramentas

Open Source com

contribuiçõesOSS

Transição simples de

on-premises para a nuvem

Ciclos rápidos de

desenvolvimentoTotalmente modular

Rápido

Page 13: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Desempenho do ASP.NET CoreASP.NET Core

ASP.NET Core: 2300% mais requisições por segundo que o ASP.NET 4.6

Foram 1,15 milhões de requisições por segundo (rps)

www.ageofascent.com/asp-net-core-exeeds-1-15-million-requests-12-6-gbps

Page 14: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

ASP.NET Core em detalhesASP.NET Core

Visual Basic 15 Visual Basic 15 (previsto para segundo semestre de 2017)

.NET Framework 4.7

.NET Framework completo para qualquer cenário

Suporte das bibliotecas somente em Windows

.NET Core 1.1.1Bibliotecas modulares e multiplataforma

Ambiente de execução otimizado para servidores e para a nuvem

C# 6 C# 7

Page 15: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

ASP.NET Core em detalhesASP.NET Core

Hospedagem

Kestrel (servidor web multiplataforma), WebListener e IIS/IISExpress no Windows

Middleware

Roteamento, autenticação, arquivos estáticos, diagnósticos, manipulação de erros,

sessão, CORS, localização, personalizados etc.

Injeção de dependência

Configuração e logging

Frameworks de aplicação

MVC, Web API, Identity, Web Pages e SignalR

Page 16: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

ASP.NET Core em detalhesASP.NET Core

ASP.NET Core frameworks (modelos de aplicações)ASP.NET Web Pages 3.2.3, ASP.NET MVC 5.2.3 e ASP.NET Web API 2.2ASP.NET Core MVC (MVC + Web API + Web Pages)

Page 17: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

ASP.NET Core em detalhesASP.NET Core

ASP.NET Core MVC

Um conjunto de conceitos unificado

Remoção de duplicações de tipos similares

Engloba aplicações Web com interface gráfica (MVC) e serviços Web (Web API)

Construído sobre o ASP.NET Core

Suporta o .NET Core

Hospedagem no Internet Information Services (IIS)

Hospedagem própria: WebListener em Windows e Kestrel multiplataforma

Integração intensa com injeção de dependência

Tag Helpers

Page 18: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

ASP.NET Core em detalhesASP.NET Core

ASP.NET MVC Core (MVC + Web API + Web Pages)

Recurso Executa no .NET 4.7 Executa no .NET Core 1.1

Pronto para a nuvem ✓ ✓

Projeto modular ✓ ✓

Injeção de dependência ✓ ✓

Depuração e rastreamento consistente ✓ ✓

Desenvolvimento rápido (sem necessidade de compilação) ✓ ✓

Open Source ✓ ✓

Lado a lado completo (framework distribuído dentro da aplicação) ✓

Inicialização rápida, baixo uso de memória, alta taxa de transferência ✓

Page 19: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Docker com contêineres Windows

Page 20: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Docker para Windows Server 2016

Parceria entre Docker e Microsoft (em 2014)

Para portar a plataforma Docker para todas edições do Windows Server 2016

Contêineres Windows Server 2016 gerenciados pelo engine DockerBenefícios do Docker em Linux agora disponíveis para Windows Server 2016

Primitivos de “conteinerização” no kernel do WindowsWindows Server 2016

Windows 10 (with the Anniversay Update)

Escolha do tipo de imagem basewindowsservercore

Executa muitas apps para Windows Server: IIS, SQL Server, .NET Framework completo etc.

nanoserverNova versão mínima do Windows Server 2016 que executa IIS e .NET Core

Page 21: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Suporte a Docker no Azure

Page 22: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Azure Container Service (ACS)

O que é o ACS?

Serviço que torna simples

criar, configurar e gerenciar

um cluster de máquinas virtuais

pré-configuradas para executar

aplicações em contêineres

Orquestração (Docker em clusters)

Docker Swarm

Kubernetes

DC/OS

Page 23: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Outros serviços com suporte a Docker

Page 24: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Visual Studio 2017 & Docker

Page 25: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Suporte a Docker no Visual Studio 2017

ASP.NET Core Web Application (.NET Core)

Permite escolher o suporte a Docker na criação do projeto

Permite adicionar o suporte a Docker em um projeto já existente

O que o suporte a Docker do Visual Studio 2017 acrescenta ao projeto?

Arquivos Docker (Dockerfile) para a construção de imagens de contêiner

Um projeto de composição Docker para definir como instanciar seus contêineres

Suporta a depuração entre múltiplos contêineres/projetos

Page 26: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Demonstração com contêiner Linux

Page 27: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Recursos para estudo

Page 28: Docker com ASP.NET Core e Hospedagem no Azure

Global Azure Bootcamp 2017 - Brasília #gabbsb2017

Documentação, vídeos e outros recursos

Documentação do Docker

docs.docker.com

Open Container Initiative (OCI)

www.opencontainers.org

Announcing Docker Container

Platform for Windows Server 2016

www.docker.com/microsoft

Guia de instalação do .NET Core(Windows, Linux, macOS e Docker)

www.microsoft.com/net/core

ASP.NET Core Documentation

docs.microsoft.com/aspnet/core

Azure Container Service

Documentation

docs.microsoft.com/azure/container-

service/