Scorocode v1 был запущен летом 2016 года, за 3 месяца собрал около 20 000 регистраций, за 2,5 года был бесплатным инструментом для нашей публичной аудитории, использовался для развертывания приватных облаков, на которых за это время было разработано 8 систем разного уровня: от сервиса такси до системы управления производством. В первой версии были самописные сервисы для работы с NoSQL СУБД MongoDB, собственный парсер запросов к базе, сервисы, обеспечивающие исполнение JavaScript кода на сервере, и всё это было единым целым в облаке. Основные недостатки платформы v1: В конце прошлого года наша команда, осмыслив все достижения и неудачи, приняла решение ввязаться в разработку новой версии, принципиально переработав архитектуру. Логика не изменилась. Есть учетная запись, в которой пользователь-владелец учетной записи может создавать приложения. А вот структура приложения изменилась. Оно теперь независимое, размещается на выделенных ресурсах (в публичном облаке — на выделенном виртуальном сервере). Оценивая проделанную работу, мы понимаем, что пошли длинным путём. Построили для начала базовую архитектуру, кирпичиками которой являются сервисы, живущие в docker-контейнерах, которые, в свою очередь, объединяются в зависимые группы, а живут они в подах, которыми управляет Kubernetes. В общем, все по классике жанра. Из готовых сервисов используются: Следующий шаг — написание и сборка собственных сервисов. Сервис авторизации пользователей приложения по методу HTTP Authorization (type Bearer). Сервис для упаковки собственных сервисов (простите за тавтологию). Сегодня представлен в виде node сервера, в который можно разворачивать либо свое полное приложение с исходниками, либо уже готовую сборку node (подробнее об этом в описании scorocode-cli). Развиваем сервис в сторону возможности упаковки как уже готовых сервисов из DTR, так и самописных сервисов. Первые эксперименты делаем, разумеется, на сервисах, написанных на golang. Сервис, который обеспечивает работу по RESTful API со всеми таблицами БД PostgreSQL. 
 То есть, как только вы создали таблицу в базе, все операции CRUD становятся доступны по API. При подключении клиентов по протоколу WebSocket идентифицирует клиентов, после чего из серверного API можно отправлять именованные или broadcast сообщения. Дальше будем развивать сервис в сторону буферизации и гарантированной доставки сообщений. Работа со папками и файлами хранилища приложения. Отправка PUSH уведомлений. Сертификаты Android/iOS привязываются в личном кабинете. 2 года работы пользователей с первой версией научили нас, что какие бы красивые инструменты не были представлены на портале в личном кабинете пользователя, после периода «баловства» разработчик хочет вернуться в привычную среду — на свой локальный компьютер. Поэтому без консольной утилиты нам было не обойтись. На сегодня scorocode-cli (бинарник sc-cli) предоставляет разработчику следующие функции: Подключение к приложению в облаке, авторизация, сохранение конфигурации в папке .cli. Получение репозитория и развертывание базового приложения с последующей сборкой и сохранением в облако. Базовое приложение пока одно, как дойдут руки — напишем еще несколько, разного типа. Синхронизация локальных файлов проекта с облаком. Сохранение локальных файлов проекта в облако. Регистрация базы данных. Получение логов из сервиса. Проброс локальных портов в облако для всех сервисов. Например, после запуска моста можно подключаться любым клиентом к облачному PostgreSQL как к локальному. Локальный запуск приложения. Используется для локальной отладки. Проблем в дороге было много. И до сих пор их немало. В основном они возникают на стыке open source продуктов. Иногда элементарные действия выливались в недельные копания и, как результат, в pull request в репозиторий продукта. Сложно все впихнуть в одну статью. Надеюсь, напишу еще про частные проблемы и решения. В первую очередь мы будем писать сервисы. Много сервисов. Но писать мы их будем не абстрактно, а по запросу наших клиентов. Так же мы будем развивать шаблоны приложений, чтобы для подключения новых функций пользователи писали поменьше кода. Мы сменили фокус с частных пользователей на B2B сегмент рынка. И сменили базу — теперь мы в Яндекс.Облаке. Про это подробнее будут статьи нашего продакта Korbut. Именно из-за этого в новой версии публичного облака появился пробный период — 1 месяц, после которого мы бы хотели понять, потерял пользователь интерес к нам, или готов платить за сервис (стоимость базовой конфигурации приложения — 990 руб/мес). Теперь у нас абсолютно прозрачная тарификация. Пользователь видит выделенные под его приложение IaaS ресурсы, на стоимость которых мы просто делаем наценку в процентах. Процент плавающий, зависит от потребляемых объемов. Это нам дало прозрачность тарификации и возможность после запуска marketplace Яндекс.Облака разворачивать пользователям приватные облака с тарификацией в личном кабинете Яндекс.Облака. И да, мы осторожничаем. Учитывая, что мы под каждое приложение даем выделенные ресурсы, пул приложений для пробного периода небольшой, около сотни. В первую очередь мы отправили приглашение нашим пользователям из старой версии, но заявки на подключение к пробному периоду пока продолжаем принимать на странице scorocode.ru Я очень благодарен нашей команде, которая не теряла духа даже в самых тупиковых ситуациях. Кстати, про команду: И, конечно, большое спасибо команде Яндекс.Облака, за оперативность, поддержку и участие в возникающих проблемах. Спасибо, что дочитали до конца. У меня всё. CTO