Архитектурные решения при создании облачного сервиса...

16
1 Go# Conferences Team Leaders Day Евгений Агафонов, ABBYY Архитектурные решения при создании облачного сервиса на платформе Microsoft Azure http://eugeneagafonov.com [email protected] @eugene_agafonov

Upload: gosharp

Post on 17-Jul-2015

180 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Архитектурные решения при создании облачного сервиса на Asp.Net

1

Go# Conferences – Team Leaders Day

Евгений Агафонов, ABBYY

Архитектурные решения при

создании облачного сервиса на

платформе Microsoft Azure

http://eugeneagafonov.com

[email protected]

@eugene_agafonov

Page 2: Архитектурные решения при создании облачного сервиса на Asp.Net

2Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Всем привет!

Работаю в компании ABBYY c 2004 г.

Руковожу группой разработки образовательных проектов

Microsoft MVP по ASP.NET / IIS с 2006 г.

Page 3: Архитектурные решения при создании облачного сервиса на Asp.Net

3Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

О чем пойдет речь

Назначение сервиса

Архитектура сервиса

Данные

Мультитенантность

Отличие глобальных и per tenant данных

Backend - RESTful API

Композиция компонентов в приложении

Page 4: Архитектурные решения при создании облачного сервиса на Asp.Net

4Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

О чем пойдет речь

Frontend

UI Framework – knockout.js

Typescript

Стратегия отладки и логгирования

Elasticsearch + Kibana

Конфигурация

Разделение статической и динамической частей

Полезные советы

Page 5: Архитектурные решения при создании облачного сервиса на Asp.Net

5Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Назначение сервиса

Проведение тестирования знаний учеников

Репетиция в условиях, максимально приближенных к

настоящему экзамену ЕГЭ

Аналитика по результатам уровня класса/школы/региона

Page 6: Архитектурные решения при создании облачного сервиса на Asp.Net

6Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Как работает сервис

Page 7: Архитектурные решения при создании облачного сервиса на Asp.Net

7Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Архитектура сервиса

RESTful API + HTML5 client

Azure Cache для часто требующихся данных

Azure Blob storage для хранения изображений и контента

Azure Table storage для хранения глобальных данных

SQL Azure для хранения данных per tenant

Page 8: Архитектурные решения при создании облачного сервиса на Asp.Net

8Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Архитектура сервиса

Browser extension для сканирования и печати

Azure Queue и Azure Worker Role для работы с

распознаванием изображений

ABBYY Cloud OCR SDK для распознавания

http://ocrsdk.com/

Есть в магазине приложений Microsoft Azure

Page 9: Архитектурные решения при создании облачного сервиса на Asp.Net

9Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Данные

Мультитенантность

Сonnection string per tenant

Глобально доступные данные в Azure Table Storage

Azure Blob storage для хранения файлов

Один контейнер или много контейнеров?

Page 10: Архитектурные решения при создании облачного сервиса на Asp.Net

10Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Backend

ASP.NET Web API

Удобно использовать и масштабировать

CORS/JSON portable

Миграция в ASP.NET vNext

Композиция компонентов

Dependency Resolver позволяет подключить любой DI container

Наш выбор – Autofac

Минимизация зависимости от контейнера

Тестирование

Page 11: Архитектурные решения при создании облачного сервиса на Asp.Net

11Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Frontend

UI Framework

knockout.js

Максимум контроля, но много кода

Смотрим на angular.js

Typescript

Контроль над большим codebase

Переход от AMD к commonjs modules

Page 12: Архитектурные решения при создании облачного сервиса на Asp.Net

12Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Отладка и логгирование

Глобальный лог

Облачные сервисы отлаживать практически нереально

Логгирование – единственный вменяемый способ понять в чем

проблема

Сохранять максимум информации

Activity Id – дать Id цепочке действий от клиента сквозь всю

структуру сервиса

Elasticsearch и Kibana

Способ эффективно работать с логами

Application Insights for Visual Studio Online

Page 13: Архитектурные решения при создании облачного сервиса на Asp.Net

13Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Конфигурация

Разделение на статическую и динамическую

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

нужно хранить стандартным способом

Connection strings, storage accounts, etc. – можно изменять в

процессе работы приложения

Page 14: Архитектурные решения при создании облачного сервиса на Asp.Net

14Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Полезные советы

Администрирование

Оформляйте все задачи по администрированию в виде кодаУдобно использовать LINQPad и/или scriptcsТакой код потом легко мигрируется в административное приложение

Развертывание

Пишите код с учетом механизмов развертывания в AzureВерсионность сообщений в Azure QueuesПодумайте о режиме read-only

Документация

Храните всю информацию о сервисе в Azure на «портале Проекта»Создайте сертификат управления сервисом и тоже сохраните в доступном местеКак и все сертификаты вообще

Page 15: Архитектурные решения при создании облачного сервиса на Asp.Net

15Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Вопросы?

Все контаты в моем блоге, который можно найти в

Google по запросу Eвгений Агафонов ABBYY

http://eugeneagafonov.com

@eugene_agafonov

Page 16: Архитектурные решения при создании облачного сервиса на Asp.Net

16Go

# C

on

fere

nce

s –

Te

am

Le

ad

ers

Day

Всем спасибо!

Евгений Агафонов, ABBYY

http://eugeneagafonov.com

@eugene_agafonov