Обзор новорождённой платформы Scorocode

16da6c61f9b14978a99297778d30a269.jpg

BaaS-платформы (Backend as a Service) сделали разработку и сопровождение backend’а для мобильных и веб-приложений достаточно простыми и предсказуемыми процессами. Одним из флагманов движения BaaS стала компания Parse, но в 2016 году она заявила о прекращении обслуживания клиентов с 2017 года.

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

Расцвет BaaS


Разработка серверной части — самый трудный и непредсказуемый этап создания приложения. Зачастую, при планировании разработки проекта, недооценивается необходимый объём ресурсов и время создания backend’а.

Одна из возможных причин — трата времени на выбор инструментария, базы данных, платформы, операционной системы и т.д. Поэтому реализация даже относительно простых проектов может сильно затянуться, что приведёт к увеличению расходов.

Другая причина заключается в ограниченности доступных команде ресурсов. Чаще всего разрабатывать backend приходится с помощью тех инструментов и технологий, которыми владеют члены команды. Процесс получается долгим, а само приложение — сложным и дорогим в сопровождении.

Долгое время ИТ-индустрия искала способы упрощения разработки backend’а. Многие компании создавали инструменты, облегчающие работу над частными аспектами разработки, но это только затрудняло процесс: разработчикам приходилось разбираться не только в конкретной СУБД или платформе, но и в дополнительных инструментах.

Всё изменилось в 2011 году, когда компания Parse предложила новый подход к созданию backend’а на основе облачного сервиса. Он позволял решить две основные задачи:

  • Хранение в облаке и свободное манипулирование структурированными данными;
  • Возможность писать серверную бизнес-логику на JavaScript — стабильно популярном языке программирования на протяжении нескольких лет.


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

Идея имела колоссальный успех. В середине 2012 года сервисом пользовалось 20 000 разработчиков, а ежемесячный прирост пользователей составлял 40%. Теперь этап разработки backend’а занимал дни, а не месяцы, и сэкономленные ресурсы можно было направить на разработку и совершенствование frontend’а.

Использование BaaS позволило точнее оценивать сроки разработки и необходимые ресурсы. Сам процесс создания backend’а стал более формализованным, позволяя для разных платформ использовать единую серверную часть, упростилось сопровождение проекта, расходы снизились и стали более прогнозируемы.

Scorocode: начало


Три года назад Facebook приобрёл Parse, и в конце 2015 года социальная сеть решила использовать мощности BaaS монопольно. Все остальные разработчики должны в течение 2016 года мигрировать на другие ресурсы.

Это событие совпало по времени с началом разработки нашей собственной BaaS-платформы. Изначально мы хотели создать сервис, сразу предоставив пользователям как базовую функциональность аналогичных платформ, так и большое количество новых уникальных функций. В результате мы сделали небольшой пивот, и в качестве отправной точки для Scorocode приняли базовую функциональность Parse с возможностью миграции данных из него в наше облако.

Scorocode: техника вопроса


Scorocode — горизонтально масштабируемая система, построенная на принципах кластеризации. Кластеры разделяются по типам: API, СУБД, файлы, статистика. Каждый кластер API, работающий с конечными приложениями, выдерживает нагрузку около 25 тысяч запросов в секунду. С ростом нагрузки количество кластеров наращивается.

1109e8f3f3d3439e90a21448f590793b.png

Немного о платформах и языках, используемых нами в разработке.

Основная СУБД в Scorocode — MongoDB, в качестве in-memory database используется Redis, а сервер очередей работает под управлением RabbitMQ. Высокопроизводительный API написан «с нуля» на Go. Язык был выбран нами после серии экспериментов с Node.js и С++. Google в последнее время очень активно развивает Go, писать на нём комфортно, код получается компактным, а производительность на уровне С++. Множественные микросервисы платформы тоже разработаны на Go.

Scorocode позволяет исполнять два варианта серверного кода:

  • JS-скрипты с бизнес-логикой. Они хранятся и выполняются на наших серверах. Причём выполняются асинхронно — по расписанию или с запуском вручную с клиентов, посредством вызовов через API. Выполнением серверных скриптов занимается движок Google V8.
  • Триггеры на JS, то есть обработчики операций с данными. Они выполняются высокоскоростным движком, написанным на Go. В данном случае мы отказались от V8, потому что он достаточно долго стартует, а у каждого обработчика есть всего лишь 500 миллисекунд для выполнения кода.


Чем мы отличаемся от конкурентов?

  • Scorocode состоит только из самописных и open source-компонентов. Исключена ситуация, когда в какой-то из компонентов сторонними разработчиками вносятся изменения, с которыми нам придётся мириться. Нам известно устройство и алгоритмы работы каждого элемента системы, поэтому исправление ошибок и реализация новых функций могут выполняться в кратчайшие сроки.
  • Корпоративные клиенты могут хранить чувствительные данные в собственном облаке. В этом случае на Scorocode обрабатывается только бизнес-логика, а все запросы к данным перенаправляются на клиентское облако.
  • Вся документация на русском языке. Признаемся честно — не всем хватает знания технического английского, чтобы прочитать документацию без затруднений.
  • Все серверы и данные находятся на территории РФ. Это позволяет нашим клиентам соблюдать требования законодательства.


Финансовый вопрос


На данный момент у нас действует три тарифных плана:

  • Бесплатный «Free». Если вы начинающий разработчик, то возможностей тарифного плана может хватить для полноценной работы простого приложения.
  • Базовый «Indie». По умолчанию предоставляется в 1,5–2 раза больше возможностей, чем на бесплатном тарифном плане. Этого уже достаточно для небольших студий и команд разработчиков. Можно расширять возможности тарифного плана, приобретая в Marketplace дополнительные опции.
  • Корпоративный «Enterprise». Индивидуальные условия для корпоративных клиентов, отсутствие ограничений, выделенные кластеры, космическая техническая поддержка, и т.д.


С платформой Scorocode можно дополнительно сократить затраты на обслуживание приложений:

  • Всем новым разработчикам мы зачисляем при регистрации на счёт платформы по 3000 рублей. Этого достаточно для оплаты одного месяца тарифного плана Indie.
  • Всем новым студиям разработки и digital-агентствам после подтверждения мы зачисляем на счёт платформы 10 000 рублей. Их можно потратить по своему усмотрению — либо взять Indie на три месяца, либо докупить в Marketplace дополнительные опции.


Развитие


У нас оптимистичные планы по развитию Scorocode на четыре года вперёд. Инвестиции и поддержку нам оказывает группа компаний PROF-IT GROUP, которая в 2015 году вошла в рейтинг самых быстрорастущих IT-компаний по версии Cnews.

Ближайшие планы развития:

  • Интеграция с партнёрскими облачными сервисами для расширения методов обработки данных, хранящихся в Scorocode;
  • Фабрика интеллектуальных чат-ботов;
  • Поддержка полного цикла разработки — от backend до frontend.


Наш проект недавно стартовал и будет совершенствоваться под влиянием IT-сообщества. Мы готовы прислушиваться к пожеланиям разработчиков, расширять и пересматривать набор предоставляемых возможностей, находить разумный баланс в ценовой политике. Мы готовы к диалогу с пользователями и к конструктивной критике.

Приглашаем поделиться в комментариях своими пожеланиями и впечатлениями от использования Scorocode.

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

© Habrahabr.ru