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



    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 тысяч запросов в секунду. С ростом нагрузки количество кластеров наращивается.



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

    Основная СУБД в 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: примеры его использования, наш опыт разработки платформы и особенности разработки приложений в целом. Будем рады видеть вас в подписчиках.
    Scorocode
    30,55
    Готовый облачный backend для любых приложений
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 49

      +1
      Ну, Слава Богу! Наконец то русский BAAS!

      Спасибо Вам! А то я уже на конференции по «облакам» хотел кинуть камень в огород ИТ индустрии :).
      Давно надо сделать аналоги GC/Firebase, AWS. А то ФЗ не позволяет пользоваться, а альтернативы нет.

      Из пожеланий: хочется не просто MongoDB, а промежуточный слой в виде RealTime DB, аналог Google Firebase и AWS DynamoDB.
      Хочется микросервисов для обработки потоков данных, например, написал метод на JS, задеплоил к себе, на него система сформировала адрес, по которому этот метод вызывается. В AWS есть подобные сервисы, но пока в тестовом виде. Да и опять же ФЗ.

      Желаю успешного развития!
        0
        Спасибо большое!

        До уровня Google и Amazon будем дотягивать постепенно.

        По микросервисам — сейчас есть возможность писать скрипт на JS, который можно вызвать через API с передачей пула параметров. Также можно настроить вызов по расписанию.

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

          0
          Еще из пожеланий: хостинг и сохранение файлов. В Firebase недавно появились эти сервисы. Хотелось бы видеть и у Вас.
            0
            У нас реализовано сохранение файлов с привязкой к полю в коллекции, с последующей возможностью получения временных ссылок на них. Время действия ссылки регулируется пользователем.

            Хостинга пока нет, в планах.
            +8
            Блин, один человек на полном серьёзе пишет «Наконец то русский BAAS!», другие ему тоже с полностью серьёзным лицом отвечают, что «будут постепенно дотягиваться до уровня Google и Amazon». Вы это всё что, на самом деле?
              +1
              А что Вы видите в этом плохого? Битрикс написал в свое время хорошую статью о том, как они перевели свои приложения на AWS.
              Теперь вышел ФЗ, и, я так понял, Битрикс вернул всё на российские датацентры.
              А чем предлагаете пользоваться?
              Я, кстати, думал, что BAAS запустит Яндекс или мэйл.ру.
              Поэтому решение Scorocode стало приятной новостью.
                0
                Меня тоже резануло в ухо.

                Имхо, речь о том, что подтянуть хотя бы частично до уровня Amazon, AWS по API.
                Думаю речь не идет о масштабах их датацентров.
              • НЛО прилетело и опубликовало эту надпись здесь
                  0
                  По серверным скриптам:
                  В ближайших планах сделать поддержку нодовских библиотек. Есть технические вопросы и вопросы безопасности, решаем.

                  По user:
                  Насчет некорректности токена не совсем понятно. Токен генерируется при операции login всегда. Можете пояснить, что не так?
                  logout не работает из SDK или при прямом вызове API?

                  По сбросу пароля:
                  Операции сброса пароля в API нет, поэтому и нет описания. Мы не были уверены в востребованности этой операции, поэтому не стади делать.

                  По слою данных «users»:
                  При регистрации вы можете указывать любые кастомные поля для пользователя, если они есть в коллекции users. В ответ на регистрацию приходит документ, содержащий эти поля и сгенерированный _id.
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      За сброс паролей спасибо, исправим.

                      По токену проверим. Если не сложно, напишите, пожалуйста, в поддержку ситуацию, при которой токен остается пустым.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          Логику сброса пароля в Scorocode можно реализовать самостоятельно. Мы не стали сами придумывать реализацию, так как есть много разных вариантов.
                          • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              Любой успешный сервис строится по принципу «сделай минимум и запусти», а потом уже развивается. Все Ваши мысли, и предложения многих других разработчиков нами учитываются в планах развития. Для этого существует техническая поддержка проекта, где, как Вы уже проверили на себе, ни одно замечание или предложение не пропадает.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  0
                                  Записано. Спасибо!
                0
                Ну, из русских BaaS есть еще, как минимум, reindex.io. Так что не надо тут :) А вообще да — очень радует.
                +4
                Ничего не понял. Что такое «backend»? У меня в продакшене инсталляция openstack'а. У него есть dashboard, который предоставляет веб-интерфейс. Сам dashboard ходит в API. API ходит в API, API ходит в API, API ходит в API, API пересылает запросы через rabbitmq в сервис на компьютах, компьют ходит в API, API ходит в API, API дёргает ABI, на выходе имеем сервис для клиента.

                И где тут бэкэнд и куда тут ваше решение должно присоседиться?
                  –1
                  В нашем случае backend — это:
                  • организация доступа через API к структурированным данным;
                  • возможность хранения и выполнения server-side скриптов с доступом к данным;
                  • дополнительные методы API для авторизации пользователей, отправки разных типов сообщений, и т.п.

                  То есть фактически — это удобный конструктор структур данных и API с последующим хостингом.

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

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

                  Примером такой задачи может служить разработка мобильного приложения, которому необходимо хранить и обрабатывать данные на сервере.
                    +1
                    Я понимаю, что у openstack'а уже всё написано. Я спрашиваю, какую его часть вы предлаете (хотя бы гипотетически) переписать с использованием вашей штуки?

                    Другой пример:

                    есть панелька управления для заказа космических полётов.

                    Состоит из мобильного приложения, веб-сайта и бота в IRC. Дальше там API. API ходит в API, API ходит в API, API ходит в API, API пересылает запросы через rabbitmq в сервис на ракетах, который ходит в API, API ходит в API, API дёргает ABI, который дёргает ABI, на выходе имеем ракету в космосе.

                    Какую часть этой штуки вы предлагаете заменить?
                      0
                      Все данные мобильного и WEB приложений, данные бота IRC (например, мы в одном из проектов храним в облаке данные бота Telegram), и все взаимодействие API — API в виде JS-скриптов.
                        0
                        то есть если мне нужно в рамках API между ракетой и стартовой площадкой слать телеметрию посредством udp-датаграмм, это надо делать через JS-скрипты?
                          0
                          Вы правы.
                          Для решения задач интеграции серверной части систем типа «заказ полета ракеты» и внешними сервисами типа «стартовая площадка» в идеологии облачного сервиса Scorocode применяются серверные JS-скрипты.
                            0
                            А в качестве транспортного протокола используется tcp с аяксом?
                              0
                              HTTPS POST-запросы, формат application/json.
                                –1
                                Для телеметрии ракеты? А если потеряется ip-пакет и tcp устроит retransmit и следующая телеметрия застрянет на 40мс? А если из-за застрявшей телеметрии не пройдёт управляющая команда?
                  +1
                  Привет, практически коллегам:) У нас пользователи Orienteer (open source Business Application Platform) используют его в совокупности с Docker (+масштабирование через Docker Cloud) для backend приложений и сайтов.
                    0
                    Привет, коллеги ;) Интересно наблюдать, как развиваются и взаимно интегрируются молодые сервисы. А мы планируем интеграции с партнёрскими сервисами для расширения функциональности платформы, чтобы сложные приложения стали проще в реализации.
                      0
                      Кстати, интересно, а есть ли у вас Business Process Management? На той же Camunda например? И так же есть ли поддержка интеграционных фреймворков? Тот же Apache Camel или еще что? Orienteer в beta уже поддерживает.
                        0
                        Привет.
                        С кем планируете интеграции в первую очередь?
                          0
                          Здравствуйте.

                          В ближайшее время будет интегрирован движок ABBYY для распознавания текстов и штрих-кодов. Чуть позже — боты Telegram, боты будут хоститься у нас, можно будет писать обработчики с доступом к данным приложения.

                          В будущем планируем интегрироваться с сервисами, которые смогут монетизироваться через наш встроенный магазин: CMS, BPMS, обработка изображений и т.п. Для этого активно смотрим по сторонам, особое внимание уделяя стартапам.
                      0
                      Раз вы пишете
                      в качестве отправной точки для Scorocode приняли базовую функциональность Parse с возможностью миграции данных из него в наше облако
                      то хотелось бы знать почему для миграции надо выбрать вас, а не одну из многочисленных альтернатив на Parse Open Server.
                      Ещё лично мне не понятно почему ограничили триггеры таким малым временем работы 500мс (если с тем же parse сравнить)
                        0
                        Приветствуем, yurash! Мы читали ранее ваш поверхностный обзор BaaS-сервисов от 2012 года, вы там писали, что планируете сделать расширенный. Надеемся, что попадём туда, если вы будете делать UPD.

                        Теперь к вопросам.
                        то хотелось бы знать почему для миграции надо выбрать вас, а не одну из многочисленных альтернатив на Parse Open Server.

                        Почему выбирать нас? Мы душевнее :) Но если серьезно, то мы как минимум предлагаем альтернативу Parse, а выбор – это ведь хорошо, не так ли? Мы пока не можем похвастаться кил-фичами, но что имеем сейчас для комфортной миграции:
                        • Реализована функциональность Parse, позволяющая без особых усилий мигрироваться на нас – одна из ключевых задач на первый период market fit.
                        • До нас реально донести потребности и пожелания по развитию платформы.
                        • Есть документация на русском языке и реагирующая тех.поддержка.

                        Конечно, нам ещё предстоит развиваться, поэтому мы открыты к предложениям.

                        Ещё лично мне не понятно почему ограничили триггеры таким малым временем работы 500мс

                        Триггеры предназначены для работы со связанными данными (CRUD для зависимого документа в другой коллекции). Учитывая, что пользователь не любит ждать слишком долго ответа от сервера, то нет смысла делать их больше. Для всех более сложных операций, требующих значительного процессорного времени, есть CloudCode, который можно вызвать через API.
                          +2
                          > Почему выбирать нас? Мы душевнее :) Но если серьезно, то мы как минимум предлагаем альтернативу Parse, а выбор – это ведь хорошо, не так ли?

                          Выбор — это всегда хорошо. Но выбор вашей платформы подразумевает переписывание фронтендов, а выбор других известных альтернатив Parse — нет.

                          Кроме того, Parse Server находится в open source и его развивает сообщество. В любой момент пользователь может уйти с альтернативного облачного решения на stand-alone, развернув свою инфраструктуру, с минимальными усилиями и изменениями в коде.

                          Если же пользователь выбрал вас, от уйти от вас уже не получится — ни с минимальными усилиями, ни с максимальными. Ни с какими. Пользователь будет зависеть от вас точно так же, как в свое время он зависел от Parse. Причем «за спиной» Parse стоял Facebook, что внушало определенную уверенность, пользователь был еще «не пуганный». Последующие же события существенно подорвали веру в BaaS вообще как в концепцию, и сейчас уже меньше желающих наступить на те же грабли.

                          В частности, поэтому многие из альтернативных решений Parse-хостинга дают пользователям куда больше свободы — например, Back4app дает прямой доступ к Mongo.

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

                            Такой же как и итальянский хостинг, например.
                            )))
                              0
                              Видите ли, я мало знаю про Италию, так что вам виднее. ;)) Но в любом случае, хоститься там я не собирался.
                                0
                                ОК.
                                Испанский хостинг, австрийский, австралийский, шведский…

                                Да можно все страны мира называть как неподходящие для хостинга.
                                Выделяются только США, Ирландия (Google), Германия (Хетцнер), Франция (OVH) да Нидерланды.
                                  0
                                  Вы, может быть, уже раскроете мысль? Позиция «знаю, но не скажу, буду продолжать намеки», боюсь, не очень подходит для диалога.
                                    0
                                    Российский хостинг для проекта ориентированного на Россию — хороший выбор.
                                    Для мирового проекта — дело не в РФ. Ваш выбор — США, Германия, Франция. Ну и почти все.
                                      0
                                      Вы просто повторили мысль, но не раскрыли. Впрочем, как хотите.
                                        –1
                                        Простите, я не заинтересован разговаривать с непонятливыми людьми. Неполиткоректное слово на д или и не стоит здесь употреблять.
                                          0
                                          Не удивили — д'Артаньяны все такие. Вы не первый.
                        +1
                        А еще интересно насчет миграции с Parse. Вот мы мигрировали, допустим — что дальше? Я так понимаю, фронтенд нужно переписывать полностью с вашими SDK? Если да, то приятного мало. Если нет, то, следовательно, ваши SDK на уровне API совместимы с Parse SDK. Но это догадки, а где прямые и явные утверждения? Вы говорите потенциальным пользователям — ребята, вы собираетесь куда-то переходить с Parse — давайте к нам! А дальше — молчок. Ведь это неизбежные вопросы, которые возникнут у каждого Parse-юзера, который ищет (если еще не нашел) альтернативу.
                          0
                          Спасибо за вопрос. Мы говорим о миграции данных с Parse на Scorocode. Фронт необходимо будет переписывать. Да, это не так удобно, как хотелось бы. Чтобы на уровне API быть совместимыми с Parse SDK, нужно по сути копировать его у себя, а у этого решения есть определённые юридические риски.
                            +1
                            Спасибо за ответ. Вам определенно стОит более однозначно и понятно описать миграцию с Parse на сайте.
                              0
                              Там BSD лицензия — «бери и делай что хочешь, не забудь упомянуть меня».
                            +1
                            Прочёл и захотелось что-то подобное попробовать сделать. Завтра попробуем с коллегами продумать архитектуру :)
                              0
                              Конкуренция — это хорошо. Делайте! :)

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое