Runners make it easy to go from model development to production. This makes iteration faster and shortens the path from asking "what if..." to achieving real production impact.
A runner does the following things:
- Read Hop or Dash configuration from the environment and command line.
- Read JSON data into a model-specific root state.
- Construct a solver or simulator.
- Call the solver or simulator.
- Output solutions.
All runners are configurable through environment variables or command-line flags.
We add new runners all the time. If you don't see your deployment pattern, just ask us.
In Hop, a decision model is typically created as a binary artifact. This means that models may not be portable across architectures. For instance, a model built on OSX won't run in Lambda, which requires Linux binaries. The same goes for Dash simulator binaries.
Luckily, we can use Go's cross compilation functionality to build models and simluators that run on other architectures without hassle. The command below, for example, builds a binary and zips it. This can be deployed directly to Lambda, irrespective of what machine it is built on.
GOARCH=amd64 GOOS=linux go buildzip [model name].zip [model name]