# Railway Cloud: Management and Orchestration Functionality Designed as Microservices
## 5 Microservices for Railway Cloud Orchestration
### Design of Microservices  
The main entities in railway cloud orchestration are related to the railway cloud catalogue. The railway cloud catalogue contains information about the cloud physical and logical resources and cloudified railway functions deployed on the cloud. The RMAO can retrieve information about the assigned cloud resources and their uses. The catalogue information is manipulated by RMAO provisioning requests for cloud resource assignment, e.g., in the case of faults or maintenance operations. The catalogue information is exchanged between the orchestration services in the RMAO and CRM services in the RCP. When resources are needed in railway cloud clusters, the CRM services can add a resource to the respective cloud resource pools, allocate resources to the nodes or the site networks, and notify the RMAO. The RMAO can discover railway cloud clusters, a cluster network, and nodes. The railway operator may have clouds based on different virtual cluster technologies and those provided by different vendors. Each railway cloud cluster provides CFM services and exposes an interface towards the RMAO, which enables the lifecycle management of the cloudified railway functions. The CRM software catalogue contains information about different CRM services, devoted to, e.g., railway cloud software platform installation, railway cloud registration and initialisation, railway cloud catalogue update, cloud platform software update, railway cloud functional status query and update, CRM services' software update, and CFM services' software update. Therefore, the relevant resources related to basic railway cloud orchestration represent information about the railway cloud platform, platform software, and CRM and CFM services' software. The considered use case illustrated in Figure 3 exemplifies interface functionality for the software update of CFM services; more details on the CRM services' software catalogue are described. In addition to the resources representing the CRM services' software, the software catalogue contains a resource that represents the list of available CFM service packages, which could be based on different virtual cluster technologies. This resource is a container of resources, each of which represents a package of CFM services. The resource representing a specific CFM service package contains a sub-resource representing the list of available software versions of this package. A specific software version of the CFM service package is also represented by a resource. The resource representing a specific software version contains a resource representing the list of CFM services, and the individual CFM service in a specific CFM package version is also presented as a resource. A resource, representing all active subscriptions for notifications about changes in the state of a specific resource, could be attached to the resource. The resource representing all active subscriptions is a collection of individual subscriptions. The resources identified so far are organised in a tree structure, where all the resource URIs have a root, namely the URI of the list of CFM service packages and could be published in a service registry. Table 3 summarises the names, URIs, and applicable HTTP methods to the resources related to the software update of CFM services. For simplicity, the table does not include subscription-related resources. The applicable HTTP methods to the resource representing all active subscriptions related to the state of other resources are GET, which retrieves the list of all subscriptions, and POST, which creates a new subscription. The resource representing an individual subscription could be manipulated by applying the GET method, which retrieves the subscription information, the PUT method, which modifies the subscription, and the DELETE method, which removes the subscription. The data model defines the data structures that are used in resource representation. The resource attributes are metadata that provide information about properties associated with the resource.