На конференциях часто рассказывают, как хорошо и удобно разрабатывать облачные приложения на той или иной платформе. Однако при реальной разработке возникают вопросы, которые обычно обходят стороной. В докладе я расскажу с какими неочевидными проблемами столкнулся при разработке сервиса под Microsoft Azure, и каким образом эти проблемы были решены.
Архитектурные решения при создании облачного сервиса на Asp.Net
1. 1
Go# Conferences – Team Leaders Day
Евгений Агафонов, ABBYY
Архитектурные решения при
создании облачного сервиса на
платформе Microsoft Azure
http://eugeneagafonov.com
me@eugeneagafonov.com
@eugene_agafonov
3. 3
Go#Conferences–TeamLeadersDay
О чем пойдет речь
Назначение сервиса
Архитектура сервиса
Данные
Мультитенантность
Отличие глобальных и per tenant данных
Backend - RESTful API
Композиция компонентов в приложении
4. 4
Go#Conferences–TeamLeadersDay
О чем пойдет речь
Frontend
UI Framework – knockout.js
Typescript
Стратегия отладки и логгирования
Elasticsearch + Kibana
Конфигурация
Разделение статической и динамической частей
Полезные советы
7. 7
Go#Conferences–TeamLeadersDay
Архитектура сервиса
RESTful API + HTML5 client
Azure Cache для часто требующихся данных
Azure Blob storage для хранения изображений и контента
Azure Table storage для хранения глобальных данных
SQL Azure для хранения данных per tenant
10. 10
Go#Conferences–TeamLeadersDay
Backend
ASP.NET Web API
Удобно использовать и масштабировать
CORS/JSON portable
Миграция в ASP.NET vNext
Композиция компонентов
Dependency Resolver позволяет подключить любой DI container
Наш выбор – Autofac
Минимизация зависимости от контейнера
Тестирование
12. 12
Go#Conferences–TeamLeadersDay
Отладка и логгирование
Глобальный лог
Облачные сервисы отлаживать практически нереально
Логгирование – единственный вменяемый способ понять в чем
проблема
Сохранять максимум информации
Activity Id – дать Id цепочке действий от клиента сквозь всю
структуру сервиса
Elasticsearch и Kibana
Способ эффективно работать с логами
Application Insights for Visual Studio Online
14. 14
Go#Conferences–TeamLeadersDay
Полезные советы
Администрирование
Оформляйте все задачи по администрированию в виде кода
Удобно использовать LINQPad и/или scriptcs
Такой код потом легко мигрируется в административное приложение
Развертывание
Пишите код с учетом механизмов развертывания в Azure
Версионность сообщений в Azure Queues
Подумайте о режиме read-only
Документация
Храните всю информацию о сервисе в Azure на «портале Проекта»
Создайте сертификат управления сервисом и тоже сохраните в
доступном месте
Как и все сертификаты вообще