developing resilient cloud architecture

43
msdevcon.ru #msdevcon

Upload: anton-vidishchev

Post on 20-Aug-2015

213 views

Category:

Technology


0 download

TRANSCRIPT

msdevcon.ru #msdevcon

Разработка отказоустойчивой облачной архитектурыАнтон Видищев

Антон ВидищевРуководитель команды, Edgar Online, RR Donnelley Company

Windows Azure MVP

Почему архитектура должна отличаться?

Почему архитектура должна отличаться?Многие из существующих подходов и паттернов не решают задачу отказоустойчивости и масштабируемости

Отрасль высоконагруженных приложений молода, и общепринятые подходы еще не выработаны

Дизайн под рабочие нагрузкиDesign for Workload

Сценарий:Интернет-магазин

Основные типы нагрузкиBrowse & Search

Checkout & Management

Модель жизненного циклаВ годовом разрере

Модель жизненного циклаВ недельном разрере

Модель доступности и SLA

The 9s - Девятки

Доступность % Отказ в год Отказ в месяц Отказ в неделю

90% («одна девятка») 36.5 дней 72 часов 16.8 часов

95% 18.25 дней 36 часов 8.4 часов

97% 10.96 дней 21.6 часов 5.04 часов

98% 7.30 дней 14.4 часов 3.36 часов

99% («две девятки») 3.65 дней 7.20 часов 1.68 часов

99.5% 1.83 дней 3.60 часов 50.4 минут

99.8% 17.52 часов 86.23 минут 20.16 минут

99.9% («три девятки») 8.76 часов 43.2 минут 10.1 минут

99.95% 4.38 часов 21.56 минут 5.04 минут

99.99% («четыре девятки») 52.56 минут 4.32 минут 1.01 минут

99.999% («пять девяток") 5.26 минут 25.9 секунд 6.05 секунд

Как посчитать свой SLA?

Связи с внешними сервисамиКаков тип сервиса (party, commercial/public)

Есть ли ограничения по количеству API-вызовов?

Есть ли ограничения по частоте API-вызовов?

Есть ли черные/белые списки?

Каков SLA?

Есть ли публичная ифнормация о качестве соблюдения SLA?

Предоставляет ли сервис данные о своем здоровье?

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

Есть ли аналогичные сервисы?

Определяем точки отказа приложенияСоединения с базой данных

Подключения к веб-сервису

Конфигурационные файлы

Внутренние взаимодействия

Аутентификация

Автономность

Автономные модули приложенияИмеют высокую доступность

Гибкие и восстанавливаемые

Имеют низкий риск полного отказа

Легко масштабируются репликацией

Предоставляют данные о собственном здоровье

Редко требуют ручного вмешательства

Обработка отказов приложения

Обрабатываем отказыАсинхронность по умолчанию

Тайм-ауты

Обеспечиваем «мягкую» деградацию

Подходы к обработке отказовЛогика повторений (Retry logic)

Постепенное замедление (Exponential Backoff)

Идемпотентность

Компенсирующее поведение

Очереди!!!

Шаблон «Предохранитель»Circuit Breaker pattern

Предохранитель в NetflixАнализирует уровень ошибок (timeout/exception/full queue) в минуту

• Запрос истек по тайм-ауту

• Пул потоков и очередь задач заполнены на 100%

• Клиентская библиотека выбросила исключение на запросе

При превышении критического уровня ошибок выбирает одну из стратегий обрыва:

• Custom Fallback

• Fail silent

• Fail fast

SLA для внешних сервисов

Что принять во внимание• Белые списки

• Обработка Bad actors• Торможение

• Черные списки

Автоматизируем всё!Automate all the things!

Определение вычислительной избыточности

Стратегии разбиения данных

The 3 Vs

VolumeVelocityVariety

Горизонтальное разделениеHorizontal partitioning

Вертикальное разделениеVertical partitioning

Гибридное разделениеHybrid partitioning

Кэширование

КэшированиеКэширование – техники, позволяющие снизить latency при доступе к данным

• Сессии

• Distributed caching

• Temporary data stores

• Web Caching

• CDNs

КэшированиеТипы данных

Техники работы с разделяемыми даннымиСкрытие деталей

Взаимозаменяемые ресурсы

Design for Operations

Design for OperationsСбои будут происходить, это неизбежно

Нужно быть готовыми к сбоям и обеспечить возможность быстрого восстановления

По возможности, нужно стараться предугадывать возможные сбои, опираясь на метрики диагностики

Модель здоровья - Health ModelОбеспечьте высокий уровень логгирования и сбора диагностики

Введите метрики состояния модуля, минимум три

• Healthy

• Partially Healthy

• Unhealthy

Определите интерфейсы для получения здоровья модуля

Определите интерфейсы для получения детальной диагностики

Определитe интерфейсы для восстановления здоровья (restart/reimage)

Обеспечьте телеметрию работы приложения

Azure Management Portal

MetricsHub

Свои решения

Контакты

Антон ВидищевEdgar Online

[email protected]

https://www.facebook.com/anton.vidishchev

@antonvidishchev

msdevcon.ru #msdevcon

Внимание, конкурс!Вопрос: На какие платформы можно осуществлять трансляцию контента из Media Services?• Flash, Silverlight, HTML5

• Android, iOS, Windows Phone, Windows 8

• Smooth Streaming, Apple HLS

• Xbox, IPTV

• Все перечисленные

Ответы пишите в сообществе:

facebook.com/groups/azurerus/