Статьи

Скимр: Внутренняя история

Я встретил двух моих соучредителей Skimr , Josf и Davd, у моего нынешнего работодателя — Seznam.cz. В основном это чешская Yahoo — электронная почта, карты, новости, поиск, объявления и т. Д. Мы являемся частью небольшой команды (скунсов или Google X, если хотите), где мы исследуем новые идеи продуктов, создаем прототипы, экспериментируем… некоторые из они делают это в производство.

Кстати, настоящие имена моих коллег — Джозеф и Дэвид. Сокращенные версии, Josf и Davd, принадлежат Дилану Твени из VentureBeat. Он думал, что меня зовут Питер, и я сократил свое имя так же, как мы сократили имя скимра (вместо скиммера). Тогда мы применили это к именам моих коллег. Мы думаем, что это довольно забавно, поэтому мы продолжаем называть их Josf и Davd.

Давд, Петр и Йосф

Я давно пользуюсь Google Reader. В основном со дня его запуска. Затем я перешел в популярное приложение Reeder. Моими любимыми подписками всегда были TechCrunch, Techmeme и т. Д. Однако, из-за разницы во времени между Европой и США, большинство статей были опубликованы ночью. Итак, утром у меня было множество новых непрочитанных сообщений — невозможно прочитать их все.

Поэтому я думал о способе буквально просмотреть заголовки и быстро увидеть, что нового. Я понял, что одного названия иногда было недостаточно, но, как правило, достаточно было сочетания названия и первых одного или двух предложений, чтобы получить основную историю. Если бы это было достаточно интересно, я мог бы щелкнуть по нему и прочитать статью полностью.

После того как я понял это, я спросил Джосфа, можем ли мы взять RSS-канал Techmeme и отобразить его на веб-странице в этом формате. Несколько дней спустя я все время пользовался этой веб-страницей. Я показал это своим друзьям, и все они спросили, могут ли они добавить свои собственные каналы.

Я собрал несколько макетов, и Джосф начал их кодировать. Затем я попросил моего другого коллегу Дэвда, который является отличным дизайнером, помочь мне сделать макеты красивыми. Вы знаете, шрифты, цвета, пропорции и т. Д. На этом этапе мы все еще строили небольшой инструмент для себя и своих друзей. Таким образом, бэкэнд был очень простым, он мог обрабатывать только десятки уникальных RSS-каналов, макс.

Несколько недель спустя, Skimr был запущен и все наши друзья использовали его. Ежедневно. Много раз в день. Это было невероятно. Это побудило меня опубликовать его на нескольких сайтах и ​​посмотреть, что другие люди скажут. И вот тогда это стало усложняться …

снимок экрана скимр

Мы действительно не знали журналистов или блогеров за пределами Чешской Республики, которых мы могли бы попросить написать рецензию. Итак, я пошел в Quora и нашел там несколько постов, в которых были перечислены сайты, где люди могли бы представить свои проекты. После представления Skimr примерно на 20 веб-сайтах я решил, что не собираюсь продолжать в том же духе, поскольку это никак не повлияло.

В моем списке остался один сайт — Web.Appstorm.net. Итак, я подтолкнул себя и представил там Скимра. Пять минут спустя я получил электронное письмо от их редактора Мэтью Гуая, в котором говорилось, что он просто ищет что-то интересное для предстоящих выходных, и из ниоткуда Скимр приземлился в своем почтовом ящике. Ему понравился сервис, поэтому он сразу написал отзыв .

А затем в понедельник стали появляться новые отзывы.

Я был очень счастлив. Давд тоже. Только Иосф был в ярости. Его бэкэнд был абсолютно не создан для большей пользовательской базы. К счастью, мы использовали Skimr на AWS, поэтому всегда можно было арендовать больше экземпляров. Кроме того, мы узнали, что между зарегистрированным пользователем твит-статьи-посетителем существует разрушительный коэффициент конверсии.

Допустим, блоггер пишет статью и продвигает ее своим 10 000 подписчиков в Twitter. 10% из них перейдут по ссылке и прочитают статью. Это 1000 человек. 10% из них перейдут по ссылке в статье и фактически посетят ваш сайт. Это 100 человек. И тогда 10% из них регистрируются, это 10 человек.

Итак, несколько недель спустя у нас была небольшая база людей, которым действительно понравился сервис, они отправляли нам электронные письма о функциях, которые они хотели, чтобы мы добавили, и рассказывали своим друзьям и друзьям о Skimr. Они добавляли несколько уникальных каналов в час, так что ничего страшного.

