Existe uma melhor abordagem para implantar uma arquitetura para enviar SMS usando um modelo de microsserviço?

Temos um serviço dentro de uma classe Backend, o serviço se parece com:

// 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'
    }
};

Se precisarmos enviar um SMS, basta ligar para este serviço.

O que é ruim aqui é o seguinte, e nós sabemos:

Estamos usando as chaves secretas no EC2. No entanto, estamos trabalhando nisso para definir uma função com permissões específicas para as instâncias.

Imagine que precisamos modificar a maneira como estamos enviando o SMS; teríamos que reimplementar o aplicativo inteiro apenas para essa pequena parte do aplicativo.

Pior, imagine que temos nosso aplicativo no AutoScaling. Teríamos que abandonar todas as instâncias apenas para atualizar essa pequena parte do nosso aplicativo.

Outro problema é: e se tivermos que usar esse serviço em outros aplicativos? A abordagem atual leva à duplicação de um serviço entre aplicativos.

Por último, como registrar, monitorar, etc.

Acreditamos que existe uma abordagem melhor para evitar esse tipo de problema, para que você possa ver nossa abordagem para evitar os problemas acima.

questionAnswers(1)

yourAnswerToTheQuestion