Pull to refresh
620.11
Сбер
Больше чем банк

Победить хаос в документации: почему мы создали свой продукт для Docs-as-a-Code

Level of difficultyEasy
Reading time6 min
Views5K

Привет, Хабр! В 2020 году компания решила вывести на рынок линейку продуктов Platform V. Для них нужна была документация, которая на тот момент велась в Confluence. Нам предстояло проделать сложную и дорогую работу: собрать документы на нужные версии, привести тексты к единому стилю и терминологии, оформить как комплект документации от поставщика ПО. Расскажу, какие инструменты мы в СберТехе использовали, почему перешли от документирования в Confluence нa Docs-as-a-Code и создали инструмент Platform V GetDocs, который помогает эффективно писать документацию.

Почему wiki-системы — не лучший выбор для продуктовой документации

Wiki-системы — отличное решение для баз знаний, энциклопедий, проектной и рабочей документации. Но у продуктовой документации свои особенности и задачи, для которых wiki-системы не очень подходят.

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

  • Версионирование документации вместе с продуктом. Это особенно важно, если поставщик поддерживает несколько версий продукта и, соответственно, документаций к ним.

  • Хорошая управляемость архитектурой контента: переиспользование текстов, подстановочные значения, формирование разных наборов документов из одних исходных текстов.

  • Генерация документации на API, базы данных, формирование документов из структурированных данных, полученных из внешних систем.

  • Различные выходные форматы: брендированный сайт для клиентов, печатные формы, документация в дистрибутиве.

  • Локализация.

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

  • Сложное версионирование.

  • Тяжеловесность и неповоротливость при больших объёмах.

  • Потеря контента при частых изменениях в объёмных текстах.

  • Невозможность генерирования документации на API, сложность или невозможность работы со структурированными данными.

  • Сложность настройки выходных форм. Как правило, для них делают отдельное решение.

Преимущества подхода Docs-as-a-Code

Для продуктов с регулярным релизным циклом, одновременной поддержкой нескольких версий и документацией в разных форматах и комплектности (для внутреннего использования, клиентов или заказчиков, регулирующих институтов) оптимальное решение — подход Docs-as-a-Code. Суть концепции в том, что работа с документацией ведется по тем же принципам, что и разработка кода:

  • Хранение и версионирование документации в системе контроля версий, как правило, вместе с кодом продукта.

  • Простая интеграция обновления документации с системами ведения задач.

  • Использование логической разметки тестов, облегчённых языков разметки, понятных широкому кругу технических специалистов: разработчикам, тестировщикам, аналитикам, техническим писателям, менеджерам.

  • Совместная разработка документации, рецензирование и согласование документации по правилам проверки кода.

  • Разработка правил оформления документации отдельно от контента.

  • Организация автоматического тестирования, сборки и публикации документации в рамках типовых DevOps‑процессов.

Подход Docs-as-a-Code обеспечивает надёжную и прозрачную работу с контентом и не требует отдельных трудоёмких операций по оформлению контента при его разработке.

Особенности составления документации на Platform V

В СберТехе практически сразу решили перейти с Confluence на Docs-as-a-Code. И, как и многие компании, мы встали перед выбором инструмента, который бы позволял легко работать с документацией. В наших условиях было выгодно сделать свой продукт:

  • Объёмная продуктовая линейка: более 80 программных продуктов из более 200 чем программных компонентов.

  • Большая производственная команда: более 2000 сотрудников.

  • Стандарт документации и внутренние стандарты, регламентирующие разработку продуктов.

  • Необходимость формирования документации на различные виды API.

  • Частые изменения требований к составу документации и её поставке.

Platform V GetDocs — продукт для производства документации в парадигме Docs-as-a-Code

Platform V GetDocs — простой и удобный инструмент для разработки документации Docs-as-a-Code и сайта документации. Поддерживает все необходимые сценарии, легко расширяется и отвечает потребностям команд разработки и техписателей.

