Successfully reported this slideshow.
Your SlideShare is downloading. ×

Enterprise Symfony Architecture (RU)

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 34 Ad

More Related Content

Viewers also liked (19)

Similar to Enterprise Symfony Architecture (RU) (20)

Advertisement

Recently uploaded (20)

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

Editor's Notes

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

×