¿Existe un mejor enfoque para implementar una arquitectura para enviar SMS utilizando un modelo de microservicio?

Tenemos un servicio dentro de una clase Backend, el servicio se ve así:

// Setup AWS SNS
AWS.config.update({
    region: 'eu-west-1',
    accessKeyId: process.env.AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
});
var sns = new AWS.SNS();

var params = {
    Message: "SMS message test",
    MessageStructure: 'string',
    PhoneNumber: '0045xxxxxxxx',
    Subject: 'Alarm',
    MessageAttributes :{
        'AWS.SNS.SMS.SenderID': {
            'DataType': 'String',
            'StringValue': 'MySender'
        },
        'AWS.SNS.SMS.SMSType': 'Transactional'
    }
};

Si necesitamos enviar un SMS, simplemente llamamos a este servicio.

Lo malo aquí es lo siguiente, y lo sabemos:

Estamos usando las claves secretas dentro del EC2. Sin embargo, estamos trabajando en eso para establecer un rol con los permisos específicos para las instancias.

Imagina que necesitamos modificar la forma en que enviamos los SMS, tendríamos que volver a implementar toda la aplicación solo para esa pequeña parte de nuestra aplicación.

Peor aún, imagine que tenemos nuestra aplicación en AutoScaling. Tendríamos que dejar todas las instancias solo para actualizar esa pequeña parte de nuestra aplicación.

Otro problema es, ¿qué pasa si tenemos que usar ese servicio en otras aplicaciones? El enfoque actual lleva a duplicar un servicio entre aplicaciones.

Por último, cómo iniciar sesión, monitorear, etc.

Creemos que hay un mejor enfoque para evitar este tipo de problemas, por lo que puede ver nuestro enfoque para evitar los problemas anteriores.

Respuestas a la pregunta(1)

Su respuesta a la pregunta