Один маленький проект: история продолжается, или сервис для людей
В первой заметке цикла было рассказано о том, как зародилась идея о создании сервиса Web Optimizator. Сейчас я хочу коснуться первых месяцев его роста и развития и тех проблем, с которыми столкнулся (или, наоборот, по счастливой случайности, не столкнулся). Итак, поехали.
WebSiteOptimization
В самом конце прошлого года идея создать онлайн-инструмент для проверки скорости загрузки сайта из чисто мнимой сущности все более становилось материальной. За пару дней был написан прототип, который анализировал пару сайтов и мог сказать, какие приемы на них применены и, что казалось более важным на тот момент, какие приемы нужно применить для ускорения загрузки сайта. Однако, вывод его был достаточно скуп и убог. Его нужно было как-то видоизменять.
За основу первоначального вывода был взят сайт website optimization, который также предлагает ряд советов, однако, все они на английском языке и давно не обновлялись.
Метка первая: не бойтесь изучать свою отрасль (предметную область), брать лучшие из существующих решений и их улучшать. Если у вас получится (а как еще может быть иначе), то лучшими вполне можете стать именно вы.
Информационный вакуум
И первая проблема, на которую я напоролся, заключалась в (нет, не подумайте, алгоритм анализатора работал вполне точно, и те технические проблемы, которые с ним возникали, не стоят детального рассмотрения) недостатке информации по техникам оптимизации. Это был, действительно, какой-то информационный вакуум. Сервис по анализу сайта не мог выдавать многостраничные рекомендации, а давать краткий совет без ссылок на подробное его описание и, что более важно, на техническую реализацию не представлялось возможным.
Для этого в январе месяце (параллельно с отладкой технических нестыковок механизма и некоторыми его улучшениями) было опубликовано еще несколько статей, касающихся именно практической стороны выдаваемых советов. Также была сделана подборка статей на русском и английском языке (последние были все переведены чуть позже), которая полностью раскрывала заявленную тематику.
Метка вторая: проект не может быть запущен в вакууме. Если вы что-то делаете, обязательно ориентируйтесь на то, что уже сделано. Если сделано очень мало, не бойтесь заполнить пустоту собой: вряд ли что-то можно придумать хуже пустоты (в маркетинговом смысле).
Отступление про ноутбук
В прошлый раз я много рассказал о том, как родилась сама идея, но ни словом не обмолвился о роли ноутбука. На данный момент ноутбук является для меня основным рабочим инструментом: я могу работать в поезде, в автобусе, в самолете, на берегу моря и даже в офисе, наконец. На Хабре много говорится в последнее время о фрилансе и ко-воркинге, ноутбук является неотъемлемой их частью, потому что позволяет работать в любое удобное время в любом удобном месте.
Замечу, что для стандартного офисного работника ноутбук может быть не менее важным, чем для фрилансера. Вопрос: когда стоит покупать ноутбук и в какую цену — я оставлю несколько в стороне (эта тема отдельной дискуссии). Для меня решающими были два фактора: чтобы он был удобным в работе и окупал затраченные на него деньги. С ноутбуком я могу работать, пока еду в электричке или автобусе, пока жду в аэропортах или на вокзалах. В среднем, это время ожидания конвертируется во вполне понятные деньги, которые давно уже покрыли все затраты. Ведь это очень просто: любое место, где есть я и ноутбук (и WiFi (и электричество)) превращается в рабочее.
Метка третья: покупайте инструменты, которые сэкономят вам время или деньги, если они при этом окупятся хотя бы вдвое. Не бойтесь разумно вкладывать деньги в свой образ жизни — если это делать с умом, то они вернутся сторицей.
Time Management
Возможно, я скажу банальную вещь, но разделяйте ваше время на выполнение отдельных задач. Невозможно делать все и сразу. Если быть точным, одновременно можно делать только две-три вещи с максимальной концентрацией, при этом, в совокупности, все будет сделано быстрее, чем при параллельном выполнении множества задач.
Однако, есть и нюансы. Многие, наверное, задаются вопросом: как можно успевать и работать в офисе, и заниматься какими-то проектами, и иметь личную жизнь? Я отвечу следующим примером: около 80–85% всех моих статей и переводов написаны именно в дороге. Это удивительно, но я, практически, не потратил на них того самого «рабочего времени». Я могу свободно посвятить выходные себе (любой девушке, любимому парню, любимой собаке — ненужное вычеркнуть), нисколько не теряя при этом рабочего темпа. Здесь можно сформулировать еще одно простое правило:
Метка четвертая: совмещайте независимые занятия, вы можете объединять несколько дел, не теряя при этом качества ни одного из них. При этом и жизнь будет более полной и интересной, и успевать вы будете больше. И никаких возбуждающих препаратов — дело лишь в самоорганизации и осознании.
P.S. данная статья на 90% написана именно в электричке.
Про рейтинги
Но вернемся, собственно, к Оптимизатору. Единственной проблемой, которая была, есть и, наверное, будет в будущем, является создание максимально объективного индекса «оптимизированности». Для примера скажу, что различные поправки в PageRank у Google вносились, в среднем, два раза в день в течение последнего года. Только таким образом инженеры смогли поддержать его актуальность.
В моем случае индекс («Интегральная оценка») также пересматривался много раз. Сейчас на сервисе работает пятая редакция, в которую внесено множество самых различных весовых поправок, однако, это все равно не гарантирует, что ее нельзя «взломать» — просто она обеспечивает наиболее адекватную оценку для среднего сайта.
Само понятие «оптимизированности» сайта очень сильно связано с его качеством и объемом представленной информации. Как очень сложно оценить графическую информацию (белый шум это или график колебаний валют), так не менее сложно оценить качество сайта (взять хотя бы сервис cys.ru), поэтому дискуссию о правомерности тех иных критериев при оценке рассматриваемого параметра лучше вынести за пределы данной заметки.
Метка пятая: изобретая велосипед, собирайте его из запасных частей, опирайтесь на опыт предшественников, ибо кроме него просто больше не на что опереться :)
Про полезность
Где-то год назад на Хабре проскакивала статья о небольшом американском стартапе — сервисе бесплатных объявлений (если кто поделится ссылкой — буду премного благодарен). Основная ее мысль заключалась в том, что организаторы не хватали звезд с неба, а последовательно делали сервис, который был бы нужен как им самим, так и пользователям. Они учитывали, практически, все пожелания и ориентировались именно на конечных потребителей.
Эта история, как мне кажется, является основой того, что сейчас принято называть Web 2.0-подходом: сервис делается для пользователей, а не с целью заработать деньги, а уже после этого он становится известным и приносящим доход создателям. В общем, при создании и улучшении Web Optimizator я ориентировался именно на это. На данный момент у сервиса даже работает сбор пользовательских пожеланий с ранжированием по их популярности.
Метка шестая: если вы не занимаетесь «черным SEO», то единственный путь к успеху — это создание сервисов, которыми будет удобно пользоваться.
Немного о структуре
Хочется поделиться текущей серверной архитектурой, ибо единственным просчетом после ее разработки оказалось, что реальная нагрузка на 2 порядка меньше, чем было запланировано (сейчас где-то 0,5–1%). Но это всего лишь обеспечивает хороший потенциал роста.
Итак, поскольку сам процесс анализа загрузки сайта довольно трудоемкий (необходимо загрузить и проанализировать каждый файл с заданного сайта), то было решено кешировать все результаты, чтобы наиболее часто запрашиваемые ресурсы не проверялись лишний раз. В качестве кеширующей платформы были выбраны SSI-директивы (да простят меня апологеты php+eAccelerator+memcached), чтобы вообще не обращаться к базе данных без крайней необходимости. В результате, большая часть сайта сейчас — это статичные страницы, которые хранятся один месяц, после чего удаляются (чтобы минимизировать еще и нагрузку на файловую систему).
Все динамические параметры пересчитываются раз в 10 минут или 4 часа, а не каждый раз, когда запрашивается та или иная страница (при запросе страницы даже не проверятся, нужно ли обновить кеш или нет, кеш сам пересчитывается). Таким образом, единственное узкое место на данный момент — это именно ядро, анализатор загрузки сайта. Если у кого-то будет желание покопаться в его структуре, чтобы немного ускорить его на серверном уровне — милости просим.
И просто спасибо
Спасибо всем за теплые отзывы и поддержку проекта. Я получил уже, наверное, сотню писем и сообщений со словами благодарности. Вот уж что было, действительно, непредсказуемым — это реакция сообщества вебмастеров. Вы все вместе сделали для сервиса гораздо больше, чем я сам. Только благодаря вашей поддержке за последний месяц:
- Проект был переведен на отдельный сервер, надеюсь, скорость его работы и доступность только повысилась. Пока аренда сервера полностью окупается за счет рекламы.
- Сменился дизайн внешней части. Огромное спасибо за профессиональную работу Rafael aka Fade. Все найденные баги можно смело писать в комментариях.
- Был создан Flash-виджет для vkontakte. Большое спасибо Илье. Также это приложение доступно в разделе Виджеты на сайте.
- Выложено описание API для создания собственных приложений.
- И много-много других более мелких улучшений...
Если у вас появятся мысли о дополнительных инструментах для сервиса, или вы сможете предложить часть серверных ресурсов — пожалуйста, напишите в приват. Я думаю, у нас найдется, что обсудить.
Если вам просто нравится сервис, и вы хотели бы сделать что-то полезное для него, но не знаете, как — просто поставьте кнопку у себя в блоге и(ли) напишите о проекте свое мнение. Этого будет достаточно :)
Продолжение следует...
P.S. Если у кого-то возникнет желание отблагодарить материально (крайне редко такое все же случается :) — реквизиты приведены здесь.