Acho que um dos maiores pontos negativos do trabalho com microsserviços é garantir que as APIs estejam bem documentadas e que as APIs não alterem seu comportamento sem afetar os aplicativos downstream. Esse problema se amplifica quando você tem muitos serviços que são interdependentes entre si. Talvez nesse momento você esteja fazendo microsserviços errados, mas eu discordo.
Digamos que herdamos 20 microsserviços pertencentes a equipes diferentes e não há documentação clara sobre qual aplicativo usa qual terminal de API de outro aplicativo. Existe uma maneira prescrita de documentar isso? Inicialmente, pensei em analisar os pontos de extremidade de cada aplicativo e adicioná-los a uma tabela de banco de dados, criando um relacionamento FK entre cada aplicativo e a rota de um aplicativo em uma tabela muitos-para-muitos (quase todos esses são aplicativos rails). Mas não tenho certeza se essa é uma boa maneira de lidar com isso, ou estou reinventando a roda aqui.
Em retrospecto, essa pode ser uma maneira não tão ruim de documentar a interação de aplicativos se você estiver iniciando com microsserviços do zero. Isso apenas reforçaria que uma única fonte de verdade seja mantida por meio do uso de um banco de dados e quaisquer alterações nos pontos de extremidade seriam executadas no aplicativo em conjunto com a alteração no banco de dados. Pensamentos?
Eu acho que uma boa idéia é criar um diagrama de integrações e incluí-lo no seu repositório. Escolha alguma ferramenta gratuita (como draw.io) que pode exportar o diagrama em um arquivo XML ou JSON e confirmar esse arquivo no seu repositório. Se você usa o Github ou o Gitlab, gere a imagem a partir deste diagrama e inclua no Wiki ou mesmo no arquivo README.md, para que a imagem fique visível sempre que o desenvolvedor visualizar o repositório a partir do navegador.
A mesma estratégia pode ser usada para o banco de dados.
Sobre a documentação dos recursos da API, o Swagger é uma boa opção.
Isso é um problema, com certeza.
fonte