DevCon School. Azure Microservices and Containers

Post on 06-Apr-2017

83 views 1 download

Transcript of DevCon School. Azure Microservices and Containers

Современная мобильная

и веб-разработка

Микросервисная архитектура, контейнеры и Microsoft AzureСтас Павлов

Технический евангелист, Microsoft

Содержание

• Введение в микросервисы• Монолитные приложения VS микросервисы

• Введение в контейнеры• История, текущее положение, Docker

• Экосистема Docker

• Контейнеры Windows

• Оркестрация, облачное размещение

• Azure Container Service

• Azure Service Fabric• .NET & Java, Linux & Windows, локально и в любом облаке

Введение в микросервисыМонолитные приложения VS микросервисы

Clu

ster

• Масштабирование через клонирование приложения на множество серверов, VM или контейнеров

Монолитная Микросервисы

• Разделение функциональности на отдельные небольшие сервисы

• Масштабирование через размещение каждого сервиса независимо, создание экземпляров этих сервисов на разных серверах, VM или контейнеров, работа вместе в виде виртуального кластера..

• Большая часть функциональности распределена среди нескольких процессов разделенных на библиотеки

AppApp

Типы микросервисов

• Web-фронтенды

• Шлюзы протоколов

• Облачные сервисы

• Базы данных

• Документы

• Профили пользователей

• Корзины онлайн-магазинов

Введение в контейнерыИстория, текущее положение, Docker

Метафора контейнеров

Контейнеры

Physical Server

Host OS

Container Manager

AppFramework

AppA

AppA

AppFramework

AppB

AppB

AppB

Physical Server

Hypervisor

Guest OS Guest OS

AppFramework

AppFramework

AppA

AppA

Guest OS

AppFramework

AppB

Host OS

Декларативная упаковка

Единица развертывания

Изолирование среды

Изолирование ресурсов

Скорость запуска

Плотность размещения

Docker, Docker, Docker

• Контейнеры существуют уже много лет. Docker Inc. не изобретала их

• Но они создали открытое ПО для сборки и управления контейнерами

• Docker упрощает работу с контейнерами.

Даже я могу создавать контейнеры и управлять ими

• Docker – это формат контейнеров и набор инструментов:

Docker CLI, Docker Engine, Docker Swarm, Docker Compose,

Docker Machine и так далее…

Экосистема DockerDocker Engine, Docker Swarm, Docker Compose

Docker Container Runtime

Запуск кода повторно на разных машинах

Docker Compose

Сборка решения из масштабируемых сервисов

Пример Docker Compose

Извлекает образ Redis из хаба Docker

Создает и запускает контейнер с Redis

Собирает образ ASP.NET

Создает и запускает web-образ на порту

80 с переменными окружения redis

Экосистема Docker

Автоматизация работы

с контейнерами

Docker Machine

Организация контейнеров

в кластеры

Docker Swarm

Безопасное общение

контейнеров между собой

Docker Networking Docker Plugins

Расширение экосистемы

Docker

Docker KitematicDocker Hub

Docker для Windows, Linux, OSX

https://docker.com/toolbox

docker client, docker machine,

docker kitematic, virtualbox

Успехи DockerКак себя чувствует технология сегодня

Docker не одинокно самый заметный

Docker сегодня

Размер компаний респондентов

Docker Hype

• Загрузки образов Docker выросли с 67 млн. в 2014 до 1.2 млрд. в 2015

• 40% компаний использующих Docker имеют его в продакшне

• Предложения о работе с Docker выросли на 1720% за год

• 50% компаний в Docker Hub состоят в списке Fortune 100

• 60,000 проектов на Github содержат “docker” (+226%)

• 5.6 млн. обращений к образам Docker Hub в день

Контейнеры WindowsЗачем? Типы контейнеров. Инструментарий

Выбор

Docker для Windows и Linux

Docker Engine для Windows

Управление контейнерами

Системные процессы

Процессы приложе-

ний

Системные процессы

Системные процессы

Процессы приложе-

ний

Виртуальная машинаОптимизирована для запуска Контейнера

Управление контейнерами

Системные процессы

System Processes

Application Processes

Управление контейнерами

Docker

Образы контейнеров

Windows

Hyper-V Container

Windows Server Container

http://aka.ms/containers

Docker & Облако AzureОпции развертывания на любой вкус

Web Apps

MobileApps

APIManagement

APIApps

LogicApps

NotificationHubs

Content DeliveryNetwork (CDN)

MediaServices

HDInsight MachineLearning

StreamAnalytics

DataFactory

EventHubs

MobileEngagement

BiztalkServices

HybridConnections

ServiceBus

StorageQueues

Backup

StorSimple

SiteRecovery

Import/Export

SQLDatabase

DocumentDB

RedisCache

Search

