Архитектура в web, доклад на Women techmakers, Omsk, 2014

Post on 22-May-2015

119 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

Архитектура в web – грабли, боль

или красота

Анна Тарасенко,7bits

Типы web-проектов• Контентные: Instagram, twitter,

habrahabr

• Интернет-магазины

• Бизнес-приложения: автоматизация процессов

• Распределенные сервисы: RTB, картография, поиск, анализ метаданных, телекоммуникации

ХарактеристикиКонтентные Магазин

ыБизнес RTB,

поиск

Объем данных ++++ +++ ++ +++++++

Число пользователей

+++++ +++ ++ ++

Число запросов

++++++ ++++ +++ +++++++

Время отклика ++ +++ ++++ +

Публичность +++ +++ -/+ -/+

Стоимость разработки

++ + +++++ +++++

Надежность хранения данных

+ +++ +++ ++

Сложность логики

+ ++ +++++ +++++

Контентные сайты• Content management system (CMS) –

Drupal, Wordpress, Joomla и т.д.

• Много серверов, много файлов (видео, аудио) по сравнению с объемом данных в БД

• Кэширование контента, пользователи не терпят задержек

• Тюнинг за счет инфраструктуры

Магазины

• Специализированные CMS, интеграция с бухгалтерскими и складскими системами

• Работа с финансовыми транзакциями

• Пользователи лояльнее к времени открытия страницы

• Многое как в контентных сайтах

Бизнес-приложения• Web-фреймворки: PHP, Ruby, Python,

Java, C#

• Данные в SQL БД, один сервер БД, один сервер приложения

• Пользователи часто корпоративные или лояльны к интерфейсу и задержкам ради функций

• Тюнинг за счет асинхронных задач, оптимизации алгоритмов

RTB, поиск и т.д.

• Сервисы без интерфейсов: Java, C++ и т.д.

• NoSQL БД, специальные файловые системы

• «Пользователи» – внешние системы

• Тюнинг за счет оптимизации алгоритмов, MapReduce, оптимизации хранения данных

АрхитектураОпределяющие вещи (по убыванию сложности изменения):

• Предметная область

• Слои абстракции

• Протоколы взаимодействия

• Структура хранения данных

Архитектура – это то, что сложнее всего

поменять в проекте

Слои по Э. Эвансу

• Интерфейс пользователя (UI)

• Уровень приложения (Application layer)

• Уровень предметной области (Domain layer)

• Инфраструктурный уровень (Infrastructure layer)

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

• Хранение данных (Persistence): БД, файловая система

• Службы рассылки email, sms и т.д.

• Логгирование и мониторинг

• Очереди задач, кэширование данных и страниц

UI

• Шаблоны для отображения: HTML + JS и вот это все

• Представление в виде документов

• Локализация и интернационализация

• Usability

Уровень приложения

Основной объект – контроллеры:• Принимают данные от слоя бизнес-

логики, выбирают отображение

• Управляют службами инфраструктурного уровня (иногда кроме слоя хранения)

• Управляют правами доступа и протоколами безопасности

Предметная область

• Изолирована от специфики хранения данных

• Изолирована от специфики приложения: web, консоль, десктоп

• Манипулирует сущностями (Entities) и объектами-значениями (Value objects)

• Содержит слой сервисов для работы с бизнес-правилами (Business rules)

Кому нужна бизнес-логика?

По типам проектов

• Контентные и Интернет-магазины: вся логика в CMS, нужно заниматься в основном инфраструктурой

• Распределенные сервисы: в основном логика в поиске закономерностей в больших объемах данных

• Бизнес-приложения: вся основа – в предметной области

Подход к разработке бизнес-приложений: Domain Driven Design

(DDD)

Суть DDD

Типы объектов:

• Entity – сущность, объект обладающий уникальным существованием

• Value object – объект-значение, не является уникальным, много копий в системе

Суть DDD

Типы объектов:

• Service – не представляет реальный объект, манипулирует сущностями, реализует бизнес-правила. На стыке с уровнем приложения

• Repository – хранилище объектов. На стыке с инфраструктурным слоем

Пример: формирование human

readable date

Пример: рассылка email о событии

Пример: формирование исключения об

отсутствии прав на объект

Пример: изменение статуса сущности

Где нужны web-фреймворки?

Литература• Стивен МакКоннел. «Совершенный

код»

• Мартин Фаулер. «Архитектура корпоративных программных приложений»

• Эрик Эванс. «Предметно-ориентированное проектирование»

• Джоэл Спольски. «Джоэл о программировании», «Джоэл снова о программировании»

Спасибо!

• Email: at@7bits.it

• Skype: anna_tarasenko

top related