2. О докладчике
Лисаченко Александр
• Руководитель отдела
проектирования ПО в Alpari
• Идеолог Symfony2: почти вся
инфраструктура на Symfony2, в
т.ч. и основной сайт alpari.ru
(миллионы хитов в день,
BigData при анализе, высокая
сложность логики)
Twitter: @lisachenko
Github: https://github.com/lisachenko
2
10. Микро-архитектура. SOLID
(S)Ingle Responsibility
• Принцип единственной ответственности. Каждый метод и класс делает свое дело
(O)pen-Closed principle
• Класс должен быть открыт для расширения, но закрыт для изменения
(L)iskov Substitution
• Методы должны работать с подтипами, ничего не зная о них заранее
(I)nterface Segregation
• Лучше много конкретных интерфейсов, чем один гигантский.
(D)ependency Inversion Principle
• Абстракции не должны зависеть от конкретных реализаций. Не проси – тебе дадут
10
14. Корпоративная архитектура SF2
Только данные!
Никаких методов в
сущностях. (AR)
Репозитории только
для методов
поиска/конвертации
данных.
Получают только
аргументы и
возвращают только
примитивные типы:
скаляры, DTO.
Реализуют бизнес-
логику.
Обеспечивает только
распаковку
запроса/упаковку
ответа, а также вызов
одного сервиса
Контроллер
Сервисы
Источники
данных
14
15. Пример правильного контроллера в коде
Получить
запрос
• Request
Разобрать
параметры
• $login
• $pass
Вызвать
сервис
• UserService
-> login()
Вернуть
данные
• $isSuccess
15
19. Сервисная шина (SOA)
(SOA, англ. service-oriented
architecture) — модульный
подход к разработке
программного обеспечения.
Превращаем сервисы SF2 в
полноценные веб-сервисы и
используем в других
приложениях.
Следуем принципу SRP для
сервисов!
SOA
Service1
Service2
Service3
Service4
Service5
Service6
19
21. За и против SOA
Преимущества
• Независимая разработка
• Контроль доступа к коду
• Проще управлять
• Единственная
ответственность
• Проще масштабировать
Недостатки
• Новые точки отказа
• Сложный мониторинг
• Сложнее отладка
взаимодействия
• Управление версиями
• Круговые зависимости (!)
• Медленная работа
конечных приложений
21
24. Асинхронный процессинг
Быстрый ответ на запрос
Выполнение работы в фоновом режиме
Результаты в реальном времени
Масштабирование нагрузки
Уведомление других приложений о событиях
24