In Vodafone UK we have this scenario and the way we have architectured it is to have 2 microservice "layers":
- One of microservices purely implementing TMF Entity APIs
- One layer on top of the previous one with microservices performing aggregation/journey composition. This layer is exposed to "client applications"
This hierarchy ensures separation of concerns while providing flexibility
------------------------------
Fernando Marin Diaz
Vodafone UK Ltd
------------------------------
Original Message:
Sent: May 07, 2019 06:32
From: Cedric Kabongo
Subject: TM Forum implemented in a micro-service environment
I think the best solution should be a combination of the different solutions that were proposed here.
- micro-services to expose TMF APIs but only use/expose id and Href fields for all the reference entities as proposed by Vance Shipley
- the API Gateway to call additional micro-services using href and aggregate the data before returning the response as proposed by Paul Stanek.
------------------------------
Cedric Kabongo
Original Message:
Sent: Apr 19, 2019 04:21
From: Vance Shipley
Subject: TM Forum implemented in a micro-service environment
Cedric,
Within a Product inventory resource (a concrete instance of a subscription to a ProductOffering) you have references (only) to ProductOffering, RelatedParty, ProductOrder in the form of ProductOfferingRef, RelatedPartyRef and ProductOrderRef objects where the only mandatory fields are id and href.
GET /productInventory/v2/product/42
{
"id": "42",
"href": "/productInventory/v2/product/42",
...
"productOffering": {
"id": "72",
"href": "/productCatalogManagement/v3/productOffering/72"
},
"relatedParty": {
"id": "47",
"href": "/partyManagement/v2/party/47"
},
"productOrder": {
"id": "88",
"href": "/productOrdering/v3/productOrder/88"
}
}
------------------------------
Vance Shipley
SigScale Global Inc.
Original Message:
Sent: Apr 17, 2019 10:52
From: Cedric Kabongo
Subject: TM Forum implemented in a micro-service environment
Hi,
we are currently trying to implement TMF in a micro-service architecture. The issue is that each micro service is only responsible of the data related to its domain while TMF APIs combined data from other domains/service represented as References.
to give sense to this, when you submit a GET request to TMF 637 Product Inventory Management that is supposed to be exposed by a Product Inventory micro service, according to TMF swagger definition the service will return inventory data (product, ProductCharacteristic, ProductTerm etc..) but also data belonging to the Product Order service, Party Service and Product catalog. This look wrong to me because the only information the Product Inventory service will have of the order, party and product offer is a correlation ID that can also be used to generate an HREF. data like name, types, validFor for entities belonging to other micro services can only be retrieved by calling the owner service and if you do it from within the inventory service it will create a dependency between the Inventory service and Order, Party and catalogue service.
Is there anyone who implemented it in a micro service environment ? How did you go about it.
------------------------------
Cedric Kabongo
------------------------------