Tables

SQL DataWarehouse

Azure AD Connect Health

AD PrivilegedIdentity Mngt

OperationalInsights

CloudServices

Batch Remote App

ServiceFabric Visual Studio

ApplicationInsights

Azure SDK

Team Project

ActiveDirectory

Multi-FactorAuthentication

Automation

Portal

Key Vault

Store /Marketplace

VM Image Gallery& VM Depot

БЕЗОПАСНОСТЬ И УПРАВЛЕНИЕ СЕРВИСЫ ПЛАТФОРМЫ

ГИБРИДНЫЕ ОПЕРАЦИИ

Опции Docker в Azure

• Docker VM Image, Windows Server 2016

• Azure Docker VM Extension

• Azure Marketplace Container Apps

• Docker Trusted Registry

в Azure Marketplace

• Azure Resource Manager Templates

• Azure Container Service(с оркестратором на выбор: Swarm, DC/OS, Kubernetes)

ОркестрацияПопулярные решения оркестрации контейнеров

Google Kubernetes

управление контейнерами

поддержка в Azure

Kubernetes Visualizer

Apache Mesos

Управление кластерами

Поддержкав Azure Container Service

Open Sourcehttp://mesos.apache.org/

Mesosphere DC/OS

Управление, развертывание,мониторинг контейнеров

Open Source с поддержкой Microsoft, HP и других

Сервис по запросуAzure Container Service

Гибридное развертывание

Deis

Управление контейнерами

Docker PaaS

поддержка в Azure

Rancher

Управление контейнерами

Kubernetes и Swarm

RancherOS

RancherOS в Azure

Force12.io

Масштабирование

контейнеров в realtime

Интеграция с Kubernetes,

Mesos/Marathon, Nomad,

ECS и Docker Swarm

поддержка в Azure

Azure Container ServiceОркестрация по запросу с DC/OS или Docker Swarm

Developer Workstation

Docker Host

Container

Container

Container

Developer Workstation

Docker Engine

Container

Container

Container

Container

Container

Container

Developer Workstation

Container

Container

ContainerContainer

Container

Container

Container

Container

Container

App1

App2

Azure Container Services

История успехаTripToMap : применение Docker в Azure

О компании

TripToMap.com

Каталог тематических

маршрутов для тех,

кто ожидает от отпуска

чего-то большего….

Большего, чем просто

стены одного отеля.

Почему Docker?

+ Скорость

+ Изолированное окружение для сборок

+ Контейнеризация всех сервисов

+ Легковесность образов

+ Легко автоматизировать

+ Легко тестировать

