H Как самостоятельно обслуживать 2500 бухгалтерских баз

В этой статье Кнопка честно расскажет про подводные камни администрирования бухгалтерских инструментов и даст практические советы с полезными ссылками.



Как правильно выбрать основной инструмент для бухгалтера


Если ваша компания занимается бухгалтерским аутсорсингом, прежде всего надо определиться с программой, в которой будет работать бухгалтер. Предложения на рынке разнообразные, мы использовали следующие критерии:

  • Решение должно быть масштабируемым. В Кнопке есть ценность “Делать больше меньшими средствами”. Это значит, что рост серверной инфраструктуры не должен быть прямо пропорционален росту клиентской базы. Принимать нового системного администратора для новых 100 клиентов, экономически невыгодно.
  • Решение должно иметь интуитивно понятный интерфейс и пользоваться популярностью у бухгалтеров.
  • Нельзя забывать про интеграцию с различными решениями для бизнеса и приложениями Кнопки. Клиент может вести оперативный учёт в различных конфигурациях фирмы 1С (например “Управление торговлей”, “Розница”, “Управление небольшой фирмой”), использовать онлайн площадки для торговли, например “Мой склад”, или разнообразные решения для заведений общественного питания ( Iiko, StoreHouse и проч.), а также открыть свой сайт. В любом случае данные надо оперативно передать в бухгалтерскую систему автоматически, чтобы не делать двойную работу.
  • В любой момент должна быть возможность оперативно передать бухгалтерскую базу клиенту, так, чтобы новый бухгалтер мог в ней продолжить вести учёт.

Наш список выбора составили Контур.Эльба, 1С Бухгалтерия предприятия 3.0 и Xero. Приняли решение использовать 1С Бухгалтерию предприятия 3.0, потому что Эльба подходит только для маленьких компаний, Xero удобная и технологичная, но всё-таки английская, настроить бухгалтерский и налоговый учёт по российским стандартам невозможно.

Преимущество продуктов 1С заключается в том, что на данный момент это самый популярный программный бухгалтерский продукт в нашей стране. Трудно найти бухгалтера, который никогда не работал в этой программе. Поскольку Кнопка не специализируется на обслуживании клиентов какой-то конкретной отрасли, важно чтобы программа подходила для ИП и ООО с любой системой налогообложения, и 1С это позволяет.

Со временем мы отказались от использования файловых баз и развернули своё облако по технологии 1С Fresh, но не будем забегать вперёд.

Как уменьшить количество обслуживаемых баз


Первые клиенты пришли в Кнопку в 2013 году, для каждого создавали файловую базу БП 3.0. Когда количество баз приблизилось к сотне, наступил ад для системного администратора. Чтобы добавить нового пользователя во все базы или установить обновление, уходило несколько дней, иногда и ночей. Приходилось придумывать программные решения, изобретать обновляторы и обработки по добавлению пользователей. Всё это было слишком медленно и бесперспективно.

Альтернативой файловым базам было использование механизма разделения данных (Multitenancy) платформы 1С. Его суть заключается в том, что одна информационная база 1С с помощью разделителей дробится на независимые области. Включается режим разделения константой “Разделение включено”. По номеру разделителя пользователь подключается в отдельную область. В рамках одной такой информационной базы, данные могут быть неразделёнными, то есть общими для всех областей, например классификатор банков или единиц измерений, и разделёнными, уникальными, существующими в рамках одной области, например контрагенты и документы.

Администрировать одну базу вместо сотни гораздо проще. По такому принципу работает облачный сервис 1cfresh.com, и саму технологию публикаций решений 1С Fresh можно приобрести у партнёров фирмы 1С.

Поставка 1С Fresh включает в себя две специализированные конфигурации для управления информационными базами.

  • Менеджер сервиса. Это центр управления областями данных, через него производятся все стандартные админские работы. Можно загрузить данные в новую область (стандартным механизмом из файловой базы формируется dump из файлов в формате xml, который потом загружается в область), дать права списку пользователей, запланировать обновление, проконтролировать синхронизацию данных между приложениями. Есть возможность добавить внешние отчёты и обработки в конкретные области. Также из менеджера сервиса производится обновление так называемых “Поставляемых данных” (курсы валют, ФИАС, классификатор банков).
  • Агент сервиса. Служебная конфигурация, предназначенная для выполнения сценариев (как предопределенных, так и добавленных администратором без необходимости правки конфигурации).

Подробнее о составе поставки 1С Fresh мы писали в статье на Инфостарте.

Когда установили сервис приложений и опубликовали первые базы, скорость работы “облачной бухгалтерии” по сравнению с файловой была выше примерно в 10 раз. Впервые за долгое время квартальная отчётность прошла достаточно легко, так как 1С работала без зависаний и перезагрузок.

