BaaS — это веб-приложение, которое работает в облаке и предоставляет все необходимое для бизнес/мобильных приложений и сайтов (front-end). BaaS как минимум позволяет:
- Управлять пользователями и ролями
- Моделировать предметную область
- Получать доступ к данным через REST
- Управлять самими данными (база данных)
Вот здесь уважаемый yurash собрал основные на 2012 год BaaS-системы. Сейчас их значительно больше, но в плане вопросов, которые задают люди о BaaS-платформах, статья актуальна. Кстати, если интересует текущий рынок BaaS (и BAP — business application platform), то могу поделиться в следующей статье.
Что берем для создания BaaS
- Orienteer — конструктор бизнес-приложений (business application platform) с открытым исходным кодом. В своей основе Orienteer использует OrientDB — NoSQL мульти-парадигмная база данных с крутыми возможностями прямо из коробки.
- Docker Cloud — свободная платформа для развертывания в облаке контейнеров с приложениями Docker. На Хабре много статей про Docker.
BaaS на основе Docker-Orienteer позволяет быстро создавать приложения и быстро вносить изменения в уже имеющиеся приложения. При этом у системы низкий порог вхождения: простейшее приложение может создать человек, не знакомый с базами данных и программированием.
Связка BaaS-Docker может быть полезна и сервис-провайдерам, малым дизайн студиям и менеджерам in-house дата-систем.
Что получим в итоге
- Конструктор модели данных
- Широкий список типов данных: от примитивных (INTEGER, STRING и т.п.) до комплексных (LINK, EMBEDDED, LINKMAP, EMBEDDEDMAP), SPATIAL
- Экранные формы и виджеты для создания объектов спроектированной модели
- Управление пользователями и ролями
- Серверные скрипты на JavaScript/SQL
- REST-интерфейс с динамическим добавлением/изменением/удалением своих функций
- Проектирование и исполнение бизнес-процессов BPMN на основе Camunda
- Модульная архитектура для гибкого расширения через java, если очень понадобится
Развертываем
Вот он наш план на ближайшие полчаса
- Регистрируемся на Docker Cloud
- Регистрируемся на Digital Ocean (AWS, Azure и т.п.)
- Связываем Docker Cloud и Digital Ocean: создаем свою ноду
- Создаем и запускаем свой сервис Orienteer
- Настраиваем под себя
Регистрация на Docker Cloud
Docker Cloud в плане процедуры регистрации не отличается чем-то особенным от других сервисов в интернете.
- Заходим на Docker Cloud
- Придумываем Docker ID (aka username). Рекомендую использовать только нижний регистр со знаком “-”: если в будущем захотите использовать Docker весьма тесно и будете выпускать свои образы для контейнеров, будет проще адресовывать
- Задаем email и пароль
- Подтверждаем email, и всё: вы зарегистрированы!
Регистрация на Digital Ocean
- Идем на Digital Ocean. Рекомендую использовать эту реферальную ссылку, так как это даст вам дополнительные $10
- Регистрация еще проще чем на Docker Cloud: задаете email и пароль
- При регистрации рекомендую использовать promo-code от Docker Cloud, который даст вам еще $20. Чтобы узнать его, зайдите в Cloud Settings на Docker Cloud. Вы увидите что-то типа этого:
- Подтверждаете email и всё: вы зарегистрированы
Связываем Digital Ocean и Docker Cloud
- Идем на знакомую страницу Docker Cloud > Cloud Settings (см. картинку выше)
- В строке Digital Ocean нажимаем на перечеркнутую розетку
- Авторизуем Digital Ocean для Docker Cloud’а (то есть, вводим email и пароль докера)
- Готово
Создаем свой сервис Orienteer
- Прежде всего надо создать как минимум одну ноду, на которой будем запускать наш BaaS. Для этого на Docker Cloud:
- Идем в Node Clusters и нажимаем Create
- В пункте Providers выбираем Digital Ocean
- Указываем регион
- Выбираем тип ноды. Рекомендую выбирать с не менее чем 1 Гб памяти
- Жмем Create. Вы увидите что-то вроде картинки ниже. Docker Cloud сам закажет, установит, настроит и запустит ноду на Digital Ocean
- Осталось совсем чуть-чуть: запустить свою копию Orienteer из образа Docker. Orienteer — гомогенное приложение: все свое носит с собой. Поэтому создавать Docker Stack не понадобится. Нужен лишь сам сервис.
- Идем в Services и нажимаем Create
- В предложенном списке сверху выбираем Public Services
- В блоке слева вводим критерий поиска: orienteer/orienteer
- Выбираем именно orienteer/orienteer и попадаем на такую страницу:
- Из всего множества настроек единственное, что обязательно необходимо настроить — это порты, доступные снаружи. Например, так:
- Жмем Create & Deploy
- Придется подождать, пока образ Docker будут скачан на нашу ноду и запущен. Обычно это занимает не больше 3 минут. В итоге вы увидите что-то как на картинке ниже.
Жмем на ссылку и попадаем на наш собственный BaaS на основе Orienteer. Чтобы войти в систему используйте логин/пароль по умолчанию: admin/admin
Настраиваем под себя
Для настройки крайне рекомендую обратиться к официальной документации, а в частности к главе по созданию собственного бизнес приложения (в формате walkthrough).
Настройку под конкретное ваше приложение можно условно разделить на следующие шаги:
- Создать модель данных
- Сконфигурировать модель ролей и пользователей
- Раздать права по ролям/пользователям
- Добавить необходимые скрипты исполняемые на серверной стороне
- Настроить интерфейс: виджеты, отчеты, графики, перспективы и т.д.
Нет предела совершенству, поэтому доводить напильником можно до бесконечности: вводя свои виджеты, свои форматы экспорта, бизнес процессы, печатные отчеты, нотификации и т.д. Если есть вопросы по дальнейшей настройке под ваши нужды: всегда рады помочь!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (10)
OrienteerBAP
18.10.2016 03:50Список выслал в личные сообщения. После причесывания, все-таки, сделаем обзорную статью по BaaS/BAP на текущий момент.
Насчет Parse. К функционалу Parse стремимся, но есть вещи, которые у нас есть, но нет в Parse, например поддержка бизнес процессов BPMN (через Camunda), фреймворк для создания UI на основе Widgets/Dashboard, интеграция с BIRT и т.п.
IvanSCM
18.10.2016 18:13Замечательно, что вы предоставили Docker контейнер. Мне как разработчику AngularJS (сейчас изучаю Android разработку) будет очень полезно данное приложение.
OrienteerBAP
18.10.2016 21:34Если будут вопросы или проблемы со встроиванием AngularJS в Orienteer виджеты — пишите — поможем. Документация на этот счет достаточно скудная: хотелось бы более четко понять, что здесь больше нужно разработчикам.
dmitrybelsky
18.10.2016 18:13А что-то про multitenancy планируете? Давно что-то подобное искал
OrienteerBAP
18.10.2016 21:45Весьма интересный вопрос, так как последнее время в работе над архитектурой мы крутимся именно вокруг подхода к multitenancy. И вот наши соображения, если совсем коротко:
Тенант тенанту рознь: прежде всего они могут отличаться по уровню предметной области, которую они разделяют друг с другом. Если пересечений по предментной области нет и не планируется, то multitenancy проще всего организовать через разные Docker контейнеры. Если же тенанты должны использовать одну и туже предментную область, то здесь разграничение делается на уровне безопасности: один тенант не имеет возможности читать объекты другого. Но самый интересный случай, это когда тенанты имеют общую предметную область, но хотят изменять ее незначительно под себя. В этом случае возможно два решения: либо поставлять общую «предметку» через специализированный docker образ, либо позволить уметь работать на одном инстансе Orienteer с двумя и более базами данных OrientDB, причем имея «системные классы» в одной целой.
Как видите: пока однозначного решения этому нет. Любое ваше мнение здесь будет весьма ценно, чтобы понимать куда стоит двигаться дальше.
relgames
27.10.2016 16:08http://demo.orienteer.org/login
Unexpected RuntimeException
Last cause: User or password not valid for database: 'orienteer-demo-db'
WicketMessage: Exception in rendering component: [Component id = prompt]
yurash
Бегло оглядел сайт orienteer.org и документацию https://orienteer.gitbooks.io/orienteer/content И, бегло же, оглядел демку http://demo.orienteer.org. Я бы рекомендовал в первой статье как раз рассмотреть что же можно реально делать в этой «админке», а docker+DO уже можно и для второй статьи оставить.
Пока что впечатления из разряда «не то чтобы очень». С одной стороны, в основе лежит orientDB про которую пишут много хорошего (хотя я реально с ней не знаком совсем). С другой стороны — документация скудная, ничего не понятно (интересовали пункты 5,6,7 вашего «что получим в итоге»). Однако понятно, что лично мне Business Application Platform как-то не очень интересен. Особенно когда он идёт со своими виджетами. Или я чего не понимаю (что вполне вероятно), но свои виджеты — это тупиковый путь. Ребята с платформой Wakanda долго пилили свои виждеты, в результате год назад поняли что это фэйл и переориентировались на разработку своей платформы для лёгкого использования с Angular, но поезд ушёл.
OrienteerBAP
В следующий раз обязательно напишем подробнее, что можно сделать на платформе! От ярлыка «админка» хотелось бы в целом отделаться.
Спасибо, за Wakanda: странно как в своем исследовании мы нашли 35+ других библиотек и платформ, а вот Wakanda обошли стороной.
Насчет виджетов: здесь ограничений нет. Если Angular JS, то без проблем можно использовать: ровно и как любой другой JS фреймворк. Создать свой виджет можно и как через java код, так и через UI используя HTML/JS Widget, который работает на подобие jsFiddle.
yurash
Не могли бы вы поделиться списком? А я дополню.
можно пример или руководство, что-то я не нашёл?
вы про это — https://orienteer.gitbooks.io/orienteer/content/adding_html_and_javascript_widgets.html по-моему это не совсем то. (Там и информации-то почти нет)
Не скажу за всех разработчиков, но очевидно, что Parse пользовался большим спросом, и хотелось бы видеть «Parse на стероидах», ну или в вашем случае «Parse на orientDB», и я никак не вижу вашу платформу как замену parse (вы нигде не декларируете этого, просто этого ждут от современной BaaS)
OrienteerBAP
Список выслал в личные сообщения. После причесывания, все-таки, сделаем обзорную статью по BaaS/BAP на текущий момент.
Насчет Parse. К функционалу Parse стремимся, но есть вещи, которые у нас есть, но нет в Parse, например поддержка бизнес процессов BPMN (через Camunda), фреймворк для создания UI на основе Widgets/Dashboard, интеграция с BIRT и т.п.