3. Характеристики
Контентные Магазины Бизнес RTB,
поиск
Объем данных ++++ +++ ++ +++++++
Число
пользователей
+++++ +++ ++ ++
Число запросов ++++++ ++++ +++ +++++++
Время отклика ++ +++ ++++ +
Публичность +++ +++ -/+ -/+
Стоимость
разработки
++ + +++++ +++++
Надежность
хранения данных
+ +++ +++ ++
Сложность
логики
+ ++ +++++ +++++
4. Контентные сайты
• Content management system (CMS) – Drupal,
Wordpress, Joomla и т.д.
• Много серверов, много файлов (видео, аудио)
по сравнению с объемом данных в БД
• Кэширование контента, пользователи не
терпят задержек
• Тюнинг за счет инфраструктуры
5. Магазины
• Специализированные CMS, интеграция с
бухгалтерскими и складскими системами
• Работа с финансовыми транзакциями
• Пользователи лояльнее к времени открытия
страницы
• Многое как в контентных сайтах
6. Бизнес-приложения
• Web-фреймворки: PHP, Ruby, Python, Java, C#
• Данные в SQL БД, один сервер БД, один
сервер приложения
• Пользователи часто корпоративные или
лояльны к интерфейсу и задержкам ради
функций
• Тюнинг за счет асинхронных задач,
оптимизации алгоритмов
7. RTB, поиск и т.д.
• Сервисы без интерфейсов: Java, C++ и т.д.
• NoSQL БД, специальные файловые системы
• «Пользователи» – внешние системы
• Тюнинг за счет оптимизации алгоритмов,
MapReduce, оптимизации хранения данных
8. Архитектура
Определяющие вещи (по убыванию сложности
изменения):
• Предметная область
• Слои абстракции
• Протоколы взаимодействия
• Структура хранения данных
10. Слои по Э. Эвансу
• Интерфейс пользователя (UI)
• Уровень приложения (Application layer)
• Уровень предметной области (Domain layer)
• Инфраструктурный уровень (Infrastructure
layer)
11. Инфраструктура
• Хранение данных (Persistence): БД, файловая
система
• Службы рассылки email, sms и т.д.
• Логгирование и мониторинг
• Очереди задач, кэширование данных и
страниц
12. UI
• Шаблоны для отображения: HTML + JS и вот
это все
• Представление в виде документов
• Локализация и интернационализация
• Usability
13. Уровень приложения
Основной объект – контроллеры:
• Принимают данные от слоя бизнес-логики,
выбирают отображение
• Управляют службами инфраструктурного
уровня (иногда кроме слоя хранения)
• Управляют правами доступа и протоколами
безопасности
14. Предметная область
• Изолирована от специфики хранения данных
• Изолирована от специфики приложения:
web, консоль, десктоп
• Манипулирует сущностями (Entities) и
объектами-значениями (Value objects)
• Содержит слой сервисов для работы с бизнес-
правилами (Business rules)
16. По типам проектов
• Контентные и Интернет-магазины: вся
логика в CMS, нужно заниматься в основном
инфраструктурой
• Распределенные сервисы: в основном
логика в поиске закономерностей в больших
объемах данных
• Бизнес-приложения: вся основа – в
предметной области
18. Суть DDD
Типы объектов:
• Entity – сущность, объект обладающий
уникальным существованием
• Value object – объект-значение, не является
уникальным, много копий в системе
19. Суть DDD
Типы объектов:
• Service – не представляет реальный объект,
манипулирует сущностями, реализует
бизнес-правила. На стыке с уровнем
приложения
• Repository – хранилище объектов. На стыке с
инфраструктурным слоем