Hello
I am not sure if this is a right place to ask this question.
For one of our client, architect team have proposed a design as shown below for APIs and its internal services.
1. API Consumer (Req) -> Layer7 (Req)-> (Req) Microservices -> (Req) NoSQLdb (Resp) -> Microservices (Resp) -> Layer7 (Response)-> Consumer
2. After responding to Layer7, Microservices will continue further processing and then publishes the message to Amazon Kinesis for down stream applications processing.
So basically in this design we are acknowleding the source system once we have success response of NoSQLdb insertion and closing the transaction.
Role of each component:
Layer7:
1. Security Layer (Authenticate and Authorization.
2. Routing.
3. API consumer onboarding.
Microservices:
1. Orchestration (NoSQLdb, KInesis)
2. Message validations
3. Transformations
Reasons to have orchestration and message validations in microservices is:
1. Scalable
2. Avoid heavy orchestrations in Layer7 as it wont scale.
3. Avoid transformations in Layer7 as complex transformations limitation in the tool.
Now our client is proposing to have message validations and orchestrations on Layer7 and microservices to have only routing funtionality.
So we have some questions on this:
1. We know Layer7 can support orchestrations and Transformations, but we are in an understanding that Gateways shouldn't perform these activities (only lightweight orchestrations or routing).
2. Which is a best place to implement? If Layer7, can someone give me the reasons for this?
Regards
Kareem