Dependency management using snapshots in Standard R Web Service RRS feed

  • Question

  • We are trying to publish standard R web services in MSMLS 9.4. We wanted to use snapshots in order to isolate R package dependencies between each webservice - i.e. developer A can create his / her own snapshot containing packages required by webservice A without interfering with developer B who publishes webservice B (potentially requiring different package versions).

    The product documentation (R package management when operationalizing analytics with Machine Learning Server > Option 3) mentions potential performance issues when creating web services which use snapshots:

    "For optimal performance, consider the size of the snapshot carefully especially when publishing a service."

    Indeed, we found that response time of a dummy webservice was impacted by the use of snapshots:

    Big snapshot (170 packages, 258Mb) ~ 30s response time
    Small snapshot (1 package, 8Mb) ~ 5s response time
    No snapshot (packages installed directly on MSMLS server per Option 1) ~ <1s response time

    Is there any other way to isolate the runtime dependencies between web services (so each one can use a different set of package versions), but still ensure low web-service response times? For example, are other virtual environment techniques supported for R web services at runtime (e.g. "renv" etc.)?

    Thursday, March 26, 2020 1:35 AM