- Implement RPC Loader support for new configuration:
{
"urls": [
"http://localhost:8000/",
"http://localhost:8001/",
"http://localhost:8002/"
],
"timeout": 1000,
"retry": 60
}
Implement this for loading from file, and for memory, this will be the same string inlined and then loaded.
We need to refactor this: https://github.com/metacall/core/blob/a91dc9fb7e58934283817f5802af43505a769452/source/loaders/rpc_loader/source/rpc_loader_impl.cpp#L630
https://github.com/metacall/core/blob/a91dc9fb7e58934283817f5802af43505a769452/source/loaders/rpc_loader/source/rpc_loader_impl.cpp#L660
https://github.com/metacall/core/blob/a91dc9fb7e58934283817f5802af43505a769452/source/loaders/rpc_loader/source/rpc_loader_impl.cpp#L710
And all the tests that are using the .txt format.
For documentation on how to use the json parser: https://github.com/metacall/core/blob/a91dc9fb7e58934283817f5802af43505a769452/source/metacall/include/metacall/metacall.h#L1609
-
Implement the logic for timeout and retry on inspect in RPC Loader so we can solve the issues in the cluster.
-
Implement liveness and readiness properly in the server, first one is for starting up the server, and second one is for when the server has loaded all the scripts.
-
At this point we should be able to benchmark the application, we should do this against another application, checking CPU bound and IO bound and verifying that Function Mesh improves scalability over a monolith. Next step will be to add telemetry in order to see what takes more time and how can we debug or optimize the function mesh. This should validate the function mesh architecture and that should enough for finishing the PoC. This will define a baseline that we can continously improve. But we need this baseline.
-
Investigate a model for implementing telemetry, either Prometheus or any other option, I would like to avoid sidecar design whenever possible.
-
Review current state of metacall/builder-cli and we will need to integrate it in the K8s cluster, this will imply that we also need to implement the docker registry that is local for the Pods inside the cluster.
{ "urls": [ "http://localhost:8000/", "http://localhost:8001/", "http://localhost:8002/" ], "timeout": 1000, "retry": 60 }Implement this for loading from file, and for memory, this will be the same string inlined and then loaded.
We need to refactor this: https://github.com/metacall/core/blob/a91dc9fb7e58934283817f5802af43505a769452/source/loaders/rpc_loader/source/rpc_loader_impl.cpp#L630
https://github.com/metacall/core/blob/a91dc9fb7e58934283817f5802af43505a769452/source/loaders/rpc_loader/source/rpc_loader_impl.cpp#L660
https://github.com/metacall/core/blob/a91dc9fb7e58934283817f5802af43505a769452/source/loaders/rpc_loader/source/rpc_loader_impl.cpp#L710
And all the tests that are using the .txt format.
For documentation on how to use the json parser: https://github.com/metacall/core/blob/a91dc9fb7e58934283817f5802af43505a769452/source/metacall/include/metacall/metacall.h#L1609
Implement the logic for timeout and retry on inspect in RPC Loader so we can solve the issues in the cluster.
Implement liveness and readiness properly in the server, first one is for starting up the server, and second one is for when the server has loaded all the scripts.
At this point we should be able to benchmark the application, we should do this against another application, checking CPU bound and IO bound and verifying that Function Mesh improves scalability over a monolith. Next step will be to add telemetry in order to see what takes more time and how can we debug or optimize the function mesh. This should validate the function mesh architecture and that should enough for finishing the PoC. This will define a baseline that we can continously improve. But we need this baseline.
Investigate a model for implementing telemetry, either Prometheus or any other option, I would like to avoid sidecar design whenever possible.
Review current state of
metacall/builder-cliand we will need to integrate it in the K8s cluster, this will imply that we also need to implement the docker registry that is local for the Pods inside the cluster.