11 февраля 2010

Три года одного проекта

Хорошая задача — такая, решения которой вы не знаете. // Пол Локхард

Есть проекты существующие сами по себе, а есть такие, за которыми стоит труд многих людей. Я расскажу вам о сайте, над которым я работал последние три года — Желтые Страницы Уфы.

Желтые страницы уже не первый десяток лет занимаются выпуском бумажного справочника. Большой штат операторов вместе с агентами™ постоянно содержат базу данных в актуальном виде. Наверное, это решающее отличие компании от тех сайтов, которые представляют посетителям самостоятельно поддерживать базу в актуальном виде (UGC). Но не буду забегать вперед.

Я пришел заниматься проектом в конце 2006 года. Мне было 20 лет. На тот момент у меня уже был трехлетний опыт программирования на PHP (в студии Ора и как фрилансер), а до этого на Parser. Я уже знал о Смирнове (Spesta, Reg][ster), Болке, Кукутзе (один из разработчиков NPJ), Д. Котерове (DK Lab). Наверняка еще что-то знал, о чем не упомянул. Я хочу сказать, что я не был начинающим программистом.

Даже со скидкой на то, что это было достаточно давно, я не могу сказать, что сайт выглядел современно даже для того времени. Он безнадежно устарел. Уже в то время вместе с Александром Гурьяновым был запущен сайт телеканала Вся Уфа c RSS лентой и всякими приятными вещами скрытыми в админке от глаз посетителей.


Примерно в таком виде как на скриншоте он существовал с 2003 года до начала 2007 года.


Ситуацию с текущим сайтом прекрасно осознавало и руководство, так что первым делом сайт был подвергнут косметической подтяжке в студии R-M-C.

Внешне сайт стал лучше, но внутри он все еще был сайтом начала 2000-х годов и трещал по швам. Прошлым разработчикам известным образом удавалось расходовать все ресурсы выделенного сервера: баннерная система занимала в базе данных места больше чем 20 000 предприятий, а поисковая система пропускала посетителей строго по очереди. Так что первое время шла активная работа по устранению проблем в старой архитектуре.


Так сайт выглядел в течении года до середины 2008.


Для новой архитектуры сайта я поставил простую и ясную цель: «быть максимально гибкой и независимой от обстоятельств». Некоторые убеждены, что ТЗ должно описывать весь функционал системы от А до Я, так как последующие изменения могут разрушить стройность разработки. Но мной были изначально заложены возможности для роста и я сфокусировался на основной функции сайта — поиске информации о фирме.

До:


После:


В середине 2008 года была запущена абсолютно новая версия сайта.

В верстке использовались CSS спрайты, база данных сайта получила самостоятельность (и репликацию с основной), сам сайт получил совместимость с PHP 5, а посетители — новую и очень быструю поисковую систему.

Поисковая система теперь искала не только по названиям фирм, но и по пользовательским ключевым словам как самих фирм, так и рубрик в которых фирма размещена. Простое в реализации и очевидное улучшение поиска.

На новом сайте появилась единая система статистики для всех событий на сайте.

Где-то в это время я защитил диплом ))) по новой и актуальной в начало кризиса теме «оценка рейтинга банка на основе его финансовых показателей» (модель бинарного выбора, порядковая модель на панельных данных).

До конца 2008 были запущены уникальные на то время функции: несколько тысяч фотографий домов отображались рядом с адресом, а несколькими днями позже появились и схемы проезда.

Вероятно, у нас первых в городе появились детализированные схемы проезда. Яндекс только в середине ноября выпустил API для карт, а детализированные карты у них вышли уже годом позже.


Фейслифтинг 2008 года


В течении 2009 года было запущено еще несколько проектов.

Весной свет увидел Мир скидок со свободной регистрацией. На сегодня фирмы самостоятельно добавили около 500 спец. предложений, из которых около сотни актуальны.

Тогда же началась работа на собственной системой контекстной рекламы на сайте. Фирмы могли покупать как приоритеты в рубриках, так и отдельные поисковые фразы на сайте, статистика по которым собиралась с самого запуска нового сайта.

Тем же летом, усилиями партнеров запущены Расписания с пригородными автобусами и электричками, которым яндекс уделил внимание только в прошедшие новогодние каникулы.

Тогда же примерно появился раздел со ставками по банковским вкладам.