Но затем Google объявил, что собирается закрыть свой Reader. Внезапно люди во всем мире начали искать альтернативы. Вместо нескольких уникальных RSS-каналов, добавляемых в Skimr каждый час, каждую минуту добавлялось 100 уникальных каналов. А потом 1000 кормов каждую минуту. Мы продолжали обновлять наши экземпляры AWS, запускать все больше и больше загружаемых роботов, арендовать больше хранилища и т. Д.

Это было увлекательно. Но мы знали, что это всего лишь вопрос времени, когда наша крошечная система сломается под такой большой нагрузкой.

Более того, журналисты стали очень отзывчивыми. Я начал получать от них ответ. Даже Уолт Моссберг ответил на мое письмо ему. Исходя из маленькой страны, это было удивительно.

К счастью, в выходные люди немного успокоились. Мы немедленно связались с моим давним другом Радмом, который является отличным программистом бэкэнда, чтобы помочь нам. Следующие параграфы исходят от него:

Текущая версия основана на технологии LAMP + интерфейс на основе JavaScript. Это решение прекрасно работает как подтверждение концепции и способно в определенной степени обрабатывать трафик.

После того, как Google объявил об окончании своего Reader, трафик значительно вырос, и мы справились с этой ситуацией, добавив новые серверы AWS. У этого решения был один большой недостаток — оно было довольно дорогим, и серверная часть PHP не очень эффективно использовала серверы. Чтобы решить эту проблему в качестве первого шага, мы решили перенести сайт с AWS на наши собственные выделенные серверы (базирующиеся в Праге). Это сэкономило нам примерно 2/3 эксплуатационных расходов.

В качестве следующего шага мы работали над переписыванием сайта на более эффективную технологию — на ту же технологию, которую мы успешно использовали уже несколько лет на www.agentka.cz (популярный местный сайт вакансий). Обычно одним из узких мест на сайтах с высокой нагрузкой является БД, которая находится под высокой нагрузкой. Это парадокс, поскольку большинство сайтов на самом деле не используют продвинутые (иногда даже базовые) функции базы данных SQL так, как они были спроектированы — загруженные базы данных обычно денормализованы и служат только в качестве постоянного хранилища. Ситуация еще хуже, когда требуется выполнить полнотекстовый поиск по всем сохраненным данным.

В прошлом это наблюдение заставляло нас удалять базу данных SQL и использовать специальный индексатор, который хранит документы с очень свободной структурой и обеспечивает очень быстрые функции полнотекстового поиска и, конечно, обеспечивает поддержку атомарных операций. Этот индексатор является сердцем сайта и используется для хранения всех данных, он также позволяет нам масштабировать сайт так, как нам нужно. После того, как мы переместим текущую реализацию Skimr с LAMP на описанную, мы сможем предоставить нашим пользователям множество полезных функций — например, полнотекстовый поиск в каналах. Эта работа продолжается, и мы ожидаем, что новая версия появится через несколько недель.

Запуск веб-проекта всегда приносит эту дилемму — быстро запускайте и рискуйте взломом системы, если он станет популярным; или сначала собери его правильно и будь готов. Если бы мы выбрали второй подход, мы бы полностью упустили окно возможностей, которое появилось, когда Google объявил о закрытии Reader.

Давайте перейдем от бэкэнда к рассмотрению того, как работает внешний интерфейс. Он состоит из двух основных частей:

  1. Статические страницы, созданные на сервере через PHP, например, http://skimr.co/about
  2. Динамические страницы, созданные на клиенте в javascript, например, http://skimr.co/techcrunch

Интересна вторая часть — динамические страницы. Ядро приложения представляет собой простую сборку JavaScript со статическими объектными литералами (отдельные модули для домашней страницы, статьи, средства обновления и т. Д.). Мы не используем большую библиотеку JavaScript, такую ​​как jQuery. Мы хотим иметь полный контроль с акцентом на скорость и простоту.

Рендеринг HTML выполняется строго Dust.js с предварительно скомпилированными шаблонами на сервере. JavaScripts не содержит никакого HTML-кода или каких-либо прямых манипуляций с DOM. Мы просто предоставляем данные с сервера через JSON API, обрабатываем их и отправляем в функцию рендеринга, которая генерирует HTML для активной страницы.

