SlideShare a Scribd company logo
1 of 26
Download to read offline
Alexander Lisachenko
Lisachenko_it@gmail.com
Enterprise Symfony
Architecture
О докладчике
Лисаченко Александр
• Руководитель отдела
проектирования ПО в Alpari
• Идеолог Symfony2: почти вся
инфраструктура на Symfony2, в
т.ч. и основной сайт alpari.ru
(миллионы хитов в день,
BigData при анализе, высокая
сложность логики)
Twitter: @lisachenko
Github: https://github.com/lisachenko
2
Что такое архитектура?
3
Архитектура ПО
4
Архитектура ПО
Наука
Искусство
Архитектура
ПО
5
Основные идеи архитектуры
Ускорение/удешевление
достижения бизнес-цели.
Cнижение сложности системы
путем абстракции и
разграничения полномочий.
Достижение
производительности,
отказоустойчивости и
масштабируемости.
6
Проектный треугольник
Время Деньги
Функци
и
Архите
ктура
Вре
мя
День
ги
Функ
ции
Enterprise
7
Уровни архитектуры
Микро
Стиль кода
(SOLID)
Ограничения
(хуки, ветки)
Макро
Компоненты
(LDAP, MQ)
Модули
Сервисы
(SOA)
Приложения
8
Микро-архитектура. SOLID
А ты используешь принципы SOLID?
9
Микро-архитектура. SOLID
(S)Ingle Responsibility
• Принцип единственной ответственности. Каждый метод и класс делает свое дело
(O)pen-Closed principle
• Класс должен быть открыт для расширения, но закрыт для изменения
(L)iskov Substitution
• Методы должны работать с подтипами, ничего не зная о них заранее
(I)nterface Segregation
• Лучше много конкретных интерфейсов, чем один гигантский.
(D)ependency Inversion Principle
• Абстракции не должны зависеть от конкретных реализаций. Не проси – тебе дадут
10
Symfony2 – макро-архитектура
View
Controller
Model
11
Symfony2 - это не MVC!
View
Controller
Model???
12
Слои в Symfony2
View
Controller Service
Data
Access
13
Корпоративная архитектура SF2
Только данные!
Никаких методов в
сущностях. (AR)
Репозитории только
для методов
поиска/конвертации
данных.
Получают только
аргументы и
возвращают только
примитивные типы:
скаляры, DTO.
Реализуют бизнес-
логику.
Обеспечивает только
распаковку
запроса/упаковку
ответа, а также вызов
одного сервиса
Контроллер
Сервисы
Источники
данных
14
Пример правильного контроллера в коде
Получить
запрос
• Request
Разобрать
параметры
• $login
• $pass
Вызвать
сервис
• UserService
-> login()
Вернуть
данные
• $isSuccess
15
Толстый тупой уродливый контроллер (ТТУК)
16
Компоненты
Аутенти-
фикация
Модуль
авториза-
ции
Шина
событий
(MQ)
Сервисная
шина
(SOA)
Failover
17
Корпоративная аутентификация – LDAP/x.509
LDAP
App1
App2
Service1Service2
Admin
18
Сервисная шина (SOA)
(SOA, англ. service-oriented
architecture) — модульный
подход к разработке
программного обеспечения.
Превращаем сервисы SF2 в
полноценные веб-сервисы и
используем в других
приложениях.
Следуем принципу SRP для
сервисов!
SOA
Service1
Service2
Service3
Service4
Service5
Service6
19
Плюсы и минусы SOA
20
За и против SOA
Преимущества
• Независимая разработка
• Контроль доступа к коду
• Проще управлять
• Единственная
ответственность
• Проще масштабировать
Недостатки
• Новые точки отказа
• Сложный мониторинг
• Сложнее отладка
взаимодействия
• Управление версиями
• Круговые зависимости (!)
• Медленная работа
конечных приложений
21
Failover
Geo
Balancer
Nginx
Varnish
Backend
1
Backend
2
Nginx
Varnish
Backend
3
Backend
4
22
Failover
Virtual
Host
HAProxy
(DC1)
TCP
Service 1
TCP
Service 2
HAProxy
(DC2)
TCP
Service 1
TCP
Service 2
23
Асинхронный процессинг
Быстрый ответ на запрос
Выполнение работы в фоновом режиме
Результаты в реальном времени
Масштабирование нагрузки
Уведомление других приложений о событиях
24
Асинхронный процессинг
Request
Response
Event Push
Event Subscribe
Push Result
Push Async Result
25
Спасибо!
Twitter: @lisachenko
Github: https://github.com/lisachenko
26

