Архитектурные сценарии облачных приложений Сценарии интеграции Архитектурные сценарии облачных приложений Алексей Федоров Дмитрий Мартынов Определение облачных вычислений Стиль вычислений, при котором удаленные вычислительные ресурсы и приложения доступны через сеть в виде сервисов Особенность Влияние на архитектуру Сервисы Сервисно-ориентированная архитектура Удаленность Отказоустойчивость Серверные приложения Диагностика и отладка Вычислительные ресурсы Доступные прикладные сервисы Атрибуты облака Масштабируемость Эластичность Мульти-тенантность Оплата за использование Самообслуживание Инфраструктура по запросу Коцепция Windows Azure Platform Платформа для создания приложений (PaaS) Поощрение правильной архитектуры Возможность постепенного перехода Сохранение существующих навыков Взаимодействие с другими платформами Как использовать облако? Размещение приложения в облаке Потребление сервисов из облака Создание собственного облака Стать хостером и предоставлять сервисы другим Частное облако для внутренних нужд Создать платформу приложений поверх PaaS общего назначения Размещение приложений в облаке Код приложения и/или данные в облаке Варианты развертывания: Приложение (PaaS) Виртуальная машина (IaaS) Варианты реализации: Веб-приложение или Веб-сервис Фоновый процесс Развертывание приложений (PaaS) Веб-сервис или фоновый сервис Облако управляет «жизнью» приложения Нужно учитывать атрибуты облака Ключевые требования к архитектуре Масштабируемость Отказоустойчивость Рекомендуется: Сервис-ориентированная архитектура >= 3-х уровневая архитектура Мульти-тенантность Управляемость (встроенная диагностика) Поддержка федеративной безопасности Развертывание виртуальных машин Облако управляет виртуальной машиной Шире спектр приложений Желательно следовать архитектурным требованиям Административный доступ к виртуальной машине Подходит для миграции приложений Миграция приложений Кандидаты для миграции: 3-х уровневые приложения Веб-приложения и сервисы Автономные алгоритмы Дополнительно учесть: Серверная платформа x64 Совместимость базы данных Поддержка использованных технологий Доступ к ОС Потребление сервисов из облака Плавная миграция в облако Расширение приложений сервисами (СОА) Стандартные Интернет-протоколы HTTP(S), SOAP, ATOM Кандидаты: распределенные приложения Примеры: архив, финансовые расчеты Плавный переход в облако - данные Частичный перенос данных в облако Важна стоимость хранения Повсеместный доступ Примеры: • Архивы и резервные копии • Справочники • Большие цифровые объекты Плавный переход в облако - код Частичный перенос кода в облако Данные трудно или невозможно перенести Временный доступ к данным Примеры: • Финансовые расчеты • Обработка анкет • Обработка изображений Плавный переход в облако - интеграция Интеграция приложений через облако Примеры: • Сбор данных с удаленных площадок • MMORPG Полный переход в облако - SaaS Максимальное использование возможностей облака Примеры: • CRM • Порталы • Бизнес-приложения Требования к архитектуре приложения в облаке Масштабируемость Отказоустойчивость Рекомендуется: Сервис-ориентированная архитектура >= 3-х уровневая архитектура Мульти-тенантность Управляемость (встроенная диагностика) Поддержка федеративной безопасности Масштабируемость Распределение нагрузки по компонентам Балансировка сетевой нагрузки (NLB) Горизонтальные и вертикальные разделы БД Очереди и пакетные обработки Параллельная обработка Не хранить состояние/сессию в памяти Разделение на уровни Асинхронность Отказоустойчивость План резервного копирования и восстановления Не полагаться на память виртуальной машины Использовать надежное хранилище для хранения состояний и промежуточных шагов процессов Ожидать таймауты и сбои в каналах Равнозначность сообщений (idempotancy) Управляемость Постоянный мониторинг состояния приложения Логи Счетчики производительности Трасировка Отладка после развертывание в облако Выявление и устранение узких мест Управление инфраструктурой на основе данных диагностики Автоматическое масштабирование Федеративная безопасность Аутентификация доверена внешнему сервису Использование учетных записей внутренней сети для доступа к облаку Единый вход Различные типы учетных записей Унификация системы аутентификации Стандарты SAML, WF-Trust, WF-Federation, OAuth,… Кросс-платформенность Поддержка Active Directory, Live ID, Open ID, Facebook, Google ID,… Мульти-тенантность Тенант – виртуальная машина Изоляция средствами облака Выделенная БД Простая миграция Тенант – логическая организация Изоляция средствами приложения Нужна поддержка в приложении и в схеме данных БД Сценарии использования облака Централизация вычислений и SaaS Высокопроизводительные вычисления Сервис-ориентированные системы Репозитории данных Централизация вычислений Консолидация баз и хранилищ данных Упрощение аналитики Устранение дублирования информации Консолидация сервисов Движение к сервисноориентированной архитектуре Единая точка входа для потребителей сервисов Консолидация бизнеслогики Упрощение интеграции Стандартизация механизмов безопасности Консолидация клиента Ускорение развертывания Повсеместный доступ Ключевой показатель: Снижение сложности инфраструктуры Высокопроизводительные вычисления Ограниченное время на работу Большой объем вычислений Экстремальная производительность и масштабируемость Выделение ресурсов на время обработки Параллельная обработка Ключевые показатели: Экономия времени Экономия средств Сервис-ориентированные системы Сервисная шина Единая среда обмена сообщениями Подключение существующих систем к облаку Оркестрация бизнес-процессов между локальными системами и облаком Интеграция частного и публичного облака Бизнес-процессы Публикация сервисов в облако Доступ к существующим системам из облака Ключевой показатель: Эффективность бизнес-процессов Репозитории данных Все преимущества централизации данных Повсеместный доступ Повышенная надежность Эффективное резервное копирование Сеть доставки контента (CDN) Ключевой показатель: Низкая стоимость владения Архитектура приложений Типовая архитектура все еще актуальна Строительные блоки облака отображаются на логические уровни приложения Совокупность компонентов определяет тип (архетип) приложения Примеры решений Веб-приложение Толстый клиент Толстый клиент + Веб-сервис + Фоновые процессы + Хранилище BLOB Интеграция с локальными системами Тонкий (Веб) клиент + ORM + реляционная БД Интеграционный сервер + Сервисная Шина + Веб-сервис + Виртуальная машина RIA Silverlight + Сервис Контроля Доступа + Веб-сервис + Нереляционное хранилище + CDN Сравнение технологий Windows Azure Platform Серверная платформа Web роль Internet Information Server Прикладная роль Windows Service VM роль Hyper-V Service Bus BizTalk Server, Windows Server AppFabric Access Control Active Directory Federation Services, Windows Identity Federation Azure Tables WCF Data Services Azure Queue MSMQ, SQL Server Service Broker Azure Blobs IIS WebDav, SharePoint, WCF REST SQL Azure SQL Server 2008 R2 Fabric Controller System Center Virtual Machine Manager Заключение Облако – это будущее! Готовьте приложения к облаку Применяйте правильную архитектуру Подумайте о сценариях использования Возьмите за основу примеры решений Вопросы и обсуждение