As you have noticed there are ready-made services available for ML but not for OR. You will have to roll your own.
You can get a feel for the architecture requirements by looking at the code and REST APIs of open-source projects, e.g. graphhopper, vroom. It takes time to understand source code of others, and software architectures even more so. But the blue-prints are out there and readily available.
You will find that common components for a minimal software-as-a-service architecture include:
- Data exchange format (probably JSON): separated between input/request file (input data and input parameters of your optimization problem) and output/response (solution of the optimization algorithm)
- Server: backend that handles incoming API requests (mostly POST or PUT request), calls your optimization algorithm, and sends the solution back to the client
- Client: executable programm code on the client side (downloadable programm, or for example a python package) that builds the data exchange format internally and sends it to the server. This is an optional convenience feature for REST services because the clients can also build the data exchange file themselves.
- Licensing mechanism: checks against a database if a request has a valid API key
- Database: holds a record of user data and valid licenses for the licensing mechanism
- Website: user registration and API key purchase option for creating database entries
- Documentation: can be part of the website or hosted by dedicated third party providers (there are plenty good options if your project is open-source)
Obviously licensing and database is optional if your service is free of charge and small-scale.