Работа с URL-адресами выполняется HTML5-функцией pushState() Это очень важно и является главным ключом к действительно «отзывчивому» приложению, потому что вы можете мгновенно «переключать» страницы.

В целом, интерфейс довольно прост и полностью адаптивен — отлично работает на настольных компьютерах, планшетах и ​​смартфонах. Все сделано только в CSS, у нас нет никакой логики приложения для поддержки адаптивной функции приложения. Мы также используем LESS в таблицах стилей. Мы определенно можем порекомендовать LESS для любого вида веб-приложений.

Что касается дизайна, я хотел, чтобы Skimr был максимально простым. Я всегда думал, что традиционные читатели RSS были слишком сложными для обычных пользователей. Но мне понравилась концепция загрузки контента через RSS и отображения его в единой форме. Тем не менее, я подумал, что для нас было бы справедливо показать только небольшую часть исходного контента, а не всю статью. Если людям это нравится, они могут щелкнуть и прочитать его на веб-сайте издателя.

Самая большая проблема традиционных веб-сайтов — это количество элементов, которые люди пытаются добавить на них. Все меню, опции, контекстный контент и т. Д. Я нахожу их довольно отвлекающими. Смысл любого веб-сайта должен заключаться в том, чтобы решить конкретную потребность, а затем отпустить.

Когда дело доходит до новостных сайтов, они должны сообщать своим пользователям, что нового, и это все. Поэтому я убедился, что существует четкая цель относительно того, почему существует Скимр, — быстро увидеть, что нового. После нескольких итераций я понял, что существует более простой способ, чем традиционный RSS-ридер — просто канал. Последние записи вверху, старые ниже. Ни больше ни меньше. Сейчас это звучит так очевидно, но тогда это означало отказ от большинства функций, которыми обладал бы хороший читатель RSS.

Еще один интересный аспект построения Skimr — это нативные и веб-приложения. У меня было интервью с Дейвом Моргенштерном из ZDNet на эту тему.

В принципе, я думаю, очень скоро люди не смогут заметить разницу между нативными и веб-приложениями. Последние разработки в CSS, JS и HTML 5 позволяют дизайнерам приложений создавать практически идентичные пользовательские интерфейсы для традиционных нативных приложений.

Итак, я думал, что веб-приложения будет вполне достаточно. Но я был неправ.

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

Говоря о новых функциях, папки — интересная история. Давным-давно я подписывался на многие сайты в Google Reader. Со временем я сократил это число примерно до 10. По этому принципу мы разработали Skimr для пользователей с небольшим количеством каналов. Очень быстро выяснилось, что во всем мире есть много людей, которые до сих пор потребляют сотни или даже тысячи кормов. В этом случае папки необходимы для организации этих каналов. Итак, урок: мы разработали папки для наших пользователей .

У нас есть много идей относительно того, как сделать Skimr еще лучше для наших пользователей, например, собственные приложения, поиск (в RSS-каналах пользователя или даже во всех RSS-каналах в системе). Но очень важно всегда думать дважды, прежде чем реализовывать пользовательский запрос.

Поскольку мы не создаем традиционную программу для чтения RSS, некоторые из наших пользователей (при всем уважении) не совсем понимают это, поэтому они запрашивают функции, к которым они привыкли в Google Reader. Наш путь отличается от Google Reader, Feedly и т. Д., Поэтому мы не можем сделать всех счастливыми. Преимущество этого подхода, однако, заключается в том, что большинство наших пользователей на самом деле очень рады, что мы предлагаем что-то другое. Мы нашли нишу, где людям надоели сложные читатели и они довольны простотой, которую предлагает Skimr. Они даже отправляют нам электронные письма с просьбой оставить Skimr как есть и вообще не добавлять никаких новых функций. Удивительный!

В будущем мы можем ожидать некоторые всплески трафика в июне, когда Google определенно закроет Reader. Мы сделаем все возможное, чтобы подготовиться к ним должным образом, в основном, переписав бэкэнд в материал без базы данных.

Но, в целом, мы больше заинтересованы в органическом росте, нежели в одночасье. Это помогает создать связь с пользователями, выслушать их мнение и тщательно улучшить продукт. В конце концов, Skimr — это хобби-проект для нас. У всех нас есть постоянная работа.

Сказав это, есть очевидные бизнес-модели, которые мы могли бы попробовать, особенно Freemium (некоторые специальные функции за небольшую плату).

Пока что проект Skimr был полон сюрпризов, так кто знает, что будет дальше?

логотип скимр