1
resposta

[Dúvida] Definição de Sidecar

Sempre aprendi ( e implementei) que Sidecar era basicamente um microsserviço auxiliar, que era deployado para adicionar uma funcionalidade extra a um microsserviço já existente (log, segurança, monitoramento e etc...). Geralmente esse sidecard era exposto ou em um pod/task ecs separado com comunicação com baixa latencia (ex: Grpc) ou, de maneira mais comum, em uma msm pod kubernetes, e a comunicação se dava por memória compartilhada. No curso, o instrutor fala que sidecar seria como criar uma biblioteca Java ou Node e etc, para adicionar essas funcionalidades ao microsserviço. Alguém encontrou algum artigo que valide essa infromação? Procurei e não encontrei nada a respeito.

No meu entendimento essa abordagem informada vai contra o Sidecar:

1 - Por ser uma biblioteca, seria escrito na linguagem X e só funcionaria com serviços escritos na linguagem X;

2 - Uma das vantagens do Sidecar é adicionar uma nova funcionalidade, sem a necessidade de um deploy ou risco de quebrar a aplicação por adicionar novo código para isso. Adicionar uma biblioteca nos forçæria a fazer um redeploy e poderiamos ter q escrever código para usar a biblioteca, podendo até quebrar a lógica da aplicação.

3 - Se houvesse mudança no "sidecar"/biblioteca, além do deploy dessa nova biblioteca precisariamos alterar a versão da biblioteca no microsserviço e fazer um redeploy.

1 resposta

Opa Hugo, tudo certo?

Está certinho! Um Sidecar é um microsserviço auxiliar que é implantado juntamente com um microsserviço principal para adicionar funcionalidades extras.

Em relação à informação do curso, de que um Sidecar seria como criar uma biblioteca Java ou Node, para adicionar funcionalidades ao microsserviço, é importante ressaltar que essa é apenas outra abordagem para a implementação de um Sidecar. Nesse caso, a biblioteca seria escrita na linguagem X e só funcionaria com serviços escritos na mesma linguagem. No entanto, essa abordagem pode ter algumas desvantagens em relação ao Sidecar tradicional, como a especificidade para a linguagem e o redeploy citado.

Infelizmente não consegui encontrar conteúdos especificamente sobre essa abordagem de biblioteca. No entanto, reforço que existem diferentes formas de implementar um Sidecar e cada abordagem pode ter suas vantagens e desvantagens, dependendo do contexto e dos requisitos do projeto.

Ademais, caso queira se aprofundar em conteúdos relacionados a definição tradicional de Sidecar, posso sugerir algumas leituras relacionadas a padrões de microsserviços, arquiteturas de contêineres e comunicação entre serviços:

1 - Artigo da Microsoft sobre padrões de arquitetura de microsserviços, incluindo o padrão Sidecar: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/sidecar-pattern

2 - Artigo da Kubernetes sobre padrões de projeto, incluindo o padrão Sidecar: https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns/

Fico à disposição.

Tenha um bom dia e bons estudos.