KUKU.io — как устроен облачный сервис для управления социальными сетями
Привет!
Сегодня мы решили рассказать про наших друзей из Беларуси — KUKU.io — сервисе для управления социальными сетями, поддерживающем как Facebook, Twitter, Linkedin, Pinterest, Tumblr, Instagram, так и Вконтакте, Одноклассники и Telegram. С помощью KUKU.io маркетологи, smm-специалисты, предприниматели, блоггеры и пользователи (которых уже более 25000), активно взаимодействующие с социальными сетями, могут создавать контент, планировать и публиковать его (уже создано более 4 миллионов постов) в желаемых профилях, группах и страницах в несколько кликов.
Под катом — про технику и технологию.
Выше было про несколько кликов. С расширением для Google Chrome это не просто красивая фраза, ведь если вы хотите поделиться, скажем, статьей, у вас это действительно займет ровно два клика:
После того, как пользователь создал аккаунт, он может не только публиковать контент, но и анализировать его эффективность в подробной аналитике соцсетей, показывающей не только метрики, но и зависимости между ними.
Про направление развития
В приложении мы сделали фокус не только на функциональных особенностях, но и на интуитивный UX/UI. Мы изначально хотели сделать все функциональные особенности приложения максимально интуитивными: начиная от подключения соцсетей и календаря публикаций и заканчивая группировкой часто используемых аккаунтов в каналы. Почему? Сейчас пользователи не просто получают готовое решение и начинают работать с ним — они выбирают и сравнивают. И чем быстрее пользователь разобрался, как сделать первый шаг, тем больше будет глубина просмотра.
Коротко работу сервиса можно описать так:
Пользователь создает аккаунт в kuku.io. Подключает несколько аккаунтов социальных сетей. Мы получаем от них токены, необходимые для взаимодействия с API социальных сетей. Токены сохраняются в базу.
После этого мы позволяем создавать посты в подключенных социальных сетях, планировать их на определенное время, добавлять изображения, ссылки и т.п. Раз в 10 секунд проверяем, какие из запланированных постов готовы к публикации. Они становятся в redis-очередь для каждой из социальнх сетей. Примерно то же самое происходит с очередями сбора аналитики.
На самом деле все несколько сложнее и разбито на сервисы и подсистемы, у каждой из которых свой набор задач.
Про миграцию
Мы частично мигрировали с Digital Ocean, чтобы сократить расходы на содержание серверов на ранней стадии проекта. На данный момент мы используем BizSpark для стартапов на 3 года (5 подписок, каждая на $150 в мес.). Пока мы используем бесплатную подписку по программе BizSpark на 3 года. Основная проблема возникнет, если мы через 3 года не сможем оплачивать то, что построили в Azure. Думаю, такой проблемы не будет. Во всяком случае пока финансовые показатели роста kuku.io держатся на ожидаемом уровне.
Серверы мы с DO перевезли достаточно быстро. Панель управления очень функциональная и удобная. Были проблемы с инициализацией подписок, которые быстро решились общением с саппортом.
После нескольких недель появились вопросы по объединению 5 подписок в одну «общую» подписку. Оказалось, что из коробки так делать нельзя. Поэтому мы по максимуму использовали ресурс каждой из подписок и объединили все сервера из разных подписок при помощи openVPN. За кружкой кофе с ребятами из Microsoft мы узнали, что это вовсе не грязный хак, как мы думали вначале, и имеет право на жизнь.
Еще одним интересным кофейным откровением было то, что в Ажуре можно и не использовать продукты Microsoft — хотите, используйте, не хотите — поднимаете готовую виртуальную машину с Ubuntu и наслаждаетесь всеми благами Open Source. Фактически мы сейчас используем Azure в качестве IaaS. У Microsoft есть очень крутые штуки для CI, node-приложений, очередей, NoSQL, но пока только присматриваемся.
Под капотом у нас node.js сервер с фреймворком ifNode. На клиенте используется marionette.js и множество других open source-библиотек.
Мы используем 3 базы данных:
- MySQL — для хранения пользователей, аккаунтов, групп, профилей, постов и тп. Использование обосновано большим количеством связей между сущностями в приложении.
- MongoDB — для хранения «сырых» данных, собираемых из социальных сетей. Использование обосновано слабой структурированностью этих данных, а так-же необходимостью их быстрой записи/чтения в больших количествах.
- Redis — для хранения сессий, обеспечения очередей публикации и очередей сбора аналитики. Использование обосновано простотой использования и быстродействием работы Redis с очередями.
Основная база данных (MySQL) пока осталась на Digital Ocean. Это связано со скоростью записи/чтения в машинах Azure, которые мы можем поднять за $150 (1 подписка BizSpark).
На сервере приложение разбито на 4 основных сервиса.
1) API клиентской части
2) Публикация и сбор аналитики, рассылка имейлов
3) Сокращатель ссылок
4) Система работы с платежами
Из наших внутренних фич — у нас есть собственное нагрузочное тестирование. В нашем случае оно немного отличается от классического тестирования загрузки страниц. Основная задача kuku.io — делать посты в соц. сети и собирать множество аналитики из соц. сетей. На это уходят основные ресурсы серверов. Трюк заключается в том, что мы не можем делая нагрузочное тестирование массово постить, например в facebook или vk.com. Нас за это просто забанят.
Для таких целей у нас есть подсистема, которая эмулирует нагрузки при постинге и сборе аналитике из соц. сетей.
Про команду
Делают проект сейчас таким, какой он есть, 12 классных специалистов в своих областях. Дима Дудин — CTO и движущий центр. Даник Цыркунов, Лёша Саскевич, Серёжа Кучейко и Артём Николаев отвечают за бэкенд, а Юра Мельников — за фронтенд. Наш невероятный UX/UI-дизайнер Женя Арцименя создал ключевую особенность KUKU.io — интуитивный интерфейс. Павел Кастеневич как менеджер проекта следит за тем, чтобы релизы были своевременны, а Юля Кердоль отвечает на все вопросы пользователей. С помощью Карины Дубовик, SMM менеджера высокого уровня, мы валидируем наши идеи и развиваем социальные сети. Также в QA нам невероятно помогает Маша Кислова.
У нас достаточно большая команда, и это позволяет нам реализовавать идеи и рекомендации наших пользователей достаточно быстро. К примеру, сейчас мы работаем над контент-планом и Team-версией для команд. Разработку этих массивных фич мы начали в начале апреля и планируем выпустить live версии уже в конце мая.
Про будущее
На сегодняшний день в пики нагрузки мы без труда публикуем в социальные сети около 6 постов в секунду и анализируем активность около 4 аккунтов в секунду. У нас более 3.5 млн публикаций, 20 тысяч пользователей и около 600 активных пользователей каждый день.
И это только начало, аудитория и количество действий, совершаемых пользователями растет намного быстрее, чем мы предполагали.
Кстати, наши небольшие достижения доказывают, что мы движемся в верном направлении. KUKU.io дважды попадал на Product Hunt, победил в конкурсе стартапов Bel.biz Battle и IE Venture Day, а также занимал высокие места и участвовал в ряде крупных международных форумов. В сентябре мы едем представлять проект на Pirate Summit, и тоже надеемся, что проект высоко оценят.
Спасибо!