Основные функциональные особенности и преимущества:

  • Простая и гибкая разметка текстов: MyST Markdown, reStructured Text. Поддержка подстановочных значений, переиспользования текстов, включения и исключения текстов по признакам сборки.

  • Поддержка работы с разными конфигурациями репозиториев:

    • Монорепозиторий документации: информации о всех продуктах в выделенном репозитории.

    • Отдельный репозиторий для документации на каждый продукт.

    • Единый репозиторий для кода продукта и документации.

  • Сборка документации:

    • Различные выходные форматы документации: статический сайт в архиве для дистрибутива, печатные формы PDF, DOCX, веб‑версия для сайта документации.

    • Сборка комплектов документации специального назначения, например, для регистрации в Едином реестре российского ПО и др.

    • Сборка справочников API из исходных кодов и спецификаций: OpenAPI, AsyncAPI, GraphQL, Java API, gRPC, JSON‑RPC.

    • Отображение структурированных данных в виде отдельных документов или в рамках одного документа (источники JSON, XML, YAML и др.).

    • Простое управление сборкой через интерфейс и возможность сборки как отдельных комплектов документации, так и сайта целиком.

    • Высокая скорость сборки: меньше 1 минуты для одного комплекта документации в режиме разработки, около 5 минут для публикации документации на сайте для читателей.

  • Проверка документации:

    • Отчёт с переходом в один клик к источнику ошибки в репозитории.

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

    • Проверка справочников API.

    • Проверка целостности ссылок и конфигурации сайта.

    • Проверка структуры документов и разделов.

    • Проверка текстов на иллюстрациях, синтаксиса логической разметки, грамматики русского языка.

    • Поиск и сверка именованных сущностей.

  • Согласование и публикация:

    • Разделение по уровням готовности к публикации: документация в разработке, согласована и готова к публикации, опубликована на сайте.

    • Контроль публикации на сайте готовой документации.

    • Синхронизация контента между разными инсталляциями (внутренний сайт и внешние сайты для клиентов).

  • Отображение документации:

    • Единый стиль отображения для всего контента для разных источников исходных файлов: документы в MD/RST, справочники API, структурированные данные.

    • Два режима отображения на сайте: для разработчика документации (расширен дополнительными инструментами, например переход к исходнику документации, переход к отчету о валидации) и для читателя.

Техническая реализация Platform V GetDocs

Продукт реализован в виде микросервисов, запакованных в Docker-контейнеры. Их можно за считанные секунды развернуть на любой машине с любой операционной системой, где установлен Docker. В качестве движка генерирования документов используется Sphinx с подключённым парсером MyST Markdown. Проверка выполняется целым набором средств: Vale, mdlint, OCR, своими решениями.

Мы также добавили в продукт конфигурацию для разворачивания в кластере Kubernetes. Использование Platform V GetDocs в Kubernetes с его богатой экосистемой даёт весомые преимущества при администрировании, поддержке и расширении продукта. Например, мы не стали изобретать интерфейс сборки документации, а просто развернули Argo Workflows и настроили там нужные конвейеры в формате YAML.

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

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

Platform V GetDocs включает в себя два контура: сборка документации и сайт документации. В упрощённом виде архитектура продукта представлена на схеме.

Основные преимущества технической реализации:

  • Docker‑образы обеспечивают единую и защищённую среду функционирования компонентов в любом окружении.

  • Микросервисная архитектура позволяет расширять и выборочно обновлять продукт без полной пересборки и разворачивания всего решения.

  • Функционирование в кластере Kubernetes даёт высокую скорость, доступность, автоматическую отказоустойчивость и масштабируемость решения, что особенно важно при огромных объёмах постоянно обновляющейся документации. Дополнительно мы можем автоматически обновлять и разворачивать новые компоненты в считанные секунды, и в случае ошибок в разработке быстро откатываться на стабильные версии. И всё это без каких‑либо простоев!

  • Связка Sphinx и MyST Parser даёт средства для гибкого ведения документации: богатую семантическую разметку, легкое расширение разметки, смешанное использование MD/RST, сложные таблицы, включение/исключение контента по признакам, подстановочные значения, единый источник, локализацию, конфигурируемые шаблоны для разных форматов генерируемой документации. Дополнительно заменили conf.py на более простой YAML.

  • Гибкая настройка шаблона сайта документации.

В следующих статьях расскажем о реализации нашего продукта, поделимся рецептами организации документирования для технически сложных программных продуктов и покажем, как Platform V GetDocs упрощает рабочий процесс.

Светлана Каюшина

Руководитель документирования Platform V

Tags:
Hubs:
+19
Comments17

Information

Website
www.sber.ru
Registered
Founded
Employees
over 10,000 employees
Location
Россия