- Linux only :(

В TripToMap на базе Docker работают

Все Web-ноды

обновление версии

происходит посредством

полной замены контейнера

База данных

кластер из 3-х серверов,

каждый в своем Docker-

контейнере

Система

для обеспечения CI

Все сборки

и запуск тестов

осуществляются в

одноразовых контейнерах,

полная изоляция

TripToMap.com - Выводы

Docker дает легкость в создании, тестировании,

обновлении и поддержке образов

Вся инфраструктура представлена в виде Dockerfiles,

что позволяет быстро развернуть её где угодно

Dockerfiles + Azure Powershell/Azure CLI

- это широкие возможности

по автоматизации всей инфраструктуры

История успехаLast.Backend : управление Docker-окружением

www.lastbackend.com

Visual Backend Management Platform

LastBackend.com

Last.Backend

www.lastbackend.com

www.lastbackend.com

Last.Backend in MS Azure

26 VMs + Redis Cache + Service Bus + Traffic

Manager

Azure Service FabricПлатформа микросервисов

.NET & Java, Linux & Windows, локально и в любом облаке

Микросервисы

Azure

Windows

ServerLinux

Хостинг

Windows

ServerLinux

Service Fabric

Частные облака

Windows

ServerLinux

High Availability

Hyper-Scale

Hybrid Operations

High Density Rolling Upgrades

Stateful services

Low LatencyFast startup &

shutdown

Container Orchestration

& lifecycle management

Replication &

Failover

Simple

programming

modelsLoad balancing

Self-healingData Partitioning

Automated Rollback

Health

Monitoring

Placement

Constraints

Azure Service Fabric

Microsoft AzureЧастные облака

Хостинг,другие облака

Функции и возможности

Issues на GitHub

Экосистема Service Fabric

App1 App2

Микросервисы Service Fabric

Пакеты приложений Кластер Service Fabric из VM

App1 App2

Отказы машин

Пакеты приложений Кластер Service Fabric из VM

Репликация Stateful-микросервисов

Кластер Service Fabric из VM

Primary

Secondary

Replication

App1 App2

Базовая оркестрация - Ограничения

Пакеты приложений Кластер Service Fabric из VM

App1 App2

Базовая оркестрация - Емкость

Пакеты приложений Кластер Service Fabric из VM

App1 App2

Базовая оркестрация - Балансировка

Пакеты приложений Кластер Service Fabric из VM

App1 App2

Базовая оркестрация – Scaleout Service

Пакеты приложений Кластер Service Fabric из VM

App1 App2

Базовая оркестрация – Scaleout Cluster

Пакеты приложений Кластер Service Fabric из VM

UD3

UD2

UD1

App1 App2

Базовая оркестрация – Апгрейд

Пакеты приложений Кластер Service Fabric из VM

App2.1

Исполняемые файлы

• Любой исполняемый файл

• Любой язык

• Любая программная модель

• Упаковывается в Приложение

• Получает версионирование,

апгрейды, мониторинг,

жизненные статусы, и т.д.

Надежные сервисы

• Сервисы с сохранением

и без состояния

• Параллельность,

гранулированное

изменение состояний

• Вместе с Reliable Collections

• Транзакции внутри коллекций

• Полная интеграция с платформой

Надежные акторы

• Объекты акторов с сохранением

и без состояния

• Упрощенная модель разработки

• Модель Single Threaded

• Прекрасно подходит

для масштабирования

вычислений и состояния

• Коллекции reliable collections упрощают создание stateful-сервисов

• Эволюция коллекций – для облака

Программные модели: Reliable collections

Истории УспехаAzure Service FabricВнутри команд Microsoft и других команий

1000х VM

Инфраструктура ядра Azure

Сервисы Microsoft построенные с Service Fabric

Млрд.транзакций в неделю

Azure Document DB

2 Трлн. событий в месяц

Azure Event Hubs

1.4 Млн. баз данных

Azure SQL Database

500 Млн. запросов в секунду

Bing Cortana

> 800,000устройств

Microsoft Intune

… и другие сервисы

IoT Suite

Skype for Business

Power BI

300+ Service Fabric Preview Customers

История УспехаAge of Ascent & Service Fabric

Illyriad Games - независимая игровая студия со специализацией в MMORPG

Credit: NASA, ESA, S. Beckwith (STScI), and The Hubble Heritage Team (STScI/AURA)

• Расширяется действиями игроков

• Единая протяженная вселенная

Credit: NASA and The Hubble Heritage Team (AURA/STScI)

• Сервера как ресурсы

• Гипер-масштабирование▪ Высокая плотность

▪ Ценовая эффективность

▪ Обеспечение работы при неожиданной нагрузке

• Защита от сбоев• Непрерывный пользовательский опыт

• Постоянная доступность

• Индивидуально обновляемая

• Данные масштабируются вместе с вычислительными мощностями

Credit: ESO/L. Calçada

Построение империй, ценовые войны, космические бои в реальном времени с упором на реакцию

• Миллионы игроков одновременно в единой протяженной вселенной

• 50,000+ одновременных игроков в одной битве в реальном времени

• 267 миллионов сетевых сообщений в секунду (23 триллиона в день)

Кластер Service Fabric

Архитектура Age of Ascent

Spatial

(в космосе)

Гайя(stateless)

Торговля Инвентарь Производство ОбщениеНавигация

ИгрокУчетная запись

КомандаТорговля Альянс

Аватар

(stateless)

AI События

Web-браузер или устройство

Сервисы игровых функций

CDN

Агреги-рующиесервисы

Сервис физики

Сервисы потоков

http://aka.ms/ServiceFabricSDK

http://aka.ms/ServiceFabricWS2012R2

https://azure.microsoft.com/ru-ru/documentation/learning-paths/service-fabric/

http://aka.ms/ServiceFabricSamples

http://aka.ms/SFlinuxpreview

http://aka.ms/ServiceFabricForum

ЗаключениеЗачем на нужны контейнеры и микросервисы?

Зачем нужны контейнеры и микросервисы?

• Быстрое развертывание, мгновенный старт

• Автомасштабирование, партицирование, высокая плотность

• Переиспользование и переносимость кода• Применение гибридных облаков

• Отсутствие lock in

• Уменьшение задач разработчиков (DevOps) • “Собрал, Поставил и Запустил”

• Обширная поддержка инструментов разработки

Введение в использование Service Fabric на Linux

Reliable Actors Reliable Services

Подготовка окружения для разработки на Linux

Подготовка окружения для разработки на OSX

Создание первого приложения Service Fabric на Java для Linux

Создание и управление кластерами Service Fabric в Azure

Масштабирование кластеров

Центр документации Service Fabric

Learning Path

Пример кода на GitHub

Введение в службу Azure Container Services

Развертывание кластера контейнеров

Управление контейнерами через DC/OS

Управление кластерами через Swarm

Центр документации

© 2016 Microsoft Corporation. All rights reserved.