Excelente material mesmo. Na minha humilde opinião, ACL é algo que tem que ser considerado com parcimônia, exatamente por estes overheads que você comentou - pode custar bem caro no final, e tornar alguns processos mais morosos. POs geralmente não curtem isto pois significa mais tempo de dev.
@ciroformenton Жыл бұрын
E complementando, a questão da performance - se for um requisito muito forte, pode até inviabilizar a estratégia.
@pisanidaarch Жыл бұрын
Boa, literalmente precisa se fazer uma analise de prós e contras antes de utilizar. Muito obrigado pela participação 👊
@arozendojr Жыл бұрын
(texto ficou grande, pega intenção 😅😅😅😅) Como faz para manter atualizado os contratos, exemplo, ter um micro serviço cadastra lista de usuários, users, a estrutura tem user nome e idade, todo micro serviço que for usar tem que criar esses objetos para seguir o endpoint, caso o endpoint mude o user para nome,idade, telefone, todo mundo vai ter que modificar seus objetos ou seria melhor criar uma lib models request para facilitar e os outros projetos tem que atualizar lib e fazer outro deploy para todos os projetos que consomem cadastrar lista de usuários ?
@pisanidaarch Жыл бұрын
Fala brother, manter a integridade dos contratos entre microserviços é fundamental para garantir a resiliência e a manutenção do sistema. Vc pode utilizar algumas estratégias e práticas abaixo algumas delas: - Versionamento de APIs: Sempre que fizer uma mudança que não seja retrocompatível na sua API, crie uma nova versão dela. Isso pode ser feito usando URIs diferentes (por exemplo, /v1/users e /v2/users) ou através de headers. Isso permite que os consumidores da API migrem para a nova versão no seu próprio ritmo. - Campos Opcionais: Ao adicionar novos campos, como o "telefone" no seu exemplo, faça-os opcionais inicialmente. Isso garante que os consumidores da API antiga não sejam afetados. - Depreciação de Endpoints: Se você decidir descontinuar um endpoint ou versão da API, comunique aos seus consumidores com antecedência. Como você mencionou, você pode usar headers para informar sobre versões obsoletas. - Documentação e Contratos: Utilize ferramentas como OpenAPI (anteriormente conhecido como Swagger) para documentar suas APIs. Isso permite que os consumidores entendam facilmente as mudanças e atualizações. - Client Libraries: Criar bibliotecas clientes (como você sugeriu com a "lib models request") pode ser uma solução para grandes ecossistemas de microserviços. No entanto, isso também pode introduzir complexidade adicional, pois agora você precisa gerenciar a versão da biblioteca e garantir que ela esteja atualizada em todos os serviços consumidores. - Testes de Compatibilidade: Mantenha um conjunto de testes que verifique a compatibilidade entre os microserviços. Sempre que fizer uma mudança em um serviço, execute esses testes para garantir que nada foi quebrado inadvertidamente. Em resumo, enquanto ferramentas e padrões são vitais, a comunicação eficaz e a gestão cuidadosa das mudanças são igualmente críticas para manter a integridade do sistema à medida que ele evolui, acho que a minha resposta ficou ainda maior, espero ter ajudado 👊