O MongoDB dispensa apresentações. Desde sua estreia em 2007, o banco de dados de documentos tem crescido constantemente em popularidade e agora é o 5º banco de dados classificado no mundo de acordo com a DB Engines. Ele agora segue apenas Oracle, MySQL, SQL Server e PostgreSQL. Isso é ainda mais impressionante quando você considera que os quatro principais são bancos de dados relacionais tradicionais que surgiram no século anterior. O MongoDB é o número um entre a nova geração de bancos de dados “NoSQL” distribuídos e escaláveis.
O crescimento mercurial do MongoDB pode ser atribuído a um forte foco na experiência do desenvolvedor. O produto em si é simples, fácil de usar e oferece um caminho feliz do protótipo à produção. Ao experimentar o MongoDB, os desenvolvedores tendem a ter sucesso em mover protótipos funcionais para implantações de produção completas. Essa é a história a ser lembrada.
Enquanto o MongoDB simplificou o desenvolvimento de banco de dados para milhões de desenvolvedores em todo o mundo, o Redpanda está em uma missão semelhante para simplificar aplicativos de streaming em tempo real. Desde o início, o Redpanda foi construído com a mesma dedicação à simplicidade, facilidade de uso e, mais importante, produtividade do desenvolvedor.
Diferente, mas igual
Embora o MongoDB e o Redpanda abordem diferentes partes da pilha de tecnologia, é interessante notar as semelhanças em como eles proporcionam uma experiência de desenvolvedor agradável individualmente e como eles se complementam quando combinados. A saber:
- MongoDB é fornecido como um único binário. Assim como Redpanda. Ao contrário de outras plataformas de streaming comparáveis, o Redpanda não depende de serviços externos como o Apache Zookeeper. Isso torna o Redpanda tão fácil de instalar por meio de gerenciadores de pacotes quanto localmente no laptop de um desenvolvedor. Ele também é fornecido como uma imagem do Docker para que você possa girá-lo por meio do Docker Compose, integrar-se a pipelines de CI/CD ou implantar no Kubernetes com um controlador simples.
- Tanto o Redpanda quanto o MongoDB são sistemas distribuídos. Para obter escala e resiliência, basta instalar exatamente o mesmo binário em vários servidores e apontá-los um para o outro. Isso permite que desenvolvedores e arquitetos adiem decisões sobre escalabilidade e desempenho no início do processo de desenvolvimento. O modelo mental e o código do aplicativo são os mesmos, seja executado em um laptop, uma máquina virtual de núcleo único ou em vários servidores de produção de alta potência.
- Tanto o Redpanda quanto o MongoDB são fornecidos com padrões sensatos. Isso minimiza o número de botões que os desenvolvedores ou administradores precisam ajustar, quer estejam criando um ambiente de prototipagem (como no Docker Compose) ou provisionando um cluster de produção. O Redpanda vai ainda mais longe com a capacidade de autoajuste em relação ao hardware subjacente, permitindo maximizar os recursos disponíveis de CPU, memória e disco com o mínimo de esforço.
- A carga cognitiva para os desenvolvedores não está apenas na escalabilidade de bytes por segundo, mas também em ter que decidir que formato dar aos seus dados e quais tipos escolher. O MongoDB oferece aos desenvolvedores a flexibilidade de evoluir o esquema ao longo do tempo com um modelo de dados amigável do tipo JSON. Da mesma forma, eventos e mensagens enviados ao Redpanda não requerem um esquema inicial. No entanto, há a opção de usar um esquema quando necessário e evoluir o esquema para atender às necessidades de negócios em constante mudança.
Conectando o MongoDB ao Redpanda
O MongoDB se integra ao Redpanda de duas maneiras:como um coletor, pelo qual os eventos do Redpanda são consumidos e enviados ao MongoDB para inserções ou atualizações, ou como uma fonte CDC, onde o MongoDB externaliza seu log de alterações para um tópico do Redpanda para outros (incluindo outras instâncias do MongoDB) para consumir. A integração é feita via Kafka Connect. Como o Redpanda é compatível com o Apache Kafka, os conectores existentes do Kafka funcionam perfeitamente. Essa capacidade de aproveitar o vasto ecossistema Kafka é mais uma maneira da Redpanda facilitar a vida do desenvolvedor!
Nossos amigos do MongoDB montaram uma demonstração de cotações de ações que integra MongoDB e Redpanda via Kafka Connect. A demonstração requer o Docker Compose e o
docker-compose.yml
arquivo se parece com isso:version: '3.7'
services:
redpanda:
command:
- redpanda
- start
- --smp
- '1'
- --reserve-memory
- 0M
- --overprovisioned
- --node-id
- '0'
- --kafka-addr
- PLAINTEXT://0.0.0.0:9092,OUTSIDE://0.0.0.0:9093
- --advertise-kafka-addr
- PLAINTEXT://redpanda:9092,OUTSIDE://localhost:9093
image: docker.vectorized.io/vectorized/redpanda:v21.9.3
ports:
- 9093:9093
connect:
image: confluentinc/cp-kafka-connect-base:latest
build:
context: .
dockerfile: Dockerfile-MongoConnect
depends_on:
- redpanda
ports:
- "8083:8083"
environment:
CONNECT_BOOTSTRAP_SERVERS: 'redpanda:9092'
CONNECT_REST_ADVERTISED_HOST_NAME: connect
CONNECT_REST_PORT: 8083
CONNECT_GROUP_ID: connect-cluster-group
CONNECT_CONFIG_STORAGE_TOPIC: docker-connect-configs
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
CONNECT_OFFSET_FLUSH_INTERVAL_MS: 10000
CONNECT_OFFSET_STORAGE_TOPIC: docker-connect-offsets
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
CONNECT_STATUS_STORAGE_TOPIC: docker-connect-status
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
CONNECT_AUTO_CREATE_TOPICS_ENABLE: "true"
CONNECT_KEY_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
CONNECT_VALUE_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
mongo1:
image: "mongo:5.0.3"
volumes:
- /data/db
ports:
- "27017:27017"
restart: always
nodesvr:
image: node:16
build:
context: .
dockerfile: Dockerfile-Nodesvr
depends_on:
- redpanda
- mongo1
ports:
- "4000:4000"
Para um tutorial completo e passo a passo, visite a postagem de blog complementar no MongoDB. Convidamos todos da comunidade MongoDB para experimentar o Redpanda e se juntar à comunidade Redpanda Slack, onde você pode se envolver com os engenheiros que estão construindo o Redpanda e moldando o futuro do streaming em tempo real!
Leitura adicional
- Documentação Redpanda
- Referência de Redpanda versus Kafka
- Introdução ao Redpanda