svg
svg svg

Ador β€” Multi-Region Loan Tendering Platform

Dual-region AKS platform for a fintech loan tendering client based in Finland, with active-passive failover, automated cross-region database sync, and full-stack observability.

Technologies Used:

Azure Kubernetes Service (AKS) Azure Front Door AGIC GitLab CI/CD Keycloak PostgreSQL Redis Prometheus Grafana Loki OpenTelemetry Azure Application Gateway
πŸ–ΌοΈ Image not available
Ador β€” Multi-Region Loan Tendering Platform
πŸ”
star

Production (Dual-Region)

Environment Type

Advanced

Complexity Level

Active-Passive Failover Across Regions

Performance Impact

Project Overview

Ador is a loan tendering platform built for a Finland-based fintech client on Azure. I designed and run an active-passive dual-region setup β€” Prod1 in West Europe and Prod2 in North Europe β€” sitting behind Azure Front Door with priority-based routing, so traffic fails over to the secondary region if the primary goes down. Each region runs its own AKS cluster with AGIC for ingress, hosting 11 microservices deployed from three GitLab branches (new-prod-1, new-prod-2, new-stage) through CI/CD pipelines with manual approval gates and runtime secret injection. A nightly job keeps the two regions' PostgreSQL databases in sync (West Europe β†’ North Europe) using Managed Identity auth, containerized pg_dump/pg_restore, and a Private Endpoint for secure cross-region connectivity. Blue/green releases are handled two ways β€” Azure Front Door Rule Engine with custom header routing, and origin-weight based traffic shifting β€” depending on the rollout. On the observability side, both production clusters run kube-prometheus-stack plus Loki/Promtail, with close to 50 custom PrometheusRule alerts tuned across nodes, pods, deployments, PVCs, Redis, Keycloak, and the ingress controller, and false-positive suppression for AKS-managed control-plane components. I'm currently rolling out OpenTelemetry tracing (Tempo + an OTel Collector DaemonSet), starting with the service most affected by an incident where a silent failure slipped past log-based alerting entirely β€” and separately building out a new staging environment (AKS 1.34, CNI Overlay) and a fresh active-passive production environment ahead of a planned traffic cutover.

Key Features:

  • Active-passive dual-region AKS (West Europe / North Europe) behind Azure Front Door with priority routing
  • 11 microservices across three GitLab branches with manual-gated CI/CD pipelines
  • Blue/green deployments via AFD Rule Engine (custom headers) and origin-weight traffic shifting
  • Nightly cross-region PostgreSQL sync using Managed Identity, containerized pg_dump/pg_restore, and Private Endpoint connectivity
  • Full observability stack β€” kube-prometheus-stack, Loki/Promtail, Grafana β€” with ~49 tuned custom alert rules
  • OpenTelemetry tracing rollout (Tempo + OTel Collector) for request-level visibility beyond log scraping
  • New staging environment build-out on AKS 1.34 with CNI Overlay and Application Gateway + AGIC

Challenges & Solutions:

An SMTP delivery failure went undetected because the underlying error was never explicitly logged, so log-based alerting had nothing to catch.

Root-caused the specific failure, then kicked off an OpenTelemetry tracing initiative (Tempo + OTel Collector) to get request-level visibility that log scraping alone couldn't provide.

Migrating PostgreSQL 15 to 18 on Azure Flexible Server hit ICU collation mismatches and Azure's managed permission model (no superuser access).

Remapped the collation setting and restored using --no-owner --no-privileges to work cleanly within Azure's permission constraints.

Alertmanager was noisy with false positives from AKS-managed control-plane components, drowning out real signal.

Tuned suppression rules for components like KubeSchedulerDown, KubeControllerManagerDown, and KubeProxyDown to cut noise while keeping genuine alerts visible.

svg svg

Let's Build Something Amazing Together

Ready to transform your infrastructure? Let's create scalable solutions that drive real results.

⚑
Fast Delivery
Quick turnaround
🎯
Proven Results
99.9% uptime achieved
πŸ’¬
Clear Communication
Regular updates
svg