Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Enterprise Symfony Architecture (RU)

3,496 views

Published on

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

Published in: Technology
  • было бы круто еще увидеть структуру папок. Например, где вы храните свои DTO?
    Также: используете ли формы (если да, то в них тоже используете DTO?), как в контроллере/сервисе обрабатываете исключения, полученные из нижнего слоя (сервиса/репозитория соответственно)?
    Ну и примеры сервиса. спасибо
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

×