π 2024-Q4 Overview
π§ Config Managementβ
We are excited to introduce Config Management, your go-to solution for handling all configurations within MapColonies. This new system ensures a smoother, more centralized way to manage configurations, reducing manual efforts and increasing consistency across your services.
π For more information, see this page
π Monitoringβ
π Upgrading The Entire Monitoring Stack πβ
Weβve given our entire monitoring stack a big refresh!
With the latest versions now in place, youβll notice better performance, cleaner interfaces, and a few awesome new features to make your life easier.
Tool | Previous Version | New Version |
---|---|---|
Grafana | 9.4.7 | 11.4.0 |
Prometheus | 2.46.0 | 3.0.1 |
Alertmanager | 0.25.0 | 0.27.0 |
OTEL-Collector | 0.77.0 | 0.115.1 |
Tempo | 2.3.0 | 2.6.0 |
Interesting Adds:
π§ Tempo:
- Performance enhancements
- You can now filter traces by properties (like span ID) for faster debugging and navigation
π Prometheus:
- Brand UI β cleaner, simpler, and built from scratch
- Massive Performance enhancements for faster queries and better responsiveness
π Grafana:
- Subfolders support to better organize your dashboards
- Easier data source selection
- Explore mode now supports querying multiple data sources at once
- Span filtering in traces for a better tracing experience
- Format Time transformation can make you set a cleaner and more readable format
Kube State Metricsβ
Kube State Metrics (KSM) is a tool that collects
metrics about the state of Kubernetes objects like Pods, Nodes, and Deployments.
It provides valuable insights into our cluster's health, helping us monitor and troubleshoot more effectively.
KSM integrates seamlessly with Prometheus, making it easy to use with our existing monitoring setup.
With KSM, you can monitor the state of Pods and receive alerts if any are in a crash loop.
You can also track resource usage (memory and CPU) in Pods to determine if they justify the allocated resources.
Say Goodbye To Trash Tracesβ
No more irrelevant data clogging up your monitoring systems!
We've filtered out traces from unimportant paths, so Tempo is now free of unnecessary clutter,
leaving you with clean, actionable traces that tell the real story.
The filtered paths are:
liveness
health
metrics
If there are more paths that you want to filter out, feel free to tell us!
π CI/CD Improvementsβ
π₯ Automatic Deployments for integration Branchβ
We've added auto-deployment support for the integration branch in the helm-charts repository.
Now, you can deploy changes effortlessly just like you do for master.
Add a deployment.json
file, and our Jenkins pipeline will handle the rest.
π‘οΈ Helm Diff for Safer Deploymentsβ
Have you ever deployed without knowing exactly what will be changed?
Remember those nerve-wracking moments when deploying to the Prod environment, with shaky hands?
Well... No More!
Say goodbye to deployment anxiety with Helm Diff!
Now, you can preview all changes before they go live, so you know exactly what's being updated.
Itβs like having a safety net for your deployments. ππ₯
For more information, see this page.
π₯ Who Deployed?β
Sometimes you want to know who made a change in helm-charts repo that triggered a deployment (with the auto-deploy pipeline)?
Well, now you can! No more mysteries!
After the pipeline is triggered and deployed the changed chart, in the slack message, in addition to the status of the deployment,
you will get also the developer name that made the change that triggered the deployment.
Be nice when you blame him π¨
π¦ MC-Packagesβ
Openapi Helpersβ
Working with OpenAPI has never been easier!
We are happy to introduce the OpenAPI Helpers package,
which automatically generates types and interfaces directly from the OpenAPI specification.
No more manual coding β just faster development with fewer errors!
For example, instead of creating an interface that fits the openapi, like this:
interface IAnotherResourceModel {
kind: string;
isAlive: boolean;
}
type GetResourceHandler = RequestHandler<undefined, IAnotherResourceModel>;
public getResource: GetResourceHandler = (req, res) => { }
You can just use the generated types and objects directly from openapi:
import { components } from '@openapi';
import type { TypedRequestHandlers } from '@openapi';
type IAnotherResourceModel = components['schemas']['anotherResource'];
public getResource: TypedRequestHandlers['getAnotherResource'] = (req, res) => { }
Boilerplateβ
Weβve made some important boilerplate improvements to streamline your development experience. β‘
π TypeScript Path Aliasesβ
Now, you can use TypeScript path aliases to simplify your imports: For example:
import { SERVICES } from '../../common/constants';
import { SERVICES } from '@common/constants';
You can see this PR for more info.
π¦ OpenAPI Helpers Integrationβ
OpenAPI Helpers package is now part of our boilerplate, making it even easier to work with OpenAPI specifications.
The integration can be found in this PR.
Upgrade husky for commitlintβ
Weβve upgraded husky to fix commitlint verification, which wasnβt working properly in the boilerplate.
we resolved this issue, ensuring higher code quality with commit linting now in place.
The relevant PRs are: #320 and #321
π¦ Release Automation with Release-Pleaseβ
Weβve integrated Release-Please to automate our release process,
ensuring compliance with semantic versioning.
This will streamline your workflow and improve release consistency.
The release-please integration can be found in this PR
Added Prometheus metrics integration (using prom-client)β
Weβve added Prometheus metrics integration using prom-client
for easier monitoring and observability.
You can find it here.
Integrate to Config Managementβ
Config Management is now part of our boilerplate.
You can see the integration here.
This quarter has been packed with exciting updates and improvements! If you have any questions, feel free to reach out, and happy coding! π»π