2021 was an impactful year for Arcus. In every repository major changes were made. This resulted in full production-ready open-source libraries that are ready to be used within your projects.
Our most popular packages are not a surprise. Let’s see how these and other packages have changed over the year.
Web API
The Web API repository has probably had the most releases this year. Lots of changes have been made to almost all available functionality — too many to name them all. The most important, and seemingly most-used feature of this library is the request tracking. This feature has also had some major updates:
- Capability to omit entire endpoint routes from the request tracking.
- Capability to only track requests with a certain HTTP status code response.
- Capability to include/exclude request/response bodies from the telemetry.
These changes are all available as general options and operation-specific attributes.
An example:
Another blog post has been written on the topic of advanced request tracking.
For more information, see the request tracking feature docs.
Security
One of our most popular repositories, is the security repository, and the most-used feature would be the secret store. 2021 is the year that the secret store grew from an initial concept to a fully-usable feature that brings security by-default in your project. The following major features have been added:
- Capability to mutate the secret name before looking it up.
- Capability to retrieve one or many secret providers with a registered name.
- Capability to register critical exceptions to halt the secret-retrieval.
- Capability to opt-in for security events.
- Capability to track dependencies from built-in secret providers.
Besides that, we also have added some new built-in secret providers:
- HashiCorp
- Docker secrets
- Command line arguments
Another blog post has been written on the updates of the secret store.
Messaging
The biggest change that happened in the messaging repository, is the release of v1.0 and with it the major refactoring we passed through. The messaging library has a great feature to register message handlers that will handle incoming messages from a message pump. This message pump will receive its messages from an Azure Service Bus topic or queue. This split in message pump message handler is a great way to express the business logic in a comfortable and descriptive manner. What v1.0 introduced is to make sure that this message handler system can be used outside a message pump. We extracted the message routing from the message pump, so the consumer can determine when a message can go through the message handling system. This is a great way if you already have received a message (without a message pump) but still want to make use of the amazing message handling system.
Our goal for the next year, is to make the message handling available for Azure Functions so it would look like this:
Another blog post has been written on this major change.
See our features docs for more information on our available functionality.
Observability
The most important 2021 changes in the observability repository are all related to our upcoming service-to-service correlation functionality. This feature would allow us to link requests across components in Azure Application Insights. Naturally, this is quite a big and complex adaptation so we choose to split the functionality in separate tasks.
The changes that were made this year on this, are:
- Capability to add operation parent ID to correlation information.
- Capability to add dependency name to dependency telemetry.
Besides those changes, we are working hard to make it even more production worthy. It’s a popular and very important library to have mature telemetry in your project.
- Capability to track Azure Key Vault dependencies.
- Capability to use telemetry type filter outside Arcus-related Serilog sink.
- Capability to add public exception properties to exception telemetry.
See our features docs for more information on our available functionality.
Templates
The templates repository is probably the easiest place to get started with Arcus. It provides development-ready project templates for you to use at the start of your project. It already contains all the necessary best-practices and correct use of Arcus libraries so you don’t have to worry about infrastructure code but can focus on the business end.
2021 was the year that we took this to another level and created project templates for Azure Functions.
- Capability to create Azure Functions project with a HTTP endpoint trigger.
- Capability to create Azure Functions project running a timer to log finished Databricks log runs.
There are already several project options and additional built-in functionality available for these new and existing project templates, so to make them more development-ready:
- Capability to opt-in for health checks.
- Capability to track only 5xx requests in health endpoint.
- Capability to configure minimum Serilog logging level from application settings.
- Capability to use .NET project templates directly from Visual Studio.
When the messaging library is ready to provide the message routing outside message pumps, we will create additional Azure Functions project templates with Azure Service Bus triggers. See our feature docs for more information on our available functionality.
Background Jobs
We also have a new scheduled job in the background jobs repository. We already had a job that would notify us when an Azure Key Vault secret was expired, but now we also are able to notify consumers when a Service Principal client secret is about to expire or is expired.
This is a great way to keep track of your available client secrets. An Azure Event Grid event will notify you with all the details (secret name, expiration date). This library has already shown its added value by providing low-level infrastructure code that takes care of missing links between services.
See our feature docs for more information on our available functionality.
Scripting
The scripting repository has received various updates, from Azure API Management, to Azure SQL databases, to Azure DevOps integrations. This repository has always been a place where many things come together. Repeated tasks in CI build pipelines or for local development. The library was used more this year, which lead to great new ideas and functionality:
- Capability to upload private/public certificate to Azure API Management.
- Capability to upload schema’s/maps (transformations) into Azure Integration Account.
- Capability to run SQL migration with semantic versioning.
- Capability to retain an Azure DevOps build indefinitely.
- Capability to upload files to Azure Blob Storage.
- Capability to enable/disable Azure Logic App with/without a configuration file.
There are too many new features to list them all here. Take a look at our feature docs to get familiar with our available functionality.
Conclusion: What's on the Horizon?
2021 was a big year for Arcus. A lot has changed. New features were introduced, existing ones were updated. It was a year where Arcus was used more than before. Consumers contributed with ideas and issues which made the code and available functionality stronger.
What’s on the horizon? What will 2022 bring? At the end of this year, 3 new code-owners were introduced to Arcus. This will be a new milestone for the Arcus initiative. More opinions and viewpoints will make these libraries better and more usable.
The following features are on the horizon for 2022:
- Message routing extraction in the messaging repository.
- Azure Functions project templates for Azure Service Bus with message routing in the templates repository.
- Service-to-service correlation in the observability repository.
- And many more…
As always, thanks for reading and if you have any ideas, issues, problems, or just want to discuss something, don’t hesitate to take a look at any of our Arcus repositories.
We’re happy to have you.
Stijn
Subscribe to our RSS feed