Как делать не надо, или учитесь на чужих ошибках


Спустя несколько месяцев, наш Fresh начал работать нестабильно. Причина: массовое подключение клиентов. У нас было опубликовано две бухгалтерских базы и две базы ЗУП 3.0, количество областей в каждой из которых перевалило за 300 штук. Положение усугублялось тем, что кластер Fresh не дробился на ноды, все базы крутились на одном сервере баз данных. Наше железо не справлялось с нагрузкой и, как следствие, менеджер сервиса потерял связь с областями. Как говорится, ни курсы валют загрузить, ни базы синхронизировать. Хорошо, что нас поддержали коллеги из 1С, вникли в нашу специфику и нашли ошибки в администрировании, помогли правильно построить логику использования облака.

Всем советуем, перед тем как разворачивать свой сервис, получить систематизированные знания на курсе “Эксплуатация крупных систем” в учебном центре фирмы 1С.

Количество областей в одной базе это компромисс, который обусловлен многими факторами, оно может быть очень разным, мы для себя выбрали 200. Сам кластер должен состоять из менеджера сервиса, агента сервиса и нод (серверы БД, серверы приложений, web-сервис), когда количество областей становится более двухсот, разворачивается следующая нода.

При настройке сервера PostgreSQL, обязательно надо ознакомиться с рекомендациями 1С (информация доступна на kb.1c.ru) и использовать например такой сервис pgtune.leopard.in.ua. И таки да, для PostgreSQL самое вкусное — это память!

Как у нас всё устроено


Сейчас архитектура нашего Fresh-облака включает в себя 7 нод, опубликованы 7 баз 1С БП 3.0, 2 базы 1С УНФ и три базы ЗУП 3.0. Сопровождают сервис пять системных администраторов и два программиста 1С. Такой команды более чем достаточно, таким составом возможно поддерживать базы 2000+ клиентов.

Конфигурации машин у нас разные, и периодически меняются, в ответ на изменяющиеся условия. Сервер приложений как правило имеет 4-6 процессоров (ядер) и 16Гб памяти, в качестве сервера СУБД используем PostgreSQL 9.4.2-1.1C, размещённые на Linux машинах. Ресурсы для этих машин выделяются в зависимости от размера баз, среднего количества соединений и пиковых нагрузок. Если на сервере приложения размещено несколько больших баз, ресурсы могут достигать 6-8 ядер и 30 Гб памяти.

С помощью мониторинга Zabbix, контролируем доступность информационных баз, нагрузку на ноды и серверы 1С. В офисе висит телевизор, и когда всё плохо мы это сразу видим:



Ежедневно в базах активно работают 95 бухгалтеров. Клиенты Кнопки, которые хотят самостоятельно заносить документы в 1С, получают доступ к своей базе через интернет. Есть возможность подключить к web-клиенту торговое оборудование (ККМ, сканер штрих кода). Для тонкого клиента дополнительно доступно подключение сканера документов. Очень удобно сканировать и прикреплять файлы к документам непосредственно из 1С.

Вся отчётность у нас отправляется из 1С, через удостоверяющий центр Калуга Астрал, используем ключи КриптоПро. Активно внедряем электронный документооборот Диадок, эта функциональность также доступна в модели сервиса.

Как обмениваться данными в «облаках»


Возможны несколько вариантов обмена данными:

  • между приложениями в сервисе;
  • с внешней базой 1С в модели сервиса;
  • с сайтом или другой программой для бизнеса.

Опубликованная в web-сервисе информационная база называется приложением. Для нового клиента создаётся область в БП 3.0, ЗУП 3.0 и при необходимости УНФ. В данный момент синхронизация данных между приложениями происходит раз в 10 минут. Синхронизации между приложениями в сервисе можно контролировать с помощью менеджера сервиса, но мы вывели данные на мониторинг. Системный администратор в режиме онлайн видит, в каких областях обмен данными стабильно проходит, в каких не проходит и надо исправить ошибки.

Многие клиенты Кнопки используют решения 1С для оптовой или розничной торговли (1С“Управление торговлей” 10.3 или 11.Х, 1С”Розница”), которые хранят на своих серверах и самостоятельно администрируют. В этом случае также возможно настроить обмен данными с бухгалтерией в нашем облаке. Такая синхронизация называется “Обмен данными в модели сервиса”. Настраивается автоматически по расписанию, но часто “ломается” после обновления из-за того, что клиент на своей стороне вовремя не обновляет конфигурацию. Контролируем на мониторинге, если обмен не проходил более двух недель, связываемся с клиентом.

