Идею облачных сервисов применительно к бизнес-приложениям можно сформулировать так: перенос сервера приложений из локальной сети организации в Интернет. Пользователи продолжают использовать привычный софт, запуская нативный или веб-клиент на своем компьютере, но для работы теперь им достаточно иметь только подключение к Интернету, и не нужно входить в локальную сеть организации (физически или через VPN). А в случае варианта SaaS провайдер облачных услуг, на чьих вычислительных мощностях развернут сервер приложений, также берет на себя и всю работу по администрированию и обновлениям приложений, избавляя конечного пользователя от этих забот.
Картинка для привлечения внимания: автор статьи с помощью подручных средств (облака, флаг, самолет, парашют) иллюстрирует тезис «1С в облаках».
Программы 1С поддерживают работу по протоколу http/https, так что проблем с переносом сервера приложений 1С в Интернет нет. Простейший вариант 1С в «облаке» готов.
Но принципиально такой облачный вариант от обычного отличается, по большому счету, только локацией сервера приложений. Для обслуживания новой организации нужна как минимум новая информационная база 1С, а то и физическая или виртуальная машина с экземпляром приложения 1С. Соответственно, затраты на администрирование приложений возрастают линейно с ростом количества организаций.
Multitenancy и разделение данных
Для сокращения затрат на администрирование приложений разные организации должны работать с одним и тем же экземпляром приложения. И приложение должно быть написано так, чтобы допускать работу разных организаций в одном экземпляре приложения. При этом на уровне бизнес-логики работа разных организаций в одном экземпляре приложения должна быть идентична работе разных организаций в разных экземплярах приложения, своем для каждой организации.
Такой подход к проектированию архитектуры приложений называется английским термином multitenancy, для которого нет точного русского перевода; ближайший по смыслу – мультиарендность. Основную идею multitenancy можно описать примерно так. Обычное приложение – это коттедж, рассчитанный на проживание одной семьи, которая пользуется его инфраструктурой (стены, крыша, водоснабжение, отопление и т.п.). А multitenancy-приложение – это многоквартирный дом. В нем каждая семья пользуется таким же составом инфраструктуры, но сама инфраструктура реализована для всего дома целиком.
В простейшем понимании цель multitenancy – снизить расходы на поддержание приложения за счет «обобществления» расходов на инфраструктуру. Это такое же движение, как снижение стоимости приложения за счет применения тиражного решения (возможно, с настройкой и доработкой), а не написание «под заказ». Только в одном случае обобществляется разработка, а в другом – эксплуатация.
У multitenancy есть много аспектов. Один из них – разделение данных в приложении. Физически данные всех организаций хранятся в одной базе данных, но каждая организация видит только свои оперативные данные (проводки, списки сотрудников и т.п.), а часть данных (например, различная нормативно-справочная информация) может быть доступна всем организациям сразу. В приложениях 1С это реализуется через механизм разделения данных, предоставляемый платформой 1С:Предприятие.
Облачный сервис
Некоторое время назад перед командой разработчиков 1С встала задача – сделать облачный сервис для сдачи в аренду прикладных решений 1С по модели SaaS. Более того – сделать этот сервис тиражируемым решением, этаким «облаком из коробки», с помощью которого любой купивший решение сможет на своих мощностях развернуть инфраструктуру для сдачи приложений 1С (или своих написанных на 1С:Предприятии приложений) в аренду.
Что представляет собой идеальный, с точки зрения конечного пользователя, облачный сервис? Супермаркет, где на полках лежат программные продукты – бухгалтерия, отчетность, зарплата и кадры,…. Пользователь наполняет свою тележку и идет на кассу, где платит согласно тарифу (отличие от супермаркета в том, что пользователь не покупает программные продукты, а берет их в аренду на определенный срок). Пользователь определяет, кто из его сотрудников будет иметь доступ к бухгалтерии, кто – к зарплате и кадрам и т.д.
Что представляет собой идеальный облачный сервис для провайдера облачных услуг? Тот же супермаркет, но со стороны его владельца. Надо выставлять на полки существующие товары (программные продукты), добавлять новые, отслеживать своевременность оплаты. Также сервис должен уметь делать еще ряд вещей: горизонтально масштабироваться, предоставлять пользователям демо-доступ к предлагаемым к аренде приложениям (тест-драйв), централизованно администрировать пользователей.
Можно, конечно, реализовать всю необходимую функциональность непосредственно в прикладных решениях. Но очевидно, что часть общей функциональности будет дублироваться от решения к решению, и оптимальнее оформить общую функциональность в отдельном продукте, который представляет собой единую точку входа для пользователей прикладных решений в облаке, а также содержит инструменты администрирования.
Так была разработана технология 1cFresh (полное официальное название «1С:Технология публикации решений 1cFresh»). 1cFresh продается как отдельный программный продукт и используется партнерами и клиентами 1С в своих SaaS сервисах и частных облаках (private cloud). Сама фирма 1С использует продукт 1cFresh в своем облачном сервисе сдачи в аренду приложений (SaaS) 1cFresh.com и сервисе 1С:БухОбслуживание. Департамент Информационных Технологий Москвы использует продукт 1cFresh, развернутый на собственных вычислительных мощностях, для ведения бухгалтерского и зарплатного учета в учреждениях, финансируемых из бюджета города Москвы: https://balance.mos.ru/.
Было решено разделить функциональность сервиса между следующими крупноблочными компонентами (реализованными на технологиях 1С:Предприятие и Java):
- Сайт сервиса – единая точка входа для пользователей
- Менеджер сервиса – инструмент для администрирования и координирования работы всех компонентов сервиса
- Шлюз приложений – компонент, отвечающий за горизонтальное масштабирование сервиса
- Агент сервиса – сюда вынесены все утилитарные функции по работе с прикладными решениями – обновление версий прикладных решений, бэкапы и т.д.
- Форум сервиса – форум для общения пользователей сервиса друг с другом и с представителями провайдера
- Менеджер доступности – своеобразное табло «Сервис временно не работает», которое показывает пользователям информацию о недоступности сервиса или его части даже в том случае, если не работают центральные компоненты сервиса.
Упрощенная схема сервиса 1cFresh (представлены не все компоненты сервиса)
Подробнее о компонентах.
Сайт сервиса
Сайт, обеспечивающий интерфейс для взаимодействия пользователей с сервисом. Реализован на Java. Представляет собой, помимо прочего, «витрину супермаркета» — здесь пользователь может выбрать приложения для аренды, попробовать демо-версии этих приложений. Сайт также служит для регистрации в сервисе, заведения пользователей приложений, просмотра новостей и справочной информации по сервису и т.д. Посмотреть, как выглядит сайт, можно на нашем сервисе 1cFresh.com — мы используем стандартную версию сайта из поставки сервиса.
В составе сервиса может быть любое количество кластеров серверов 1С с установленными прикладными решениями. Все эти кластеры регистрируются в менеджере сервиса. Сервера 1С могут быть развернуты как на Windows, так и на Linux. Так, в нашем сервисе 1cFresh.com в качестве рабочих серверов 1С используются сервера с ОС Windows (в качестве СУБД для прикладных решений используется MS SQL) и с Linux CentOS (СУБД — PostgreSQL).
Через пользовательский интерфейс менеджера сервиса провайдеры администрируют облачный сервис – добавляют рабочие сервера 1С и приложения, обновляют версии приложений, управляют пользователями и т.д. Часть операций (например, обновление версий прикладных решений) выполняется отдельным компонентом – агентом сервиса. Взаимодействие с агентом сервиса идет через веб-сервисы.
Агент сервиса
Приложение, созданное на платформе 1С:Предприятие. Выполняет административные действия с информационными базами сервиса — обновляет версии конфигураций, создает резервные копии по расписанию, собирает статистику о работе сервиса, и т. д.
Шлюз приложений
Написан на Java. Отвечает за горизонтальное масштабирование сервиса. Перенаправляет пользователей сервиса на предназначенные им сервера с прикладными решениями.
Форум сервиса
Форум, где пользователи сервиса общаться друг с другом и с представителями провайдера сервиса по вопросам функционирования сервиса и размещенных в нем прикладных решений. Написан на Java.
Менеджер доступности
Периодически некоторые услуги сервиса или даже весь сервис целиком может быть недоступен для конечных пользователей. Например, прикладное решение переходит на новую версию (и пока переход не закончен, пользователей туда допускать не надо), или весь сервис целиком может быть кратковременно отключен для профилактических работ. Менеджер доступности – это приложение (созданное на платформе 1С:Предприятие), выводящее пользователям сайта и форума сообщение о недоступности ресурсов сервиса, даже в том случае, если все другие компоненты сервиса (включая центральный компонент – менеджер сервиса) не функционируют.
Информационные базы 1С
Собственно информационные базы, в которых происходит работа прикладных решений. Добавление в сервис новых инфобаз выполняется в составе единиц масштабирования. Единица масштабирования развертывается как единый модуль и содержит:
- кластер серверов «1С:Предприятия»
- сервер СУБД, на котором хранятся данные информационных баз.
- один или два (для обеспечения отказоустойчивости) веб-сервера, обрабатывающие HTTP-обращения к информационным базам единицы масштабирования
При проблемах в работе единицы масштабирования будут затронуты лишь те клиенты, кто непосредственно работал с инфобазами, расположенными на ней.
Еще о сервисе
- В сервисе поддерживается подобная OpenID технология, позволяющая организовать хранение информации о пользователях аутентификацию в единой базе. Благодаря этому внутри сервиса можно настроить Single Sign-On и пользователи смогут переключаться между прикладными решениями (бухгалтерией, зарплатой и т.д.), форумом и входить в сервис техподдержки ИТС (информационно-технологического сопровождения пользователей 1С:Предприятия) используя единый логин.
- Пользователи могут переносить данные локальных приложений 1С (например, бухгалтерии) в облачную версию приложения и обратно.
- Пользователь может создать автономное рабочее место, которое представляет собой локальную файловую информационную базу, расположенную на компьютере пользователя. Для работы с этой базой не требуется наличие Интернета и подключение к сервису. В то же время механизмы сервиса обеспечивают обмен данными между автономным рабочим местом и приложением, опубликованным в сервисе.
- Можно настроить автоматический обмен данными между опубликованными в сервисе прикладными решениями (например, между бухгалтерией и зарплатой), и таким образом минимизировать объем вводимой информации – вводим данные в одном приложении, а пользуемся ими во всех.
- Система резервного копирования приложений. Резервная копия приложения может быть создана в любой момент по требованию пользователя. Также автоматически по заданному расписанию создаются ежедневная, ежемесячная и ежегодная копии приложения.
- В технологии 1сFresh есть механизм поставляемых данных, с помощью которого менеджер сервиса хранит и предоставляет приложениям по запросу единую нормативно-справочную информацию, которая может централизованно обновляться.
- В сервисе могут одновременно работать несколько версий любого прикладного решения. Прикладные решения, размещенные в сервисе, могут использовать разные версии платформы 1С:Предприятие.
- Можно обновлять версию прикладного решения, с которым работает информационная база.
- Для облегчения поиска и анализа причин ошибок в технологии 1сFresh есть различные механизмы:
- Сбор сведений об ошибках при операциях с информационными базами.
- Запись этих сведений в информационную базу менеджера сервиса. Собранные сведения об ошибках информационных баз хранятся в информационной базе менеджера сервиса в журнале ошибок.
- Показ сведений об этих ошибках. Администратор сервиса может просмотреть как весь журнал ошибок, так и ошибки, относящиеся к конкретной информационной базе или к конкретному приложению.
- В технологии 1сFresh разработан механизм витрин, позволяющий разворачивать несколько облачных сервисов в рамках единой технической площадки сервиса. Витрина – это отдельный интернет-ресурс для предоставления сервиса пользователям. Витрина выглядит для пользователя как отдельный независимый сайт, на котором ему доступны приложения для бизнеса. Например, на различных сайтах, расположенных на отдельных доменах, но на одной технической площадке поставщика сервиса, могут быть развернуты витрины приложений для малого бизнеса, витрины, на которых собраны приложения для госсектора, витрины для медучреждений и т. п. Это позволяет продвигать и развивать ресурс не как часть общего сервиса, а как совершенно независимый сервис. Так, облачные сервисы 1cfresh.com (сдача в аренду приложений 1С «для всех») и gos.1cfresh.com («1С:Предприятие 8 через Интернет для государственных учреждений») – это две витрины одного и того же экземпляра сервиса.
- В сервисе есть Центр идей – механизм, позволяющий регистрировать и обрабатывать идеи, пожелания и предложения пользователей по работе сервиса. Центр идей реализован как функция прикладного решения, где пользователь может просматривать список идей и комментариев к ним, голосовать за идеи других пользователей или оставлять к ним комментарии, а также добавлять свои собственные идеи и пожелания. Чтобы использовать функциональность Центра идей, в прикладном решении должна быть включена соответствующая подсистема.
- Пользователи, подключившиеся к сервису, созданному по технологии 1сFresh, на коммерческих условиях, платят определенную абонентскую плату поставщику сервиса за его услуги. В сервисе существуют гибкие возможности настройки тарификации пользователей.
- Есть богатые возможности по просмотру статистики использования сервиса, позволяющие оценить интенсивность использования сервиса, получить среднестатистические ключевые показатели стабильной (нормальной) работы сервиса для последующей оценки отклонений от нормы, определить периоды максимальной и минимальной загрузки ресурсов сервиса для их учета при планировании регламентных операций по обслуживанию и т.п.
- Есть возможность сбора бизнес-статистики о событиях, возникающих при использовании прикладных решений. Такая статистика может быть полезна разработчикам прикладных решений для лучшего понимания, как их решение используется конечными пользователями, анализа узких мест и т.д.
Приложения для облачного сервиса
Прикладные решения, созданные на платформе 1С:Предприятие, должны соответствовать определенному набору требований, чтобы функционировать в облаке (в 1С используется термин «работа в режиме сервиса»). Требования к приложениям, работающим в режиме сервиса, подробно описаны в документации продукта 1cFresh.
Помимо использования механизма разделения данных, приложение должно реализовывать набор функций для поддержки удаленного администрирования, выгрузки/загрузки данных, создание резервных копий данных и т.д. Приложение должно одинаково функционировать в режиме тонкого клиента и веб-клиента, избегать использования ОС-зависимых механизмов (т.к. сервер в облаке может быть как под управлением Windows, так и Linux), избегать длительных серверных вызовов и т.п.
На сегодня типовые решения от 1С, совместимые с 1cFresh:
- 1С:ERP Управление предприятием 2
- 1С:Комплексная автоматизация 2.0
- 1С:Бухгалтерия 8
- 1С:Управление небольшой фирмой 8
- 1С:Предприниматель 2015
- 1С:Отчетность предпринимателя
- 1С:Зарплата и управление персоналом
- 1С-КАМИН: Зарплата»
- 1С:Бухгалтерия государственного учреждения 8
- 1С:Комплексная автоматизация 2.0
- 1С:Управление торговлей, редакция 11
- 1С:Зарплата и кадры государственного учреждения
- 1С:Бизнес-старт
Для некоторых из этих решений есть мобильные приложения-клиенты, созданные с помощью мобильной платформы 1С:Предприятия. Например, при работе с решением «Управление небольшой фирмой» некоторым пользователям для работы хватает функциональности мобильного клиента, и сервисная часть «Управления небольшой фирмой» используется ими, по большому счету, как централизованная база для их данных.
Список приложений, работающих в режиме сервиса, будет пополняться – мы будем переводить на работу в облаке и другие свои типовые решения. Есть также ряд решений на платформе 1С:Предприятие от партнеров, которые они сдают в аренду на своих экземплярах сервиса (например, ЖКХ 365).
Кастомизация приложений в облаке
В облаке тысячи пользователей из сотен организаций могут работать с одним и тем же экземпляром приложения. При этом их нужды в функциональности приложения могут отличаться. Соответственно, нам надо уметь кастомизировать приложения так, чтобы кастомная функциональность была доступна только определенным группам пользователей.
В технологии 1cFresh есть два механизма для кастомизации приложений:
- Внешние отчеты и внешние обработки. Это хорошо знакомый механизм кастомизации решений 1С, доработанный для переноса в облако.
- Использование расширений. Расширения – это механизм плагинов, который позволяет создавать дополнения прикладных решений, не меняя самих прикладных решений. В расширения пока можно добавлять не все прикладные объекты 1С, но мы постоянно работаем над функциональностью расширений.
Заключение
Мы считаем облачное направление развития очень перспективным, и планируем вкладывать в него все больше ресурсов.
Хочется отметить, что облачный сервис 1cFresh соответствует определению облачного сервиса от консалтинговой компании IDC:
В вольном переводе на русский:
- Общий, стандартный сервис – построенный для мультиарендности, внутри или вне предприятий
- Снабженный прикладными решениями – решения «под ключ», с необходимыми для начала работы ресурсами
- Самообслуживание – резервирование и управление доступом к прикладным решениям, обычно через Веб-портал
- Эластичное масштабирование ресурсов – динамическое, быстрое и точное
- Оплата по факту использования – время использования измеряется сервисом
- Авторизованный доступ по сети — доступ через Интернет
- Стандартные технологии для пользовательского интерфейса – браузер и/или насыщенное интернет-приложение (Rich Internet Application) и лежащие в их основе технологии
- Публичный интерфейс/API – веб-сервисы, другие общеупотребительные Интернет-API
По определению Gartner технологию 1cFresh можно отнести к Application Platform as a Service (aPaaS): «Application Platform as a Service (aPaaS) is a form of PaaS that provides a platform to support app development, deployment and execution in the cloud.» — « Application Platform as a Service (aPaaS) – это разновидность PaaS, которая предоставляет платформу для разработки, развертывания и исполнения приложений в облаке» (взято отсюда).
P.S. Недавно вышла книга «Облачные технологии «1С:Предприятия»», рассказывающая о технологии 1cFresh. Это первая (но, надеюсь, не последняя) книга, целиком посвященная 1cFresh. Доступна в бумажном и электронном виде, а также для чтения на мобильных устройствах.
Автор: 1С