Как стать автором
Обновить

Как создать шаблон документации к микросервису

Время на прочтение6 мин
Количество просмотров25K
Всего голосов 13: ↑13 и ↓0+13
Комментарии24

Комментарии 24

Сам следую давно похожему подходу.

Но есть одно но. Такая мелкогранулированная и сильно привязанная к конкретному модулю документация должна храниться вместе с исходным кодом в виде, например, файла README.md

В конфлюенсах лучше держать что-то более общее

Cпасибо за комментарий. Мы тоже об этом думаем, но пока не пришли к подходу хранения доки рядом с кодом.
Что-то более общее, это вы про что? Сможете привести пример? и что из этих разделов кажется слишком мелких для condluence?

Мы храним документацию в коде при помощи asciidoc +pluntUML. Достаточно удобная структура, но есть нюансы в том, что когда документ попадает в код, то все что было в конфе становится неактуальным и приходится архивировать.

Спасибо за информацию!

Советую обратить внимание на https://backstage.io/. Можете получить удобство confluence/notion. При этом хранить документацию и рядом с кодом, и отдельно

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

По нашим процессам - это ТЗ для разработчика, он смотрит на доку и пишет код. А вы предлагаете заносить эту инфу в код.. Кто, как вы думаете, это должен делать? Поделитесь, плиз, видением..

Насчет должности не знаю, но так то это и системный аналитик может делать. Освоить базу языка это просто. Этот человек должен описать в коде контракт и документацию к нему, но не реализовывать логику. Далее из этого контракта сгенерируется документация в необходимые места, а разработчик напишет логику. Тем самым вы сильно сократите объем работы и жизнь разработчику. И это еще не трогая таких моментов что СА не ванга, и не может со 100% точностью описать контракт заранее, что бы его не пришлось править разработчику.

Спасибо за пояснение. Да, это было бы удобно в случае, если аналитик может базово кодить или разработчик сам проектирует API. Время до выпуска апи на тест сократилось бы.

Любопытный подход. Если с генерацией сваггера из кода в целом понятно (есть много библиотек, например, для спринга: springdoc-openapi и тд), то вот вот остальная документация (описания алгоритма, какие-нибудь общие требования и контекст, напрямую не связанные с механикой общения между сервисами) не понимаю, как можно генерить по коду. Есть какие-то библиотеки интересные на эту тему, как со сваггером у спринга?

Не совсем понял. Какая последовательность действий СА?
Сначала текстовое описание методов, затем контракт OpenAPI или наоборот?
Если наоборот, откуда СА будет брать инфо в процессе описания контракта - держать в голове?

Нарушен прицип "specs firs". С OpenAPI (бывший swagger) так работать непродуктивно. Лучше наоборот - написать спеку в формате OpenAPI (ее как раз уже хорошие системные аналитики вполне могут сделать), а разработчик уже нагенерирует из нее и модели, и заготовки для серверов и много что еще может, в том числе и отдельную документацию. И при этом код уже будет аннотирован и размечен как нужно информацией из вашей спеки. Вот онлайн редактор https://editor.swagger.io/, в нем уже по дефолту некоторый пример залит, как нужно размечать. Можно работать прямо онлайн. Справочные материалы в меню About )

Очень интересно. Спасибо большое за рекомендации. У нас в стриме как-то не прижился, к сожалению, OpenAPI. Но, возможно, стоит пересмотреть отношение к этому формату

А если в процессе разработки многое меняется, то нужно постоянно актуализировать описание? Т.е. работаю в паре разработчик и аналитик всякий раз?

У нас именно так. Как правило, когда аналитик передает такую доку в разработку, то она считается очень хорошо проработанной, поэтому меняется очень мало. Но если меняется, то да, разработчик просит аналитика актуализировать.

Хорошая статья, очень пригодится для начинающих аналитиков и тем, кто только вливается в проект с нуля и надо как то стандартизировать документацию

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

С перечисленными пунктами в ТЗ интересно, полезно. Но с их реализацией есть вопросы. Как уже сказали описать контракты и схемы БД в ручную требуется время, при этом в момент разработки они чаще всего меняются. Поэтому эти пункты должны лежать ближе к коду, это позволит разработчику поправить их, при реализации. Мы генерируем схему БД и OpenAPI из кода.

Интересно по пункту со поведенческой схемой, у вас достаточно это программистам? А схема компонентов? А сценарии(UseCase) в виде блок-схем?

Спасибо за ваш комментарий. Что вы имеете ввиду под сценариями в виде блок-схем? Если вы про usecases, то они у нас прописаны в документации на фронт. Писала про это в статье: https://habr.com/ru/company/ru_mts/blog/686570/
А для микросервисов достаточно того, что описано в статье. По крайней мере доп.запросов не было еще.

Заголовок "Как создать шаблон", а содержание - чем заполнить шаблон. Или тема не раскрыта, или заголовок не подходит к тексту.

Добрый день. Спасибо за комментарий. Возможно, но если так, то второе. Задумка была, именно, написать о том, из чего состоит наш шаблон.

Покритикую немного

  1. Описание API в текстовом виде в конфлюенсе - зло. Такое описание может вполне сойти за ТЗ разработчику, который погружен в проект и у которого аналитик всегда под рукой, но для внешних пользователей бесполезно. Для внешних пользователей это должна быть спецификация openapi и примеры рабочих (с корректной авторизацией и корректными dto) запросов, которые можно выполнить самостоятельно.

  2. Описание БД в текстовом виде в конфлюенсе тоже считаю избыточным. Разрабу оно не нужно и оно устареет после первого спринта. Если на помощь все равно нужны или архитектор или разработчик, то легче выгрузить модель из реальной БД.

Но в целом статья понравилась своим целостным подходом.

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

Можно дополнить шаблон разделами про асинхронное взаимодействие (перечень каналов через Kafka/Rabbit) и со сценариями использования сервиса; а в разделе про REST отдельно упомянуть про список ошибок и аутентификацию.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий