2. О докладчике
Лисаченко Александр
• Руководитель отдела
проектирования ПО в Alpari
• Идеолог Symfony2: почти вся
инфраструктура на Symfony2, в
т.ч. и основной сайт alpari.ru
(миллионы хитов в
день, BigData при
анализе, высокая сложность
логики)
Twitter: @lisachenko
Github: https://github.com/lisachenko
10. Микро-архитектура. Стиль кода.
Основной критерий корпоративного кода –
читаемость и прозрачность, никакого кунг-фу в
виде $$name, цикломатической сложности>20 и
разного стиля написания кода.
14. Микро-архитектура. Code Clean
getXXX() может вернуть что угодно false, null, etc… избегаем использования из-за неоднозначности.
requireXXX() – всегда возвращает только один объект, или
кидает исключение если их 0, либо больше, чем 1 объект.
Избавляемся от всех ненужных проверок в куче мест.
17. Symfony2 не MVC!
MVC – это старый паттерн, который абсолютно
не имеет права на жизнь в приложениях на базе
Symfony2. Есть контроллеры, есть
отображение, но что такое модели?
Вы знаете ответ?
18. Symfony2 не MVC!
Открою тайну: моделей нет и не будет!
Есть только сервисы, с которыми надо общаться
со стороны контроллеров.
20. Корпоративная архитектура SF2
Обеспечивает только
распаковку
запроса/упаковку
ответа, а также вызов
одного сервиса
Контроллер
Получают только
аргументы и
возвращают только
примитивные типы:
скаляры, массивы, DT
O. Реализуют бизнеслогику.
Сервисы
Только данные!
Никаких методов в
сущностях. (AR)
Репозитории только
для методов
поиска/конвертации
данных.
Источники
данных
24. Сервисная архитектура (SOA)
Web Services Dependency Injection!
(SOA, англ. service-oriented architecture) — модульный подход
к разработке программного обеспечения, основанный на
использовании распределѐнных, слабо заменяемых
компонентов, оснащѐнных стандартизированными
интерфейсами для взаимодействия по стандартизированным
протоколам.
27. За и против SOA
Недостатки
Преимущества
• Новые точки отказа
• Сложный мониторинг
• Сложнее отладка
взаимодействия
• Управление версиями
• Круговые зависимости (!)
• Медленная работа
конечных приложений
•
•
•
•
Независимая разработка
Контроль доступа к коду
Проще управлять
Единственная
ответственность
• Проще масштабировать
31. Асинхронный процессинг
Enterprise (медленно, но много фишек)
Виртуальные очереди
Отложенные события
Приоритеты сообщений
Сетевые мосты (актуально для
нескольких ДЦ)
6. Встроенный механизм обработки
сбойных сообщений NACK - DLQ
1.
2.
3.
4.
5.
Невозможно изменить бюджет, расписание или область охвата проекта, не повлияв по крайней мере на один из других факторов.Чтобы приблизить дату окончания (время), вы можете потратить больше ресурсов (деньги) или убрать некоторые возможности (функции), чтобы было меньше работы.Чтобы сделать проект в рамках бюджета (деньги), вы можете не оплачивать сверхурочные и закончить проект позднее (время) либо сократить возможности продукта (функции).Чтобы добавить в продукт новые возможности (функции), вы можете продлить крайний срок, чтобы выделить время на новые задачи (время), или привлечь новых людей, чтобы работать быстрее (затраты). Можно также сделать и то, и другое!