Tengo una aplicación web PHP que se ejecuta en un servidor ec2. La aplicación está integrada con otro servicio que implica la suscripción a varios webhooks.

La cantidad de solicitudes que el servidor recibe de estos webhooks se ha vuelto inmanejable y estoy buscando una forma más eficiente de tratar los datos que provienen de estos webhooks.

Mi idea inicial fue usar la puerta de enlace API y poner estas solicitudes en una cola SQS y leer de esta cola en lotes.

Sin embargo, me gustaría que la instancia ec2 lea estos lotes porque el código utilizado para procesar los webhooks es código reutilizado en toda mi aplicación.

¿Es esto posible o me veo obligado a usar una función lambda con SQS? ¿Existe una forma mejor?

0
John Webb 16 oct. 2018 a las 16:58

2 respuestas

La mejor respuesta

El enfoque que sugirió (API Gateway + SQS) funcionará bien. No es necesario utilizar AWS Lambda. Querrá utilizar el AWS SDK para PHP al escribir el código de la aplicación que recibe mensajes de su cola SQS.

He usado este patrón antes y es una gran solución.

2
dmulter 16 oct. 2018 a las 20:10

. . . ¿Me veo obligado a usar una función lambda con SQS?

SQS plus Lambda es básicamente gratis. En este momento, recibe 1 millón (millones) de llamadas lambda y 1 millón (millones) de solicitudes SQS por mes. Recuerde que esas Solicitudes SQS pueden contener hasta 10 mensajes y eso es un potencial de 10 millones de mensajes, todos dentro del nivel gratuito. Es probable que su instancia EC2 esté siempre encendida. Tu función lambda no lo es. Incluso si solo usa Lambda para enviar los datos de SQS a un almacén de datos como RDBMS para que su EC2 sondee periódicamente, la operación sería a prueba de balas y muy económica. Con la introducción de SQS, puede realizar la transición del código EC2 común a las funciones Lambda. Ahora tienen un tiempo de ejecución de 15 minutos.

Para citar mis fuentes:

0
daviesdoesit 16 oct. 2018 a las 14:56