We want to design a solution for generation and validation of OTP(One Time Password) process. We decided to create OTP process as a separate micro service. Since OTP need to be communicated to users we felt a need to create a separate micro service for communication (SMS, mails etc.).
While designing we came up to a problem of which service should have responsibility for the message template binding. We came with below approaches to solve it:
- The OTP service will have responsibility of creating and binding message templates, based on the service that is calling, and pass the message to SMS service.
A separate template micro service need to be created and the OTP service will call the template service which will return the message to OTP service and then it will be passed to SMS service.
Create a separate template micro service, but the let SMS service communicate with it. Here the calling service will initiate OTP with identifier and this identifier will be passed on to the SMS service which will fetch appropriate message from template service.
The first approach gives additional responsibility to the OTP service. The second and third approach separate out the template responsibility to a separate service, but we could not came to a consensus whether the OTP service or SMS service should call the template service.
We need to know which of the above approaches seems relevant and why?
Additional Info:
- SMS service will not be limited to only OTP messages. We will extend it to also send other communication.
- OTP service already has the responsibility of creating and verifying OTP.
- If we create a separate template micro service we will use it for other communications as well