Quando estiver projetando um serviço, recomendamos considerar, também, escrever a(s) biblioteca(s) “cliente” para consumir esse serviço. Essa abordagem é indicada há muito tempo e é seguida, inclusive, pelo Netflix.
Segundo Josh Evans, em sua palestra no QCON San Francisco, a Netflix considera a implementação da(s) biblioteca(s) cliente como parte integrante da implementação dos microsserviços. Ele aponta que, entregando bibliotecas cliente, evita-se a escrita repetida de código e garante-se padronização e qualificação do consumo.
Fornecer código cliente para sua API facilita a implementação de caching, além de padrões de resiliência (Retry pattern e Circuit-breaker pattern)
No RavenDB, consideramos as bibliotecas clientes como parte integral da solução. Assim, podemos implementar estratégias agressivas de caching em client-side. Outro aspecto relevante é que a biblioteca cliente, no RavenDB, mantem a topologia dos servidores e consegue distribuir/selecionar nós em caso de indícios de instabilidade (failover).
Outra vantagem de implementar bibliotecas cliente é o afrouxamento dos contratos. Afinal, eventuais mudanças ficam “ocultas” das aplicações que consomem os serviços.
Se seu serviço precisa ser consumido por programas em diversas plataformas/linguagens, recomendamos certificar-se de fornecer implementações para todas elas. Se isso não for viável, indicamos, pelo menos compartilhar uma boa implementação de referência.