27
Миграция в Azure Service Fabric Александр Лайша Chief Software Engineer, EPAM

Миграция в Azure Service Fabric

Embed Size (px)

Citation preview

Миграция в Azure Service FabricАлександр ЛайшаChief Software Engineer, EPAM

Цели

IoT проект на базе Cloud

Services

Знакомство с Service

Fabric

Архитектура с Azure Service Fabric

Узнаем что может Azure Service Fabric, из чего он состоит внутри и как его

можно использовать

Познакомимся c примером архитектуры

на базе Azure Service Fabric предыдущего IoT

проекта и разберём преимущества

Рассмотрим архитектуру для части функционала реального IoT проекта

на базе Cloud Services и поговорим о возможных

улучшениях

Фрагмент реального IoT проектаНа базе Azure Cloud Services

Машины, девайсы и облако

HTTPTCP/IP

Microsoft Azure

Какой функционал будем рассматривать?Отправка телеметрииОтслеживание движения автомобиляСигналы тревоги и отправка уведомлений (SMS, Email, Push)Отправка команд на автомобильОбработка ответа команды

Отправка телеметрииТелеметрия

(пакет)

DeviceCache[Azure Redis]

Информацияо девайсе

JSON

IncomingMessagesHub[Event Hub]

TelemetryReceiver[Worker Roles]

JSON

Информациядля аутентификации

GatewayDB[SQL Azure]

IoTGateway[Worker Roles]

Установка TCP

соединения

Отслеживание движения автомобиля

TelemetryReceiver[Worker Roles] Полученные координаты

TripCoordinates[Azure Table]

За последние 24 часа

или по фильтру

Текущие координаты

WebPortal, RESTful API[Web Roles]

SignalRBackplane[Azure Service Bus]

BrokeredMessage

Сигналы тревоги и отправка уведомлений

TelemetryReceiver[Worker Roles]

WebPortal, RESTful API[Web Roles]

10 последних или список

NotificationSettingsCache[Azure Redis]

Настройки

DeviceAlerts[Azure Table]

Сигнал тревоги

NotificationEngine[Worker Roles]

BrokeredMessage

NotificationTopic[Azure Service Bus Topic]

Отправка команд на автомобиль

WebPortal, RESTful API[Web Roles]

HTP

Команда

TrackingId

CommandStatusCache[Azure Redis]

Статус выполнения Id = TrackingId,

Status = InProgress

IoTGateway[Worker Roles]

JSONTrackingId

JSON

OutcomingMessagesHub[Event Hub]

TrackingId

Команда(пакет) TrackingId

DeviceCache[Azure Redis]

Информацияо подключённом

девайсе

Обработка ответа команды

DeviceCache[Azure Redis]

Информация о

девайсе Информациядля аутентификации

GatewayDB[SQL Azure]

Ответ команды(пакет)

IoTGateway[Worker Roles]

TrackingIdJSON

IncomingMessagesHub[Event Hub]

TrackingIdTelemetryReceiver

[Worker Roles]

JSONTrackingId

CommandStatusCache[Azure Redis]

Обновлённый статус

Id = TrackingId

Инфраструктура

Web Roles[WebPortal, RESTful API]

Worker Roles[NotificationEngine, IoTGateway,

TelemetryReceiver]

Azure Cloud Service

Azure Redis[DeviceCache, CommandStatusCache,

NotificationSettingsCache]SQL Azure

[GatewayDB]Azure Storage Table

[DeviceAlerts,TripCoordinates]

Storages

Event Hub[OutcomingMessagesHub,IncomingMessagesHub]

Service Bus[SignalRBackplane,NotificationTopic]

Messaging

Какие есть недостатки?TelemetryReceiver – большой монолитМасштабирование ролей по отдельностиМедленный деплоймент и масштабированиеПростаивание вычислительных мощностейДополнительные затраты на кешНагрузка на storage при частых записях и чтених

Обзор Azure Service Fabric

Что такое Azure Service Fabric?Микросервисы

Подсистема связи

Обнаружение служб

Подсистема управления

Развёртывание, обновление и мониторинг

Подсистема надежности

Надёжность, доступность,

репликация, оркестрация

Подсистема хостингаЖизненный цикл

приложения

Подсистема тестирования

Симуляция неисправностей,

тестирование в рабочей среде

Подсистема федерацииОбъединяет различные узлы в единый унифицированный кластер

Транспортная подсистемаБезопасный "точка-точка” канал

Модели программирования

Azure

WindowsServer Linux

Облако провайдера

WindowsServer Linux

Service Fabric

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

WindowsServer Linux

High Availability

Hyper-Scale

Hybrid Operations

High Density

Rolling Upgrades Stateful

services

Low Latency Fast startup & shutdown

Container Orchestration & lifecycle management Replication &

FailoverSimple

programming models

Load balancing

Self-healingData Partitioning

Automated Rollback

Health Monitoring

Placement Constraints

Service FabricКластер