Сейчас большую популярность получают интернет-магазины и различные интернет площадки для торговли. Для обмена данными с 1С используется протокол обмена CommercelML 2. На сайте 1С есть список платформ интернет-магазинов, с которыми возможно настроить автоматическую синхронизацию. Недавно появилась загрузка с сайта в БП 3.0, но более детальная настройка загрузки реализована в 1С УНФ.

Интеграция с внутренними сервисами


Для интеграции с кнопочными сервисами мы не изменяем существующие конфигурации, а используем технологию COM (внешнее соединение) и внешние обработки. Поскольку технология COM-соединения является устаревшей и доступна только на платформе Windows, в планах переделать интеграцию с помощью механизма OData. Подробно про способы интеграции рекомендуем посмотреть тут.

Разработчики сделали несколько десятков роботов, которые помогают заносить документы и контролировать ошибки, без изменения конфигурации. Подробнее можно прочитать в нашем блоге. Написаны внешние обработки, с помощью которых можно оперативно обрабатывать большие розничные базы, загружать данные из электронных кошельков, списывать материалы в производство и много других интересных вещей.

Заключение


Итого, мы прошли путь от использования файловых баз 1С, до полноценного облачного сервиса. 1С Fresh дал нам возможность оперативно администрировать порядка 2500 баз, управлять доступами сотрудников и клиентов, интегрироваться с внешними и внутренними сервисами. Возможно, технология 1С Fresh задумывалась разработчиками несколько для другой эксплуатации, чем в Кнопке, но, спустя три года, мы считаем, что это один из самых главных инструментов для нашей компании.
+20
~9700

комментарии (41)

0
imm ,  
Zabbix красивый, его надо было в КДПВ
0
ArcaN0id ,  
Решили все-таки корпоративную картинку :)
0
fkvf ,  

Только это не Zabbix, а Grafana с плагином Zabbix. Сам заббикс далеко не так красив.

0
ikormachev ,  
PostgreSQL используется по соображениям экономии? Делали вы сравнительные тестирования с microsoft sql? Также интересно было бы в двух словах о узнать резервном копировании и планах аварийного восстановления у вас (включая ситуации форс-мажора).
+5
ZverG ,  
Всё так, экономия не последняя из причин выбора этой СУБД, а ещё мы любим open source :)
Сравнительное тестирование мы проводили в ограниченном объёме и поняли, что производительность PostgreSQL при правильной настройке не хуже в наших условиях эксплуатации. Специалисты 1С солидарны с нами.

Резервное копирование начиналось с банального pg_dump раз в сутки, а сейчас оно реализуется через непрерывное архивирование WAL.
В случае форс-мажора мы можем откатиться на конкретный момент времени (point-in-time restore).

Более подробно о своем опыте использования PostgreSQL, практиках и ошибках мы планируем написать отдельную статью.
+1
ikormachev ,  
Более подробно о своем опыте использования PostgreSQL, практиках и ошибках мы планируем написать отдельную статью.

Да, было бы интересно об этом узнать. Спасибо!
+1
Sjam ,  
Поддерживаю. Очень интересно
0
VVizard ,  
А нет ли у вас проблем с эскалациями блокировок на уровне СУБД при записи документов с большим количеством движений?
Для решений с разделителем это серьезная проблема т.к. эскалация блокирует данные сразу всех клиентов и хорошо если она за 20 секунд снимется.
0
hamster_kv ,  
Эскалация блокировок это всё-таки вопрос к MS SQL. Как таковой проблемы с блокировками при использовании PostgreSQL мы не испытываем. Если мы столкнемся с этой проблемой, обязательно в неё погрузимся и расскажем.
+1
dimm_kan ,  

Уважаемые коллеги не осветили только один вопрос — что делать, если клиенту нужен какой-то особенный, нетиповой функционал, требующий доработки конфигурации?

