Estoy evaluando AWS Kinesis frente a Managed Service Kafka (MSK). Nuestro requisito es enviar algunos mensajes (JSON) a AWS desde el sistema local (desarrollo del sistema usando C++). Luego, debemos conservar los mensajes anteriores en la base de datos relacional como PostgreSQL y, al mismo tiempo, debemos transmitir los datos anteriores a otros microservicios (Java) alojados en AWS.
Tengo las siguientes consultas:
i) ¿Cómo puedo acceder (conectarme y enviar mensajes) a AWS Kinesis desde mi sistema local? ¿Hay alguna API de C++ que admita eso? (Hay una API de cliente Java, pero nuestro sistema local está escrito en C++)
ii) ¿Cómo puedo acceder (conectarme y enviar mensajes) a AWS MSK desde mi sistema local?
iii) ¿Es posible integrar MSK con otro servicio de AWS (p. ej., lambda, Redshift, EMR, etc.)?
iv) Para conservar los datos en una base de datos, ¿podemos usar AWS lambda? (AWS Kinesis admite esa funcionalidad, ¿qué pasa con AWS MSK)
v) Nuestra tasa de mensajes es de 50 msg/segundo y ¿cuál es la solución rentable?
Para ser franco, su caso de uso parece simple y 50 mensajes por segundo es una tasa muy baja.
Kinesis es una manguera contra incendios donde se necesita una pajita. Kinesis está diseñado para ingerir, transformar y procesar terabytes de datos en movimiento. ]
¿Ha considerado más bien mirar SQS o Amazon MQ? Ambos son considerablemente más simples de usar y administrar que Kafka o Kinesis. Solo por sus preguntas, está claro que no ha interactuado con Kafka en absoluto, por lo que tendrá una curva de aprendizaje pronunciada. SQS es un sistema de cola simple basado en API: usted publica en una cola de SQS y consume de la cola. Si no necesita preocuparse por ordenar, enrutar, etc., es una tecnología persistente y confiable (aunque torpe) que mucha gente usa con gran éxito.
Para responder a sus preguntas reales:
Amazon publica un SDK de C++ para sus servicios; me sorprendería si no hubiera un cliente de Kinesis como parte de esto. Necesitaría un punto de enlace de Kinesis público o un punto de enlace de Kinesis privado accesible a través de algún tipo de túnel o puerta de enlace entre su red local y su vpc de AWS.
MSK es Kafka. Necesita un cliente Apache Kafka C++ y, al igual que Kinesis, necesitará algún tipo de túnel o puerta de enlace desde su red local hasta la vpc de AWS donde ha aprovisionado MSK.
Es posible, pero es poco probable que haya soluciones llave en mano para esto. Tendrá que escribir algún tipo de software puente desde Kafka -> Otros sistemas
Posiblemente pueda usar Lambda, siempre y cuando tenga en cuenta las fallas, los tiempos de espera y otros modos de falla. Para ser honesto, un consumidor independiente que se ejecuta como un servicio en su vpc o en las instalaciones es una mejor idea.
Es probable que SQS o Amazon MQ, como se mencionó anteriormente, sean más simples y rentables que MSK, y casi seguro que serán más baratos que Kinesis.