Usando containers para criar uma arquitetura de microservices
DevCon School. Azure Microservices and Containers
-
Upload
stas-pavlov -
Category
Software
-
view
83 -
download
1
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Частные облака
Хостинг,другие облака
Функции и возможности
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.