Skip to main content

πŸŽ‰ 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.

ToolPrevious VersionNew Version
Grafana9.4.711.4.0
Prometheus2.46.03.0.1
Alertmanager0.25.00.27.0
OTEL-Collector0.77.00.115.1
Tempo2.3.02.6.0

Interesting Adds:
🧭 Tempo:

  • Performance enhancements
  • You can now filter traces by properties (like span ID) for faster debugging and navigation tempo filtering by properties

πŸ” Prometheus:

πŸ“Š Grafana:

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. Kube State Metrics Usage Example

tip

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.

info

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 😨 Slack Message


πŸ“¦ 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:

Before
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:

Using The Package
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:

Relative Paths
import { SERVICES } from '../../common/constants';
Using tsc-alias NPM Package
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! πŸ’»πŸš€