More Related Content

Similar to Enterprise symfony architecture (Alexander Lisachenko, Alpari)

Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010
Sergey Orlik
 
эволюция методологий управления (водопад, Rup, Agile) башакин
эволюция методологий управления (водопад, Rup, Agile)   башакинэволюция методологий управления (водопад, Rup, Agile)   башакин
эволюция методологий управления (водопад, Rup, Agile) башакин
WRider
 

Similar to Enterprise symfony architecture (Alexander Lisachenko, Alpari) (20)

Две крупные рыбы: One Identity Manager и Solar inRights
Две крупные рыбы: One Identity Manager и Solar inRightsДве крупные рыбы: One Identity Manager и Solar inRights
Две крупные рыбы: One Identity Manager и Solar inRights
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Процесс проектирования ИТ-решений
Процесс проектирования ИТ-решенийПроцесс проектирования ИТ-решений
Процесс проектирования ИТ-решений
 
Вебинар: Архитектура в ИТ-проектах (IT Expert 28 апреля 2016)
Вебинар: Архитектура в ИТ-проектах (IT Expert 28 апреля 2016)Вебинар: Архитектура в ИТ-проектах (IT Expert 28 апреля 2016)
Вебинар: Архитектура в ИТ-проектах (IT Expert 28 апреля 2016)
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработки
 
К стратегической сессии по будущему интернета
К стратегической сессии по будущему интернетаК стратегической сессии по будущему интернета
К стратегической сессии по будущему интернета
 
А.Левенчук -- SysArchi
А.Левенчук -- SysArchiА.Левенчук -- SysArchi
А.Левенчук -- SysArchi
 
Системная инженерия в России и мире
Системная инженерия в России и миреСистемная инженерия в России и мире
Системная инженерия в России и мире
 
Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010
 
Сбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIXСбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIX
 
Использование ICONIX для анализа требований в Scrum
Использование ICONIX для анализа требований в ScrumИспользование ICONIX для анализа требований в Scrum
Использование ICONIX для анализа требований в Scrum
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программист
 
А.Левенчук -- управление жизненным циклом актива
А.Левенчук -- управление жизненным циклом активаА.Левенчук -- управление жизненным циклом актива
А.Левенчук -- управление жизненным циклом актива
 
эволюция методологий управления (водопад, Rup, Agile) башакин
эволюция методологий управления (водопад, Rup, Agile)   башакинэволюция методологий управления (водопад, Rup, Agile)   башакин
эволюция методологий управления (водопад, Rup, Agile) башакин
 
Спроси эксперта. Solar inСode все, что вы хотели узнать про "дыры" в коде, но...
Спроси эксперта. Solar inСode все, что вы хотели узнать про "дыры" в коде, но...Спроси эксперта. Solar inСode все, что вы хотели узнать про "дыры" в коде, но...
Спроси эксперта. Solar inСode все, что вы хотели узнать про "дыры" в коде, но...
 
Intalio+Alfresco=Офис 2.0
Intalio+Alfresco=Офис 2.0Intalio+Alfresco=Офис 2.0
Intalio+Alfresco=Офис 2.0
 
[Add 4] crossplatform .net
[Add 4] crossplatform .net[Add 4] crossplatform .net
[Add 4] crossplatform .net
 
Почему стоит выбрать PHP
Почему стоит выбрать PHPПочему стоит выбрать PHP
Почему стоит выбрать PHP
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
 

Enterprise symfony architecture (Alexander Lisachenko, Alpari)