Hello everyone,
Thanks @lastmjs for reminding me to provide an update. It has been long overdue
Progress:
The beginning of the year looked a bit different than planned. Due to (or rather thanks to) periods of increased load on the boundary nodes, we dedicated significant effort on improving the current boundary nodes, eliminating bottlenecks, and tackling tech debt.
Besides that, we have been working on the decentralization of the boundary node: the API boundary nodes.
Boundary Node Performance
As many of you might have noticed, there were multiple instances in the past two months during which the boundary nodes reached capacity. While this underscores the popularity of the IC, it’s detrimental to user experience.
Step-by-step, we improved the boundary nodes and removed a lot of tech debt. I will just highlight a few examples here:
- Switched all boundary node internal communication from TCP sockets to UNIX sockets (e.g., nginx to icx-proxy, or nginx to ic-boundary).
- Improved our logging infrastructure to use less CPU.
- Eliminated all njs-modules in nginx (Yes, nginx supports JavaScript and they are inefficient).
At the moment, we are in the process of benchmarking the boundary nodes to better quantify the improvements. We will post an update once that is done.
Preparing for the API BN rollout
Besides the performance improvements, we have been continuously working on the boundary node decentralization. I am happy to report that almost all work is done and we are getting closer to making an NNS proposal to deploy the first API boundary node.
-
IPv4-enabled Nodes: The code is complete and released. The first node providers have already onboarded node machines with IPv4 addresses assigned. The focus is now on the rollout and we are encouraging all node providers to add IPv4 support to some of their nodes.
-
Discovery Library: All the code to enable clients to discover all API boundary nodes in a certified manner has been merged and is in the process of being rolled out. This will most likely be fully functional with the next replica and agent release (for now only agent-rs).
-
Orchestrator: We are currently working on wrapping things up. The last bigger work item is the configuration of the firewall.
HTTP Gateway
As we are nearing the rollout of the API boundary nodes, we are starting to pick up the work on the HTTP gateway. The goal is to build one binary, similar to ic-boundary
. However, to get something “working” as fast as possible, we are at the moment working on an “interim” HTTP gateway. This will come in the form of a docker container, which is easily deployable, allowing anyone to run their own HTTP gateway.
Outlook:
We have a few tasks left before the first API boundary nodes can be deployed under the management of the NNS. Once that is done, we will shift our focus to building the HTTP gateway, ic-gateway
.
We will continue to keep you updated on our progress and look forward to hearing your feedback and addressing any questions you may have!