Tldr; Configuration changes are now faster and consistent, service discovery is now more reliable and stable. The router and security packages have been merged into a standalone microservice, the Admin router supports GraphQL, and Core no longer depends on the Database module to spin up.
This release is a big update to Conduit, and it includes a number of new features and improvements. It contains a major refactor of the Core module, as well as new components and the target is to make Conduit more stable and reliable.
Configuration management is a key part of the Core module, and so far it was using a more complex process than it needed. The new process is much more simple and consistent, and it is much faster. The system now uses Redis as the primary store removing the requirement for DB existence, while also speeding up the process. Using intervals and a mutex-like mechanism, Core instances reconcile configuration between redis and database, making sure that your configuration is always up to date.
General improvements have also been made to the way grpc-sdk handles configuration. Previously there was a loop to store the config, and now it is done in a single step. The core module receives the new config, passes it to the appropriate module and if successful stores it in redis, without requiring secondary calls.
On version 0.13 we did major improvements to the service discovery mechanism, mainly due to the introduction of grpc-standard Health Checks. This is further improved, by changes in both the Core as well as the grpc-sdk, so that services are discovered more efficiently, and checked properly on recovery. Due to the removal of the db dependency on Core, we no longer have race-condition issues that could cause core to get stuck waiting for the database.
In order to improve scalability and deployment of Conduit installations, we removed the Router from the Core module, and made it a standalone service. This now allows operators to deploy the Core inside a private network without any outside communication, and have the Router module effectively sitting at the edge of the deployment.
Scalability is now also improved, since Router can be linearly scaled without creating multiple Core instances and handle more requests per instance than before.
Due to this split, we also created a new library, named Hermes, that allows you to create Router instances for general usage. This allows us to use the same basis for both the Router and the Admin, and as a result Admin now support Sockets and GraphQL.
We've introduced a new utility in the grpc-sdk, the ConduitLogger, that allows you to log messages to a file, and also to the console. This is a great way to debug your Conduit installation, and easily track down issues. But we didn't stop there, we've also added Loki as a destination, so you can aggregate all your logs to your Grafana Loki instance, and visualize them in a single dashboard.
Our Admin panel is getting updated to include logging consoles that will show you the produced logs without requiring to run Grafana, so only a single Loki container is required!
As with every release we took our time to fix multiple bugs, and improve performance. You can find all things that have changed in our changelog!
In this release we also went through a huuuge update process of all dependencies in the platform. We updated most of them, reducing potential security issues in old packages and improving performance in many cases.
While this release brings a lot of improvements in the platform, we're excited for the things to come! Here's a sneak peek of the things we're working on: - Add prometheus metrics to all modules - Add metrics charts to the admin panel - Add Roles/Permissions in authentication - Create a dedicated authz module for authorization. - Multi-database connections support - Maybe some serverless magix? who knows.
Got this far? Well then, YOU are awesome!
Feel free to let us know if there's anything you love or hate about Conduit.
Either way, thanks for sticking around.
Copyright © Conduit 2023.