Estoy tratando de descubrir cuál es la mejor manera de implementar un servicio TCP/IP y UDP en Amazon AWS. Hice una investigación previa a mi pregunta y no encuentro nada. Encontré otros protocolos como HTTP, MQTT pero no TCP o UDP
Necesito refactorizar un servicio de rastreo GPS que se está ejecutando ahora mismo en AMAZON EC2. Los dispositivos GPS enviaban los datos de posición usando el protocolo udp y tcp. Cada vez que se recibe un mensaje, el servidor debe responder con un mensaje de RECONOCIMIENTO, dando la confirmación de recepción al dispositivo gps.
El problema al que me enfrento en este momento y es la motivación para refactorizar es: cuando aumenta el tráfico, el servidor no puede recuperar todos los mensajes. Intento resolver este problema con el balanceador de carga y el ajuste de escala automático, pero UDP no es compatible.
Me preguntaba si hay algo como Api Gateway, que me dio un punto final tcp o udp, deje el mensaje en una cola SQS y procese con una función lambda.
¡Gracias por adelantado!
Su pregunta realmente no tiene mucho sentido: está preguntando cómo ejecutar un servicio sin ejecutar un servidor.
Si ha alcanzado los límites de una sola instancia y necesita crecer, considere usar el balanceador de carga de red de AWS con un grupo de instancias EC2 con ajuste de escala automático. Sin embargo, esto no admitirá UDP; si realmente lo necesita, es posible que deba consultar el soporte de terceros en AWS Marketplace.
Editar: las arquitecturas sin servidor están diseñadas para aplicaciones basadas en http, donde envía una solicitud y obtiene una respuesta. Dado que su aplicación está basada en TCP y utiliza conexiones persistentes, la mayoría de las implementaciones sin servidor existentes simplemente no la admitirán. Deberá volver a escribir su aplicación para admitir http, o usar infraestructuras tradicionales basadas en servidores que puedan admitir conexiones persistentes.
Edición n.º 2: a partir de diciembre de 2018, la puerta de enlace API es compatible con WebSockets. Esto probablemente no ayude con la pregunta original, pero abre otras alternativas si necesita ejecutar el código lambda detrás de una conexión de larga duración.
Si desea ir más sin servidor, creo que ECS Container Service tiene instancias que aceptan TCP y UDP. También eche un vistazo a la ejecución de Docker Containers con Kubernetes. No estoy seguro de si admiten esos protocolos, pero creo que sí.
Si no, algunas instancias EC2 con equilibrio de carga pueden ser su mejor opción.