RadioPlan Service Deployment Strategies

From Maria GDK Wiki
Jump to navigation Jump to search

RadioPlan Service Deployment Strategies

Choose where the client application and radio plan services will run. All four options need access to map data, an AntennaService, and writable prediction-file storage.

  1. Everything on one computer. Run the client and services locally. This is the simplest option for a workstation or test installation.
    Client and services running on one computer
  2. Services on a separate server. The client connects to the services over the network. Configure reachable service addresses and HTTPS certificates for the names the client uses.
    Client connecting to services on a separate server
  3. GDK service hoster. Install the services as hosted external processes. The hoster starts them and provides the configured proxy endpoints; setup details are below.
    Services managed by the GDK service hoster
  4. Containers. Run the services in containers, with persistent storage for prediction files and access to map and skywave data. Configure the container network or proxy so the client can reach the services.
    Services running in containers

Coverage files when the client and services are separate

RadioPropagationService stores generated coverage files in its prediction directory. Its SQLite database, coveragepredictions.sqlite, indexes those files so the service can find a matching prediction for a radio. The database is an index, not a replacement for the coverage files.

When the client runs on another computer, give the service and client their own writable coverage-file storage. The client can call GetCoveragePredictionFile before requesting a new calculation: the service returns the existing file if it is indexed and still present, or NotFound if it is unavailable. The client can then request a calculation when needed. Downloaded files must also be available locally to the client for responsive GDK radio plan use; a path on the service's computer is not a client-local file.

Setting up the GDK service hoster on Windows

The following is an example configuration for hosting both AntennaService and RadioPropagationService. Keep your existing settings and add or adjust the sections shown here; do not replace entire configuration files with these excerpts.

1. Install the service packages. Place each complete release package, including its maria-service-manifest.json, in its own subfolder under:

C:\ProgramData\TeleplanGlobe\MariaServiceHoster\HostedExternalServices

In this example, the subfolders are named AntennaService and RadioPropagationService. Their names must match the RelativePath entries below.

2. Register the external processes. In the hoster's appsettings.ExternalProcesses.Local.json, configure the service folders and manifests:

{
  "HostedExternalProcesses": {
    "Services": {
      "AntennaService": {
        "RelativePath": "AntennaService",
        "Manifest": "maria-service-manifest.json",
        "HostedService": "AntennaService"
      },
      "RadioPropagationService": {
        "RelativePath": "RadioPropagationService",
        "Manifest": "maria-service-manifest.json",
        "HostedService": "RadioPropagationService"
      }
    }
  }
}

3. Configure endpoints and proxy paths. In the hoster's appSettings.Local.json, set the ports and routes it should provide:

{
  "GlobalDefinitions": {
    "AntennaServiceDisabled": false,
    "RadioPropagationServiceDisabled": false
  },
  "HostedServices": {
    "AntennaService": {
      "ExecutionMode": "Process",
      "EndpointHandling": "AutoEndpoints",
      "AutoEndpoints": {
        "Endpoints": [ "Http:28081", "Grpc:28080" ],
        "AutoProxy": true,
        "ProxyPath": "/antservice_web",
        "GrpcPostfix": "_grpc"
      }
    },
    "RadioPropagationService": {
      "ExecutionMode": "Process",
      "EndpointHandling": "AutoEndpoints",
      "AutoEndpoints": {
        "Endpoints": [ "Http:25081", "Grpc:25080" ],
        "AutoProxy": true,
        "ProxyPath": "/rpsservice_web",
        "GrpcPostfix": "_grpc"
      }
    }
  }
}

You can choose different Endpoints, ProxyPath, or GrpcPostfix values, but update the corresponding client and service addresses as well. Do not confuse a service's internal endpoint ports with the hoster's externally exposed proxy ports.

4. Pass hosted-service settings. In the hoster's appSettings.ServiceSettings.Local.json, configure the settings passed to each process:

{
  "HostedServices": {
    "AntennaService": {
      "Settings": {
        "KestrelCertificateHandling": "[KestrelCertificateHandling]",
        "UseSwagger": false,
        "Disabled": "[AntennaServiceDisabled]",
        "PathBase": "/antennaservice",
        "service_tag": "antennaservice"
      }
    },
    "RadioPropagationService": {
      "Settings": {
        "KestrelCertificateHandling": "[KestrelCertificateHandling]",
        "UseSwagger": false,
        "Disabled": "[RadioPropagationServiceDisabled]",
        "PathBase": "/radiopropagationservices"
      }
    }
  }
}

5. Point RadioPropagationService at AntennaService. In the deployed RadioPropagationService appsettings.json or appsettings.Production.json, set the AntennaService addresses to the actual web and gRPC proxy URLs exposed by your hoster. For example, if it exposes them on ports 5110 and 5111:

{
  "Services": {
    "MariaGdkDataFolder": "C:\\MariaGeoData",
    "AntennaServiceAddressWeb": "http://localhost:5110/antservice_web/",
    "AntennaServiceAddressGrpc": "http://localhost:5111/antservice_web_grpc/"
  }
}

Also configure RadioPropagationService's prediction directory and any required HTTPS certificate and skywave data as described elsewhere on this page. After starting the hoster, check the services through the URLs it actually exposes. If a service does not start or is not ready, check the hoster and service logs, manifest paths, proxy routes, and permissions on data directories.