sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo desarrollar aplicaciones para MongoDB y Redpanda usando Docker Compose

MongoDB no necesita presentación. Desde su debut en 2007, la base de datos de documentos ha aumentado constantemente en popularidad y ahora es la 5.ª base de datos clasificada en el mundo según DB Engines. Ahora sigue solo a Oracle, MySQL, SQL Server y PostgreSQL. Esto es aún más impresionante cuando se considera que las cuatro principales son bases de datos relacionales tradicionales que surgieron en el siglo anterior. MongoDB es el número uno entre la nueva generación de bases de datos "NoSQL" distribuidas y escalables.

El crecimiento voluble de MongoDB se puede atribuir a un fuerte enfoque en la experiencia del desarrollador. El producto en sí es simple, fácil de usar y proporciona un camino feliz desde el prototipo hasta la producción. Cuando prueban MongoDB, los desarrolladores tienden a tener éxito en mover prototipos de trabajo a implementaciones de producción completas. Esa es la historia para recordar.

Mientras que MongoDB simplificó el desarrollo de bases de datos para millones de desarrolladores en todo el mundo, Redpanda tiene una misión similar para simplificar las aplicaciones de transmisión en tiempo real. Desde el principio, Redpanda se creó con la misma dedicación a la simplicidad, la facilidad de uso y, lo que es más importante, la productividad de los desarrolladores.

Diferente pero igual

Si bien MongoDB y Redpanda abordan diferentes partes de la pila tecnológica, es interesante notar las similitudes en la forma en que brindan una experiencia agradable para el desarrollador individualmente y cómo se complementan entre sí cuando se combinan. A saber:

  • MongoDB se envía como un solo binario. También Redpanda. A diferencia de otras plataformas de transmisión comparables, Redpanda no depende de servicios externos como Apache Zookeeper. Esto hace que Redpanda sea tan fácil de instalar a través de administradores de paquetes como localmente en la computadora portátil de un desarrollador. También se envía como una imagen de Docker para que pueda activarla a través de Docker Compose, integrarla con canalizaciones de CI/CD o implementar en Kubernetes con un controlador simple.
  • Tanto Redpanda como MongoDB son sistemas distribuidos. Para lograr escalabilidad y resiliencia, simplemente instale exactamente el mismo binario en varios servidores y apúntelos entre sí. Esto permite a los desarrolladores y arquitectos diferir las decisiones sobre escalabilidad y rendimiento en las primeras etapas del proceso de desarrollo. El modelo mental y el código de la aplicación son los mismos, ya sea que se ejecute en una computadora portátil, una máquina virtual de un solo núcleo o en varios servidores de producción de alta potencia.
  • Tanto Redpanda como MongoDB se envían con valores predeterminados razonables. Esto minimiza la cantidad de perillas que los desarrolladores o administradores deben modificar, ya sea que estén generando un entorno de creación de prototipos (como con Docker Compose) o aprovisionando un clúster de producción. Redpanda va aún más lejos con la capacidad de autoajuste contra el hardware subyacente, lo que le permite maximizar los recursos disponibles de CPU, memoria y disco con un mínimo esfuerzo.
  • La carga cognitiva para los desarrolladores no está solo en la escalabilidad de bytes por segundo, sino también en tener que decidir qué forma dar a sus datos y qué tipos elegir. MongoDB brinda a los desarrolladores la flexibilidad de hacer evolucionar el esquema con el tiempo con un modelo de datos similar a JSON. Del mismo modo, los eventos y mensajes enviados a Redpanda no requieren un esquema por adelantado. Sin embargo, existe la opción de usar un esquema cuando sea necesario y de evolucionar el esquema para que coincida con las necesidades comerciales cambiantes.

Conectando MongoDB a Redpanda

MongoDB se integra con Redpanda de dos maneras:como sumidero, mediante el cual los eventos de Redpanda se consumen y se envían a MongoDB para inserciones o actualizaciones, o como fuente de CDC, donde MongoDB externaliza su registro de cambios a un tema de Redpanda para que otros (incluidas otras instancias de MongoDB) puedan consumir. La integración se realiza a través de Kafka Connect. Dado que Redpanda es compatible por cable con Apache Kafka, los conectores Kafka existentes funcionan a la perfección. ¡Esta capacidad de aprovechar el vasto ecosistema de Kafka es otra forma en que Redpanda facilita la vida de los desarrolladores!

Nuestros amigos de MongoDB han creado una demostración de cotizaciones bursátiles que integran MongoDB y Redpanda a través de Kafka Connect. La demostración requiere Docker Compose y docker-compose.yml archivo se parece a esto:

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 obtener un tutorial completo y una guía, visite la publicación de blog complementaria en MongoDB. Damos la bienvenida a todos los miembros de la comunidad de MongoDB para que prueben Redpanda y se unan a Slack de la comunidad de Redpanda, donde pueden interactuar con los ingenieros que están construyendo Redpanda y dando forma al futuro de la transmisión en tiempo real.

Lecturas adicionales

  • Documentación de Redpanda
  • Comparativa de Redpanda frente a Kafka
  • Empezando con Redpanda