Эволюция Cloud Services

Node Type #1Node Type #2

Node Type #2

Node Type #2

Node Type #2

Node Type #1

Node Type #2

Web AppAPI

BackgroundApp #2

BackgroundApp #1

Cloud Services

Модели программированияМикросервисы

Reliable Services API

верхнеуровневая модель программирования, любой транспортный протокол, stateless &

stateful

Reliable Actors APIActor Model, однопоточная модель

программирования, stateless & stateful

Инфраструктура Service Fabric

Модели программирования

Azure Частное облако Облако провайдера

Guest ExecutablesNode.js, Java, а также собственные приложения

Архитектура с использованием Azure Service FabricПодзаголовок или имя нового докладчика

Отправка телеметрии

IoTGateway[Stateful Service]

Кеширует информацию дляаутентификации всех девайсов

(IReliableDictionary<TKey, TValue>)

Кеширует информацию для девайса

DeviceActor [Stateful Actor]

TelemetryReceiver[Stateless Service]

IncomingMessagesHub[Event Hub]

Отслеживание движения автомобиля

DeviceActor [Stateful Actor]

Пачка координат

TripCoordinates[Azure Table]

SignalRBackplane[Azure Service Bus]

BrokeredMessage

Список координат

более чем за последние

24 часа

Текущие координаты

WebPortal, RESTful API[Stateless Service]

Координаты за последние 24 часа

DeviceTripActor [Stateful Actor]

• Кеширует координаты за последние 24 часа

• Сохраняет координаты пачками (100 или в течении 1 минуты)

Сигналы тревоги и отправка уведомлений

DeviceActor [Stateful Actor]

DeviceAlertActor [Stateful Actor]

Кеширует последние10 сигналов с девайса

WebPortal, RESTful API[Stateless Service]

10 последних

Список сигналов тревоги

• Кеширует настройки для нотификаций

• Буферизует сообщений для отправки в IReliableQueue и делает рассылку в фоне

NotificationEngine[Stateful Service, Range partitioning]

Сообщение для отправкиPartition N

DeviceAlerts[Azure Table]

Сигнал тревоги

Отправка команд на автомобиль

TrackingId

JSON

OutcomingMessagesHub[Event Hub]

TrackingId

Команда(пакет) TrackingId

Состояниедевайса

DeviceActor [Stateful Actor]

• ActorId = DeviceId• Коллекция отправленных команд(State, CmdName, TrackingId)

DeviceCommandActor [Stateful Actor]

WebPortal, RESTful API[Stateless Service]

HTPКоманда

IoTGateway[Stateful Service]

JSONTrackingId

Обработка ответа команды

JSON

IncomingMessagesHub[Event Hub]

TrackingId

Ответ команды(пакет)

IoTGateway[Stateful Service]

TrackingId

DeviceActor [Stateful Actor]

JSON TrackingId

TelemetryReceiver[Stateless Service]

Обновлённый статус и результатвыполнения

DeviceCommandActor [Stateful Actor]

Инфраструктура

Azure Service Fabric

SQL Azure[GatewayDB]

Azure Storage Table[DeviceAlerts,

TripCoordinates]

Storages

Stateless Services[WebPortal, RESTful API]

NodeType #1

Stateful Actor Services [Device Actor, DeviceTripActor,

DeviceAlertActor, DeviceCommandActor]

Stateful Services[IoTGateway,

NotificationEngine]

Stateless Services[TelemetryReceiver]

NodeType #2

Event Hub[OutcomingMessagesHub,IncomingMessagesHub]

Service Bus[SignalRBackplane]

Messaging

Что улучшилось?Монолита больше нетуВерсионирование сервисовБыстрый деплойментВысокая утилизация физических ресурсовОтсутствие необдходимости в Azure RedisУменьшение нагрузки на StorageУвеличение производительности

Полезные ресурсы

Официальная документация Azure Service Fabric: https://azure.microsoft.com/en-us/documentation/services/service-fabricКнига «Programming Microsoft Azure Service Fabric»: http://www.amazon.com/Programming-Microsoft-Service-Developer-Reference/dp/1509301887Паттерны и Антипаттерны Azure Service Fabric: https://acom-swtest-2.azurewebsites.net/en-gb/documentation/articles/service-fabric-reliable-actors-patterns-introduction Pub-Sub для Reliable Actors: https://www.nuget.org/packages/ServiceFabric.PubSubActors

Что дальше

Service Fabric рулит!

Читайте и пишите

много кодаДавайте

общаться!Книга «Programming

Microsoft Azure Service Fabric  (Developer

Reference)» ещё не выпущена, но доступна

для пред-заказа.

Я перехожу в зону вопросов и ответов.

Напишите мне в твиттере, если не

можете найти и хотите пообщаться.

Мигрируйте и разрабатывайте на базе микросервисов и Azure

Service Fabric

Q&A

Миграция в Azure Service FabricАлександр Лайша[email protected]@layshaalexander