Как управлять и разрабатывать большие проекты TYPO3?
Я разрабатываю проекты TYPO3 с 2006 года, и проекты становятся все больше и сложнее. Настройка простого сайта CMS с контактной формой и списком новостей-это рутина.
прямо сейчас мы закончили более крупный проект: платформу для международной компании с бесчисленными расширениями: Вход и регистрация, новости, список записей базы данных, динамические контактные формы, опросы и статистика, интранет функции: загрузка и загрузка документов, несколько бэкэнд "твики" в TCA модификации и т. д. .
руководители проектов расстроились на нас, разработчиков, потому что иногда, после того, как мы закончили на функции X и позже зафиксировали функцию Y на dev-сервере, функция X была нарушена. Это было связано с настройками typoscript, взаимозависимостью расширений, ошибками управления версиями или иногда простыми ошибками программирования и опечатками. Я знаю, как позаботиться о последнем, но в общем:
из своего опыта:
как мы можем разработать систему защиты от ошибок в TYPO3, где все работает под рукой и расширения не мешают? другими словами: Как мы можем обезопасить и изолировать функции (расширения) и избегать этих вопросов interdepency?
мы работаем в команде разработчиков с двумя разработчиками, и мы уже используем:
- Репозиторий Subversion
- локальный сервер DEV для разработки и тестирования
- конфигурация внешнего typoscript файлы, разделенные на отдельные файлы для каждого расширения
изменить для Bountyhunters:
то, что я ищу,-это резюме лучшей практики, которое может включать следующие темы:
- общие привычки рабочего процесса
- общие привычек
- надежность наших диверсионных коммитов (или Git)
- модульное тестирование (PHPUnit, Selenium?)
- развертывание (я еще не понял, как автоматизировано развертывание может помогите нам)
- чем лучшие практики
3 ответов
проблемы, которые мы могли бы найти в крупных проектах TYPO3, не сильно отличаются от любого проекта развития.
общие рекомендации :
- настроить платформа непрерывной интеграции С инструменты непрерывного развертывания;
- развитие управляемое испытанием с автоматизированным испытанием;
- надежная архитектура (БД, маршрутизация URL,...);
- тесты производительности в ходе развитие;
- использовать versionning с форматированными комментариями;
- используйте мощную IDE как PHPStorm, Eclipse, Netbeans;
общие практики TYPO3:
- использовать официальный API;
- соблюдать руководство по коду API TYPO3;
- использовать в TYPO3 крючки где вы можете, если вам нужно изменить логику основных или сторонних расширений;
- использовать настройки typoscript константы!--7--> для отделения данных от логики в вашей конфигурации;
Дополнительные ссылки :
- в TYPO3 научно-практическая конференция
- Typo3 лучшие практики (de)
- TDD & лучшие практики mit TYPO3 (de)
расширения могут помочь управлять сложной установкой TYPO3 :
используйте современные методологии и инструменты управления проектами
- Scrum, канбан, принципы бережливого развития
- Bugtrackers как Redmine, Trac
книги :
Я абсолютно рекомендую начать использовать PHPUnit для модульного тестирования, но помните, что модульное тестирование-это то, как вы создаете код в первую очередь, а не то, что вы добавляете позже. Но, конечно, лучше поздно, чем никогда.
вы должны рассмотреть возможность создания сервера сборки, такого как jenkins/hudson или Atlassian-это бамбук. Последнее довольно приятно и интегрируется с Zend studio, что, на мой взгляд, является лучшим выбором при разработке на PHP. В генерал компании Atlassian продукты широко использованы для проектов программного обеспечения. (В частности, Jira + confluence + greenhopper)
Я бы также рекомендовал настроить phpunit на jenkins-see http://jenkins-php.org/ как шаблон, хотя я читал хорошие отзывы о Teamcity. Затем, в зависимости от кода, который вы пишете, вы настраиваете модульные тесты (для кода raw php, возможно, немного с насмешками), интеграционные тесты (API и подключение модулей) и системные тесты (selenium).
Как только вы запустите его после каждой сборки, вы можете быть уверены, что хотя бы покрытая функциональность работает. Проблема однако вы потратите больше времени на написание тестов и их поддержку, а также на обдумывание тестируемого кода. Также имейте в виду, что вы не можете охватить все - это не имеет значения. У вас должны быть пройдены критические пути.