Top 10 Service Discovery

Top 10 Service Discovery

Além de garantir a comunicação entre os serviços, os Service Discoveries também fornecem mecanismos para lidar com falhas, escalabilidade e manutenção. Desse modo eles permitem que serviços sejam alterados dinamicamente sem afetar o funcionamento de outros componentes: Isso é especialmente importante em ambientes altamente distribuídos, onde os recursos podem ser adicionados ou removidos constantemente.

Além disso, eles geralmente fornecem mecanismos de balanceamento de carga e monitoramento, permitindo uma visibilidade mais completa sobre o estado dos serviços. Assim, neste artigo, “Top 10 Service Discovery”, vou abordar as principais características de cada ferramenta e como eles podem ser utilizadas para maximizar a confiabilidade, escalabilidade e resiliência da sua arquitetura de microserviços.

10 – Registrator

E também o Registrator da Gliderlabs é uma ferramenta para descoberta e registro de serviços em ambientes dinâmicos como o Docker. Assim, ele funciona monitorando as operações de inicialização e finalização de contêineres e registrando automaticamente os serviços associados neles em um sistema de descoberta de serviços compatível, como o Consul ou o etcd. Portanto permite que outros contêineres e sistemas possam encontrar e se comunicar com esses serviços sem precisar conhecer suas configurações de rede específicas. Por fim o Registrator também fornece suporte a uma variedade de formas de acesso, incluindo DNS, HTTP e gRPC, e é fácil de usar e configurar.

9 – Serf

Por outro lado o Serf da HashiCorp é uma ferramenta de descoberta de serviço descentralizada e de orquestração. Desse modo ele oferece uma maneira fácil e escalável de encontrar e se comunicar com outros nós em uma rede, sem a necessidade de um ponto central de gerenciamento ou configuração. E então ele utiliza uma abordagem de auto-organização para construir uma lista de membros ativos em uma rede, e permite que esses membros compartilhem informações entre si através de eventos e mensagens.

Portanto isso permite que os sistemas se adaptem automaticamente a mudanças na topologia da rede, como nós que entram e saem, e possa ser usado para descoberta de serviço, failover, eleição de líderes, monitoramento e muito mais. O Serf foi projetado para ser simples de usar e configurar, e é compatível com uma variedade de sistemas operacionais e plataformas. Veja também Porque você já deveria estar usando Hashicorp Consul?

Segue um pequeno exemplo do arquivo de configuração que ele utiliza para seu uso,

bind = "0.0.0.0"

ports {
    serf_lan = 7946
    serf_wan = 7946
    rpc = 7373
}

encryption_key = "aBcDeFgHiJkLmNoPqRsTuVwXyZaBcDeFgHiJkLmNoPqRsTuVwXyZ"

log_level = "debug"
log_path = "/var/log/serf.log"
log_file = true
log_rotate = true
log_rotate_max_files = 14
log_rotate_duration = "1h"

tag {
    role = "web"
    env = "prod"
}

8 – HAProxy

HAProxy (High Availability Proxy) é um amplamente utilizado balanceador de carga e servidor proxy open-source. Ele é conhecido por suas características de alta performance, confiabilidade e segurança. Ele pode ser usado para distribuir o tráfego de rede entrante entre vários servidores, melhorando a disponibilidade e escalabilidade de aplicativos.

HAProxy pode ser usado em vários tipos de ambientes, desde simples sites web até sistemas complexos e altamente disponíveis, e suporta vários protocolos como HTTP, TCP e outros. Ele também fornece recursos como balanceamento de carga inteligente, healthcheck, roteamento de regras, entre outros.

Essa são algumas empresas conhecidas que utilizam o HAProxy: Twitter, GitHub, Airbnb, Cisco, Dell, Netflix e muitas outras.

7 – Nginx Plus

Além disso o NGINX Plus é uma versão comercial do popular servidor web de código aberto NGINX. Ele fornece recursos adicionais além do NGINX básico, como gerenciamento de configuração centralizado, monitoramento e relatórios em tempo real, verificação de saúde dos servidores, cache dinâmico, suporte ao protocolo HTTP/2, entre outros. Além disso, o NGINX Plus também oferece suporte e atualizações de segurança para garantir a estabilidade e segurança dos seus serviços.

6 – SmartStack

Já o SmartStack é um sistema de Service Discovery e orquestração de serviços desenvolvido pela Airbnb, escrito em Python. Esse é um Top 10 Service Discovery que combina duas ferramentas de código aberto, Nerve e Synapse, para fornecer uma solução escalável e tolerante a falhas. Ele permite aos desenvolvedores publicar e encontrar facilmente serviços em ambientes dinâmicos e gerencia automaticamente o roteamento de tráfego para esses serviços. Além disso o SmartStack também oferece recursos de monitoramento e gera relatórios em tempo real para ajudar a garantir a disponibilidade e desempenho dos serviços.

5 – SkyDNS

Por sua vez o SkyDNS é outra ferramenta do tipo baseada em DNS, escrita em Go. Ela permite que os desenvolvedores publiquem e encontrem facilmente serviços em um ambiente de rede usando DNS como meio de descoberta. Ele é projetado para funcionar com sistemas de orquestração de contêineres, como o Docker Swarm e Kubernetes, e é compatível com o protocolo DNS-SD (DNS-Based Service Discovery). Além disso o SkyDNS usa o protocolo DNS para fazer consultas de nome de serviço, e retorna endereços IP e portas dos serviços registrados. Ele também oferece suporte a várias implementações de back-end, incluindo etcd, consul, zookeeper, entre outros. Isso permite que os desenvolvedores escolham a solução de descoberta de serviço que melhor atenda às suas necessidades.