Параллельно со всем, с начала года шла работа над картами на основе OpenLayers (эту платформу используют Navitel, 2GIS.Beta), а с обновлением карт на яндексе — API Яндекс.Карт.

В декабре к команде разработки подключился второй программист.

Сейчас наступил 2010 год. В работе находятся несколько интересных функций.


Ежедневно сайт посещают 5000 человек (75% уфимцы), просматривая 30 000 страниц. На Liveinternet цифры поменьше


Какие выводы можно сделать, имея трехлетний опыт работы над одним проектом?

1. У вас не выйдет сконцентрировать все свои усилия на разработке новой версии, так как требуется время на поддержку и внедрение функций в существующий сайт.
2. Недостаток инсайдерской информации о конкурентах может привести к появлению проектов «как у яндекса» (примерно на полгода мы выиграли во времени у них с картами и электричками).
3. Как программист многое я бы переписал сейчас с нуля, но рынок требует новых функций и твоего времени.
4. Огромный опыт работы над интересным сайтом.
+3

Комментарии:21

avatar
  • MpaK
  • 11 февраля 2010, 23:58
  • +1
Хорошо-то как!

3 года одного проекта не утомили? Я бы наверное сошел с ума заниматься одним и тем же проектом ежедневно :)

5000 уникумов и 30000 просмотров, а зачем несколько баз и сильная оптимизация, ведь не так-то нагружено как кажется, или кажется?
avatar
  • akhmetov
  • 12 февраля 2010, 00:00
  • 0
В рабочие часы до 80 человек одновременно сайтом пользуются. А база отдельная, чтобы отвязать ее от той, с которой операторы работают. Безопасность.
avatar
  • MpaK
  • 12 февраля 2010, 00:31
  • +1
Тогда понятно. База как понимаю MySQL master-slave, как часто репликация происходит, заметны тормоза при работе и ведении бинарного лога?

Кстати, чисто технически, внутри как устроено если не секрет?
avatar
  • akhmetov
  • 12 февраля 2010, 00:34
  • 0
Не. Слишком все правильно понимаешь :-) Репликация раз в сутки простым скриптом. Настоящая репликация средствами MySQL избыточное решение в данном случае. + скрипт некоторые процессы выполняет над данными, которые облегчают работу поисковым запросам
avatar
  • MpaK
  • 12 февраля 2010, 08:38
  • 0
О, как :)

Sphinx не было желания поставить?

Стоит у меня на серваке, но пока руки не доходили попробовать натравить его на какую-нить базу
avatar
  • akhmetov
  • 12 февраля 2010, 14:10
  • 0
Было ) Почти с начала слежу за ним… Еще с HighLoad 2007.
avatar
А как фирма называется? :)
avatar
  • akhmetov
  • 12 февраля 2010, 14:06
  • 0
Так и называется: www.ufainfo.ru/contacts.php
Вакансии: ural.hh.ru/employer/633287
avatar
Ага, ясно. Просто я помню, что году в 2006 ходил на собеседование в какую-то контору, которая чо-то там писала для жёлтых страниц как раз… Ну, если не ошибаюсь, конечно…
avatar
  • akhmetov
  • 12 февраля 2010, 17:49
  • 0
Это далекие события :)
avatar
  • MpaK
  • 12 февраля 2010, 21:55
  • 0
Может «Алгоритм» какой?
avatar
Нет, по-моему не он) Ты мне про эту контору сам гогорил, у тебя какой-то знакомый там ещё работал.
avatar
  • MpaK
  • 13 февраля 2010, 16:57
  • -1
МИТЦ может?
avatar
тест
avatar
плюсадин
avatar
скажите, м-р Ахметов, как вступить в коллект. блог? ато некоторые грят — это легко, анннн, нет, нихрена не видно кнопы/ссылы :(
юзабильность, блинннн… :(((
avatar
Нажать на иконку штепселя напротив названия блога www.ufacode.ru/blogs/
avatar
ааа… гран мерси!
у МраКа наверно 200%-ное зрение ;) иконка-то чуть крупнее 1х1…
да и словами при наведении м.б. подсказать…
avatar
Это стандартный дизайн свободного бесплатного движка — LiveStreet — клона хабра.
avatar
  • MpaK
  • 06 июля 2010, 16:34
  • 0
Ну так сказали бы :) я бы и увеличил и подписал как вот например сделал сейчас ;-)
avatar
как сейчас, еще не смотрел. а вощето, не надо забывать про тех, у кого зрение -6 и +5 ;)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.