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

Viewers also liked

เฉลยเคมี
เฉลยเคมีเฉลยเคมี
เฉลยเคมีSunisa Suni
 
How to remove bubble dock adware
How to remove bubble dock adwareHow to remove bubble dock adware
How to remove bubble dock adwareharoNaroum
 
Effective guides to remove websearch.hotsearches.info
Effective guides to remove websearch.hotsearches.infoEffective guides to remove websearch.hotsearches.info
Effective guides to remove websearch.hotsearches.infoharoNaroum
 
Банковский ритейл глазами потребителя
Банковский ритейл глазами потребителяБанковский ритейл глазами потребителя
Банковский ритейл глазами потребителяNAFI Analytical Center
 
Amr Mohamed Elsayd RashedUpdate
Amr Mohamed Elsayd RashedUpdateAmr Mohamed Elsayd RashedUpdate
Amr Mohamed Elsayd RashedUpdateAmr Rashed
 
Could grexit be just around the corner the european union is on the verge of ...
Could grexit be just around the corner the european union is on the verge of ...Could grexit be just around the corner the european union is on the verge of ...
Could grexit be just around the corner the european union is on the verge of ...AustralianInvestmentEducation
 
Becerra_Ernesto_Professional_Persona _Project_Presentation
Becerra_Ernesto_Professional_Persona _Project_PresentationBecerra_Ernesto_Professional_Persona _Project_Presentation
Becerra_Ernesto_Professional_Persona _Project_PresentationErnesto Becerra
 

Viewers also liked (12)

Ecoby pawared
Ecoby pawaredEcoby pawared
Ecoby pawared
 
เฉลยเคมี
เฉลยเคมีเฉลยเคมี
เฉลยเคมี
 
How to remove bubble dock adware
How to remove bubble dock adwareHow to remove bubble dock adware
How to remove bubble dock adware
 
Effective guides to remove websearch.hotsearches.info
Effective guides to remove websearch.hotsearches.infoEffective guides to remove websearch.hotsearches.info
Effective guides to remove websearch.hotsearches.info
 
Ben CV new
Ben CV newBen CV new
Ben CV new
 
My profile
My profileMy profile
My profile
 
Банковский ритейл глазами потребителя
Банковский ритейл глазами потребителяБанковский ритейл глазами потребителя
Банковский ритейл глазами потребителя
 
Amr Mohamed Elsayd RashedUpdate
Amr Mohamed Elsayd RashedUpdateAmr Mohamed Elsayd RashedUpdate
Amr Mohamed Elsayd RashedUpdate
 
Could grexit be just around the corner the european union is on the verge of ...
Could grexit be just around the corner the european union is on the verge of ...Could grexit be just around the corner the european union is on the verge of ...
Could grexit be just around the corner the european union is on the verge of ...
 
Resume (1)
Resume (1)Resume (1)
Resume (1)
 
Becerra_Ernesto_Professional_Persona _Project_Presentation
Becerra_Ernesto_Professional_Persona _Project_PresentationBecerra_Ernesto_Professional_Persona _Project_Presentation
Becerra_Ernesto_Professional_Persona _Project_Presentation
 
copd
copdcopd
copd
 

Similar to Enterprise symfony architecture

Enterprise Symfony Architecture (RU)
Enterprise Symfony Architecture (RU)Enterprise Symfony Architecture (RU)
Enterprise Symfony Architecture (RU)Alexander Lisachenko
 
Две крупные рыбы: 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 CoreAndrew Gubskiy
 
Процесс проектирования ИТ-решений
Процесс проектирования ИТ-решенийПроцесс проектирования ИТ-решений
Процесс проектирования ИТ-решенийМаксим Смирнов
 
DUMP-2013 Serverside - Разработка развесистого API - Коржнев Сергей
DUMP-2013 Serverside - Разработка развесистого API - Коржнев СергейDUMP-2013 Serverside - Разработка развесистого API - Коржнев Сергей
DUMP-2013 Serverside - Разработка развесистого API - Коржнев Сергейit-people
 
Вебинар: Архитектура в ИТ-проектах (IT Expert 28 апреля 2016)
Вебинар: Архитектура в ИТ-проектах (IT Expert 28 апреля 2016)Вебинар: Архитектура в ИТ-проектах (IT Expert 28 апреля 2016)
Вебинар: Архитектура в ИТ-проектах (IT Expert 28 апреля 2016)Максим Смирнов
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработкиdevclub
 
К стратегической сессии по будущему интернета
К стратегической сессии по будущему интернетаК стратегической сессии по будущему интернета
К стратегической сессии по будущему интернетаAnatoly Levenchuk
 
А.Левенчук -- SysArchi
А.Левенчук -- SysArchiА.Левенчук -- SysArchi
А.Левенчук -- SysArchiAnatoly Levenchuk
 
Системная инженерия в России и мире
Системная инженерия в России и миреСистемная инженерия в России и мире
Системная инженерия в России и миреAnatoly Levenchuk
 
Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010Sergey Orlik
 
Сбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIXСбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIXBoris Volfson
 
Использование ICONIX для анализа требований в Scrum
Использование ICONIX для анализа требований в ScrumИспользование ICONIX для анализа требований в Scrum
Использование ICONIX для анализа требований в ScrumNikita Filippov
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программистru_Parallels
 
А.Левенчук -- управление жизненным циклом актива
А.Левенчук -- управление жизненным циклом активаА.Левенчук -- управление жизненным циклом актива
А.Левенчук -- управление жизненным циклом активаAnatoly Levenchuk
 
эволюция методологий управления (водопад, Rup, Agile) башакин
эволюция методологий управления (водопад, Rup, Agile)   башакинэволюция методологий управления (водопад, Rup, Agile)   башакин
эволюция методологий управления (водопад, Rup, Agile) башакинWRider
 
Спроси эксперта. Solar inСode все, что вы хотели узнать про "дыры" в коде, но...
Спроси эксперта. Solar inСode все, что вы хотели узнать про "дыры" в коде, но...Спроси эксперта. Solar inСode все, что вы хотели узнать про "дыры" в коде, но...
Спроси эксперта. Solar inСode все, что вы хотели узнать про "дыры" в коде, но...Solar Security
 
Intalio+Alfresco=Офис 2.0
Intalio+Alfresco=Офис 2.0Intalio+Alfresco=Офис 2.0
Intalio+Alfresco=Офис 2.0КРОК
 
Почему стоит выбрать PHP
Почему стоит выбрать PHPПочему стоит выбрать PHP
Почему стоит выбрать PHPMaxim Sivokon
 

Similar to Enterprise symfony architecture (20)

Enterprise Symfony Architecture (RU)
Enterprise Symfony Architecture (RU)Enterprise Symfony Architecture (RU)
Enterprise Symfony Architecture (RU)
 
Две крупные рыбы: 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
 
Процесс проектирования ИТ-решений
Процесс проектирования ИТ-решенийПроцесс проектирования ИТ-решений
Процесс проектирования ИТ-решений
 
DUMP-2013 Serverside - Разработка развесистого API - Коржнев Сергей
DUMP-2013 Serverside - Разработка развесистого API - Коржнев СергейDUMP-2013 Serverside - Разработка развесистого API - Коржнев Сергей
DUMP-2013 Serverside - Разработка развесистого API - Коржнев Сергей
 
Вебинар: Архитектура в ИТ-проектах (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
 

Enterprise symfony architecture