MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como desenvolver aplicativos para MongoDB e Redpanda usando o Docker Compose


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