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

26
Архитектура в web – грабли, боль или красота Анна Тарасенко, 7bits

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

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

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

или красота

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

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

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

habrahabr

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

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

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

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

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

ыБизнес RTB,

поиск

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

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

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

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

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

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

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

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

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

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

+ +++ +++ ++

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

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

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

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

Drupal, Wordpress, Joomla и т.д.

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

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

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

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

Магазины

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

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

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

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

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

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

Java, C#

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UI

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

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

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

• Usability

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(DDD)

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

Суть DDD

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

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

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

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

Суть DDD

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

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

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

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

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

readable date

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

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

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

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

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

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

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

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

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

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

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

код»

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

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

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

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

Спасибо!

• Email: [email protected]

• Skype: anna_tarasenko