Повторное использование

Здравствуйте, всем.

Имею следующий вопрос. Раньше я занимался десктопными приложениями и с повторным использованием кода было вроде как все ясно - все, что могло понадобиться в дальнейшем я помещал в отдельные библиотеки. Потом добавился вэб, точнее Google App Engine, тут вроде как библиотеками тоже вопрос решался. Теперь подошла очередь фреймворков и вот тут я застопорился. Если я разрабатываю два сайта схожих по основной своей функциональности, как избавиться от необхожимости переписывать для второго сайта, то, что уже реализованно в первом? Копи-паст меня почему-то(странно, почему бы это :) ) не устраивает. Создать свои библиотеки? По правде говоря, я не вижу способа как сделать это элегантно. Yii я только начал изучать и возможно пока еще не вижу очевидного. Подскажите вариант решения, кто как у себя этот вопрос решает? Может быть есть описание в доке, пожалуйста, дайте ссылку. Я сейчас смотрю в сторону модулей и хелперов. Я на верном пути?

P.S. В последнее время мне кажется, что если разработка сайтов ставится на поток, то одного фреймворка не достаточно, а следует писать свою CMS иначе будет постоянное велосипедостроительство. Может я не прав? Хотелось бы услышать мнение знающих людей.

Да, если сайты однотипные и их ну очень много — лучше написать свою CMS… или взять одну из существующих, если, конечно, устроит.

Расскажите, какой именно функционал приходится постоянно дублировать.

Я делал несколько очень схожих сайтов, но в каждом всё равно находилось то, что требовалось немного изменить. Создавать ради этого что-то универсальное ни желания, ни времени нет. Я вообще в универсальное с некоторых пор не верю :) Меня вполне устраивает модульная структура. Модули можно копировать, при необходимости что-то изменяя в их поведении в конкретном проекте. Ну и конечно стоит стараться повторяющуюся функциональность выносить в компоненты.