+1
ArcaN0id ,  
Фреш прежде всего инструмент для работы бухгалтеров Кнопки, поэтому все конфигурации, загруженные в сервис, у нас типовые. Если у клиента 1С со специфической конфигурацией, тогда база остаётся вне фреша, с ней настраиваем синхронизацию данных. Мы присматриваемся к механизму расширений 1c, но пока не используем. Поддерживать нетиповые конфигурации в таком количестве — это отдельный бизнес.
0
Vladal ,  
Правильно ли я понимаю, что все конфигурации в облаке типовые и обновление ложится на плечи облака?
0
ArcaN0id ,  
Конфигурации типовые, обновление ложится на наши плечи, т.к. фреш развернут у нас на наших серверах (если я правильно вас понял). Обновление конфигураций настраивается через Сервис менеджер и стартует по расписанию
0
Vladal ,  
Спасибо!
0
bugigugi ,  
Большое спасибо за статью и советы!
0
Tahallus ,  
Какой дистрибутив используется на серверах?
ноды это в облачных решениях (azure,aws) или это обычные сервера?
0
ZverG ,  
Сервер приложений на windows server
Сервер СУБД — Debian 7 из-за зависимостей в дистрибутиве PostgreSQL от 1С.
Машины крутятся на наших мощностях.
0
Tahallus ,  
т.е. используются физические сервера без применения виртуалиации?
нод = два физических сервера
сервер приложений не на linux только из-за того что используете com-соединения?
0
ZverG ,   * (был изменён)
Машины виртуальные, на Hyper-V.
В среднем это от 4-6 ядер/10 Гб RAM на сервер приложений и от 4 ядер/20 Гб на СУБД… Внимательно следим за производительностью дисковой системы.
Сервер приложений на linux мы использовали где то полгода, коннектиться через COM на него можно без проблем, работает стабильно, но по совокупности факторов нам удобнее держать его на Windows.
0
Tahallus ,   * (был изменён)
Какой Web-сервис используете apache,iis? и если оба то какой более предпочтительней.
0
ZverG ,  
В качестве Web-сервера везде используем apache, очень хорошо работает. Планируем в ближайшем будущем переходить с 2.2 на более актуальный
0
Tahallus ,  
Спасибо, было интересно узнать.
0
DonAlPAtino ,  
Я правильно понимаю что клиенты у вас через web-интерефейс к 1С работают? Или нет?
И где у вас Крипто Про для отправки отчетности стоит? На сервере, на клиенте? Проблем с ним нет? У меня Win2012 RDC на котором тонкие клиенты 1С и КриптоПро недавно поставили взял манеру зависать раз в неделю. До установки КриптоПро работал месяцами. Вот теперь не знаю что с ним делать.
0
ArcaN0id ,  
Правильно. Через веб. Крипто Про у нас на терминальных серверах. К ним имеют доступы только наши бухгалтеры. У нас такие же проблемы были. Обновляйте КриптоПро до 4 версии, также попробуйте отключить ГОСТ SSL.
0
DonAlPAtino ,  
У меня там вроде только GOST-R 32.10-2001 и все (Crypto-PRO CSP смотреть). ГОСТ SSL нигде не прячеться?
+1
ArcaN0id ,  
На форуме КриптоПро обсуждалась эта тема . Если останутся вопросы, пишите, подскажем.
+1
ArcaN0id ,  
https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=8146
0
DonAlPAtino ,  
И какой средний объем инфобазы 1С?
0
hamster_kv ,  
Средний объем около 60 Гб
0
MikeRez ,  
Как вы решаете вопрос откатов данных по отдельно взятому клиенту, в рамках единой базы с 200 областями, у нас бывает, что бухгалтера накосячат и просят откатить данные на начало дня?
0
hamster_kv ,  
Во Fresh существуют методы создания архивных копий областей, которые потом можно развернуть как новое приложение. Также можно отдельно развернуть из бэкапа всю инфобазу, сделать выгрузку данных из области. В зависимости от ситуации тот или иной метод может быть предпочтительней.
0
DonAlPAtino ,  
А можно поподробнее? Умеет выгружаться по расписанию, объем, насколько грузит базу загрузка-выгрузка, в случае если один клиент просит откатить базу, то вы разворачиваете бэкап на отдельном сервере, а потом загружаете только архив копии или как-то по другому?
0
hamster_kv ,  
Создание бэкапов областей довольно гибко настраивается. Объем копии зависит, как ни странно, от объема данных, представляет из себя несколько заархивированных xml-файлов. Бывает 2 Мб, бывает и 800 Мб.
Если ежедневной архивной копии области достаточно для разворачивания, проще воспользоваться именно ей. Если требуется восстановление на момент времени, то приходится разворачивать инфобазу полностью на этот самый момент, а затем выгружать из нее данные.
0
toivo61 ,  
Буду благодарен за более подробное описание мониторинга. Спасибо.
0
zadezer ,  
Картинка с Zabbix действительно красивая, а что если не секрет на ней выводится, какие основные параметры системы вы мониторите?
0
hamster_kv ,  
Утилизация процессоров, памяти, доступность инфобаз, кое-какие внутренние метрики, список проблем, часы :)
Монитор отражает общее состояние, при срабатывании триггера идут оповещения в Slack.
0
PeterG ,  
А сколько пользователей в вашем Фреше зарегистрировано всего?
И сколько макс одновременно работающих?
Спасибо!
0
ArcaN0id ,  
Зарегистрированы практически все сотрудники и некоторые клиенты. Одновременно работают ± 100 человек.
0
PeterG ,  
Зарегистрированы практически все сотрудники и некоторые клиенты

Эту цифру можно узнать?
Или она конфиденциальная?
0
ArcaN0id ,  
Зарегистрированных порядка 250
0
PeterG ,  

Спасибо!