This question is answered by topology orchestration. Let me illustrate how it works through an example: Say you want to create an online video editing solution. It will probably have at least two components. One component will be the user interface, and another one will be responsible for rendering the final video.
Users quickly notice if an interface responds slowly, so it will need to have strict latency requirements maintained, necessitating as a result that it be put as close to end users as possible, no matter the cost. On the other hand, rendering videos is not latency sensitive, and the time rendering takes is directly related to the amount of processing power dedicated to it. A business may, therefore, choose to place this service in the lowest cost location.
These decisions quickly get a lot more complicated when we talk about dozens of data centers and hundreds of services in a 5G environment, where it’s best to automate placement decisions. Ericsson has developed one such automation software, which I was given the task of integrating with another Ericsson product as well as to enable its function with TOSCA (Topology and Orchestration Specification for Cloud Applications) templates.
TOSCA is an object-oriented language used to describe cloud services and the relationships between them. TOSCA is vendor-independent, which means that a template, if written correctly, can be carried between cloud providers. Unfortunately, at this stage, not every TOSCA template can be placed using placement. If no resource requirement data can be extracted from the template, then it cannot be placed. Once placed, though, services are passed on to Ericsson’s TOSCA Orchestrator, which starts and stops services on demand.
Integrating services has been an interesting, challenging experience because inputs and outputs need to be kept consistent between the two services, while partial failures need to be accounted for by rolling back placements or lifecycle operations.