4 – ETCD

Por outro lado o ETCD é um KV Store (banco de dados de chave-valor) distribuído desenvolvido pela CoreOS. Entretanto ele é frequentemente utilizado como uma ferramenta de Service Discovery e configuração em cluster. Assim o etcd permite que os desenvolvedores armazenem e recuperem dados de configuração e informações de serviço em um ambiente distribuído, garantindo alta disponibilidade e tolerância a falhas. Assim ele foi desenvolvido em Go e possui uma API RESTful fácil de usar. Se por um lado ele é projetado para lidar com altas taxas de escrita e leitura, e po outro ele oferece recursos como replicação automática, eleição de líder, verificação de integridade e backup. o etcd é amplamente utilizado em conjunto com soluções de orquestração de contêineres, como o Kubernetes.

3 – Zookeeper

Apache ZooKeeper Service Discovery

Já o ZooKeeper é um sistema distribuído de gerenciamento de configuração e Service Discovery escrito em Java. Ele fornece um modelo de dados hierárquico, similar ao de um file system, onde os desenvolvedores podem armazenar e recuperar dados de configuração e informações de serviço. Ele também oferece recursos de sincronização e gerenciamento de eleição, garantindo alta disponibilidade e tolerância a falhas.

Além disso, ZooKeeper é amplamente utilizado como componente fundamental no Apache Kafka, um sistema de processamento de fluxo de dados distribuído. O Kafka utiliza o ZooKeeper para eleger líderes de partições, gerenciar configurações de cluster e monitorar o estado do cluster. Isso permite que o Kafka possa se adaptar dinamicamente a falhas e mudanças no cluster, garantindo a continuidade do fluxo de dados.

2 – Eureka

E também o Eureka que é um sistema de Service Discovery desenvolvido pela Netflix. Ele é projetado para trabalhar com o Netflix OSS (Software de Código Aberto da Netflix) e é usado para facilitar o registro e a descoberta de microserviços em ambientes distribuídos. O Eureka permite que os serviços registrem e descubram automaticamente outros serviços, sem a necessidade de configuração manual. Isso ajuda a garantir resiliência, tornando mais fácil escalar e gerenciar aplicativos de microserviços. O Eureka é projetado para lidar com cenários de alta escalabilidade, onde milhares de instâncias de serviços podem ser registradas e descobertas dinamicamente.

1 – HashiCorp Consul

Além de todos os outros Top 10 Service Discovery, o Consul é um sistema de gerenciamento de configurações e de descoberta de serviços desenvolvido pela Hashicorp. Ele é projetado para funcionar em ambientes distribuídos e é usado para facilitar o registro e a descoberta de microserviços. O Consul fornece recursos de Service Discovery , gerenciamento de configurações e HealthCheck, tornando mais fácil escalar e gerenciar aplicativos de microserviços.

Outra vantagem do Consul é a sua capacidade de funcionar em múltiplas nuvens, ou seja, ele tem suporte a multi-cloud, permitindo que os usuários gerenciem e descubram serviços em diferentes ambientes de nuvem, como AWS, Azure e Google Cloud. Isso significa que os usuários podem usar o Consul para gerenciar serviços em diferentes nuvens sem precisar de diferentes ferramentas ou soluções.

Extra: Kubernetes

Kubernetes (k8s) e o Service Discovery

Por fim, o Kubernetes é um sistema de gerenciamento de contêineres open-source que fornece uma plataforma para o gerenciamento automatizado de aplicativos em contêineres. Ele é amplamente utilizado para gerenciar aplicativos em contêineres em ambientes de produção. Além disso ele tem uma variedade de recursos para gerenciamento de aplicativos, incluindo Service Discovery.

Service Discovery é uma funcionalidade do Kubernetes que permite que os aplicativos encontrem e se comuniquem com outros aplicativos em um cluster Kubernetes. Ele é implementado através de serviços e endereços virtuais. Um serviço Kubernetes representa um conjunto de pods (instância de um container) que são expostos como um único ponto de contato. O endereço virtual é um endereço IP que é atribuído a um serviço, e que pode ser usado para se comunicar com os pods que estão associados a esse serviço.

Os serviços e endereços virtuais são gerenciados pelo Kubernetes, permitindo que os aplicativos se comuniquem de forma transparente, mesmo se os pods associados a um serviço estiverem em constante mudança. Isso é particularmente útil em ambientes de produção, onde os pods podem ser adicionados ou removidos dinamicamente para atender às necessidades de escalabilidade.

Além disso, os serviços podem ser configurados com diferentes tipos de roteamento de tráfego, incluindo roteamento de equilíbrio de carga. Isso permite que o tráfego seja distribuído de forma equilibrada entre os pods associados a um serviço.

Em resumo, o Kubernetes oferece uma funcionalidade robusta e flexível de Service Discovery que permite que os aplicativos se comuniquem de forma transparente, mesmo em ambientes de produção altamente escaláveis e dinâmicos. Esses foram o Top 10 Service Discovery.


Thiago Anselme
Thiago Anselme - Gerente de TI - Arquiteto de Soluções

Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.

Deixe um comentário