Enterprise Symfony Architecture (RU)

3,214 views

Published on

Презентация с доклада на конференции SymfonyCamp-2013

Published in: Technology
1 Comment
6 Likes
Statistics
Notes
  • было бы круто еще увидеть структуру папок. Например, где вы храните свои DTO?
    Также: используете ли формы (если да, то в них тоже используете DTO?), как в контроллере/сервисе обрабатываете исключения, полученные из нижнего слоя (сервиса/репозитория соответственно)?
    Ну и примеры сервиса. спасибо
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
3,214
On SlideShare
0
From Embeds
0
Number of Embeds
1,287
Actions
Shares
0
Downloads
27
Comments
1
Likes
6
Embeds 0
No embeds

No notes for slide
  • Невозможно изменить бюджет, расписание или область охвата проекта, не повлияв по крайней мере на один из других факторов.Чтобы приблизить дату окончания (время), вы можете потратить больше ресурсов (деньги) или убрать некоторые возможности (функции), чтобы было меньше работы.Чтобы сделать проект в рамках бюджета (деньги), вы можете не оплачивать сверхурочные и закончить проект позднее (время) либо сократить возможности продукта (функции).Чтобы добавить в продукт новые возможности (функции), вы можете продлить крайний срок, чтобы выделить время на новые задачи (время), или привлечь новых людей, чтобы работать быстрее (затраты). Можно также сделать и то, и другое!
  • Enterprise Symfony Architecture (RU)

    1. 1. Enterprise Symfony Architecture Alexander Lisachenko Lisachenko_it@gmail.com
    2. 2. О докладчике Лисаченко Александр • Руководитель отдела проектирования ПО в Alpari • Идеолог Symfony2: почти вся инфраструктура на Symfony2, в т.ч. и основной сайт alpari.ru (миллионы хитов в день, BigData при анализе, высокая сложность логики) Twitter: @lisachenko Github: https://github.com/lisachenko
    3. 3. Что такое архитектура?
    4. 4. Архитектура ПО
    5. 5. Архитектура ПО Наука Архитектура ПО Искусство
    6. 6. Основные идеи архитектуры Ускорение/удешевление достижения бизнес-цели. Cнижение сложности системы путем абстракции и разграничения полномочий. Достижение производительности, отказоустой чивости и масштабируемости.
    7. 7. Проектный треугольник Вре мя Enterprise День ги Время Деньги Функ ции Функци и Архите ктура
    8. 8. Уровни архитектуры Микро Стиль кода (SOLID) Ограничения (хуки, ветки) Макро Компоненты (LDAP, MQ) Модули Сервисы (SOA) Приложения
    9. 9. Микро-архитектура. SOLID
    10. 10. Микро-архитектура. Стиль кода. Основной критерий корпоративного кода – читаемость и прозрачность, никакого кунг-фу в виде $$name, цикломатической сложности>20 и разного стиля написания кода.
    11. 11. Микро-архитектура. Code Clean
    12. 12. Микро-архитектура. Code Clean
    13. 13. Микро-архитектура. Code Clean
    14. 14. Микро-архитектура. Code Clean getXXX() может вернуть что угодно false, null, etc… избегаем использования из-за неоднозначности. requireXXX() – всегда возвращает только один объект, или кидает исключение если их 0, либо больше, чем 1 объект. Избавляемся от всех ненужных проверок в куче мест.
    15. 15. Макро-архитектура Model Controller View
    16. 16. Symfony2 не MVC! Model Controller View
    17. 17. Symfony2 не MVC! MVC – это старый паттерн, который абсолютно не имеет права на жизнь в приложениях на базе Symfony2. Есть контроллеры, есть отображение, но что такое модели? Вы знаете ответ?
    18. 18. Symfony2 не MVC! Открою тайну: моделей нет и не будет! Есть только сервисы, с которыми надо общаться со стороны контроллеров.
    19. 19. Fat Stupid Ugly Controllers
    20. 20. Корпоративная архитектура SF2 Обеспечивает только распаковку запроса/упаковку ответа, а также вызов одного сервиса Контроллер Получают только аргументы и возвращают только примитивные типы: скаляры, массивы, DT O. Реализуют бизнеслогику. Сервисы Только данные! Никаких методов в сущностях. (AR) Репозитории только для методов поиска/конвертации данных. Источники данных
    21. 21. Хитрости контроллеров Контролеры возвращают только сырые данные:
    22. 22. Хитрости контроллеров Обрабатываем событие kernel.view и делаем переключение контекстов в зависимости от _format.
    23. 23. Корпоративная аутентификация App1 Admin App2 LDAP Service2 Service1
    24. 24. Сервисная архитектура (SOA) Web Services Dependency Injection! (SOA, англ. service-oriented architecture) — модульный подход к разработке программного обеспечения, основанный на использовании распределѐнных, слабо заменяемых компонентов, оснащѐнных стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам.
    25. 25. Сервисная архитектура (SOA) Service 1 Service 5 Service 2 App Service 4 Service 3
    26. 26. Проблема SOA
    27. 27. За и против SOA Недостатки Преимущества • Новые точки отказа • Сложный мониторинг • Сложнее отладка взаимодействия • Управление версиями • Круговые зависимости (!) • Медленная работа конечных приложений • • • • Независимая разработка Контроль доступа к коду Проще управлять Единственная ответственность • Проще масштабировать
    28. 28. Failover Geo Balancer Nginx Nginx Varnish Varnish Backend 1 Backend 2 Backend 3 Backend 4
    29. 29. Failover Virtual Host HAProxy (DC1) TCP Service 1 TCP Service 2 HAProxy (DC2) TCP Service 1 TCP Service 2
    30. 30. Асинхронный процессинг Daemon STOMP Application
    31. 31. Асинхронный процессинг Enterprise (медленно, но много фишек) Виртуальные очереди Отложенные события Приоритеты сообщений Сетевые мосты (актуально для нескольких ДЦ) 6. Встроенный механизм обработки сбойных сообщений NACK - DLQ 1. 2. 3. 4. 5.
    32. 32. Межпроцесcные события SF Event Listener STOMP Subscriber STOMP SF Event
    33. 33. Межпроцесcные события SF Event Listener Push Event Web Socket JS Event JS Handler
    34. 34. Контакты Twitter: @lisachenko Github: https://github.com/lisachenko Skype: X.i.t.m.a.s.t.e.r

    ×