Why Smarter Abandoned MySQL & Nginx

The short answer is, “it’s always about money”. Smarter runs MariaDB for relational persistence, and Traefik for its reverse proxy service (aka the ‘web server’). Both work great, but you nonetheless would not be faulted for asking, “why cut against the grain? Why not use MySQL and Nginx, like every other large Kubernetes platform in the galaxy?” Well, that’s how things began with The Smarter Project, but then we went into production and immediately encountered some rude awakenings.

In the case of MySQL, it works fine for local development environments mind you, but as Smarter moved into production in 2025 I was rudely introduced to Oracle’s penchant for shoehorning users into paid support containers by deliberately withholding critical enterprise features, such as advanced cloud backup integrations and high-performance thread-pooling, from the free community images. By leaving these essential production tools out of the standard release, teams running high-traffic Kubernetes clusters are forced to choose between managing complex architectural workarounds or upgrading to a paid tier. This intentional feature gap turns the free Docker image into a stepping stone, subtly pushing growing enterprises toward Oracle’s commercial ecosystem just to ensure basic platform stability and automation. But after having migrated to MariaDB I Forest Gump’d into some other happy surprises.

Implementing high-availability topologies in MariaDB is easier than in MySQL. In Kubernetes, handling rapid node failovers smoothly is crucial to avoiding application downtime. MariaDB includes Galera Cluster as a native, built-in feature. Galera provides true synchronous multi-master replication. If a Kubernetes worker node hosting a primary database pod crashes, any other MariaDB pod in the cluster is immediately ready to accept read/write traffic without complex data-lag synchronization or split-brain risks. See mariadb-operator, Mariadb vs Mysql comparison guide enterprise features security 2026, Incompatibilities and Feature Differences Between Mariadb Vs Mysql. By contract MySQL relies heavily on Group Replication or MySQL InnoDB Cluster. Under heavy write workloads or temporary network jitters (common in multi-tenant Kubernetes clusters), Group Replication can suffer from severe performance throttling and flow control issues compared to Galera. See Introduction to MySQL Operator for Kubernetes on YouTube.

Standard Thread-Pooling as a Resource Management Strategy. Kubernetes environments enforce strict CPU and memory resource limits on containers to maximize cluster density and prevent single pods from starving others. MariaDB includes an advanced Thread Pool plugin directly in its free, open-source Community Edition. This allows a single MariaDB pod to sustain tens of thousands of concurrent client connections using a fixed, optimized number of operating system threads. This noticeably minimizes context switching and keeps memory usage predictable and low. See The Difference between MariaDB and MySQL, MariaDB vs MySQL, whats different in 2026, Understanding the Differences Between MariaDB and MySQL. But MySQL locks its native Thread Pool plugin behind the commercial Enterprise Edition, meaning you have to pay $$$ for this whereas MariaDB give this to you for free. The open-source MySQL Community Edition uses a “one-thread-per-connection” architecture which falls on its face early on in production workloads. If your Kubernetes microservices rapidly scale up and open thousands of connections, as is the case with Smarter when running at scale, MySQL pods will experience massive memory overhead and CPU thrashing, often causing the Kubernetes Out-Of-Memory (OOM) killer to terminate the database pod. See MariaDB Vs MySQL.

Native GitOps-Friendly Ecosystem and a Pure Open-Source License. Interestingly, MariaDB simply does Kubernetes better than MySQL. Let me explain. A major core design principle of Kubernetes is declarative automation (GitOps) and avoiding vendor lock-in. With MariaDB The ecosystem features the mariadb-operator, a highly mature, community-favored Kubernetes operator. It translates day-2 operations like say, scaling, backups via S3 snapshots, and user management entirely into native Kubernetes Custom Resource Definitions (CRDs). Moreover, MariaDB is run by an actual independent foundation and remains purely GPL-licensed. All core updates, security auditing tools, and advanced metrics features are shipped directly without artificial enterprise paywalls. See Deploy MariaDB on Kubernetes with MariaDB Operator, MariaDB Vs MySQL, which to choose in 2026, MariaDB Operator, MariaDB top reasons to choose, on Reddit, MariaDB Vs MySQL, which should you choose? (Medium). MySQL on the otherhand, was acquired by Oracle in early 2010. While an Oracle-backed MySQL operator exists, many of its most robust features like enterprise data masking, advanced auditing, and internal monitoring plugins, require separate proprietary enterprise licensing which not to beat on a dead horse, cost $$. See Guide to open source db selection, MariaDB Vs MySQL, Why developers are switching from MySQL to MariaDB (Medium).

Comparison of MySQL Community Edition and MariaDB Community Server. For high availability, it is Group Replication or InnoDB Cluster, which can throttle, versus Galera Cluster's built-in synchronous multi-master replication. The thread pool is Enterprise Edition only versus included free. The Kubernetes operator is Oracle-backed with enterprise-licensed features versus mariadb-operator with scaling, S3 backups and users as CRDs. The steward is Oracle since 2010 versus an independent foundation, GPL-licensed.

Now then, let’s talk about Nginx. I’d been using Nginx exclusively for nearly 10 years and was largely ambivalent. I rarely made use of advanced features and so this was largely a sleepy piece of infrastructure on my projects which simply worked, and reliably so. But nowadays, F5 shoehorns Kubernetes users into paid NGINX Plus containers (ie, the kind that cost $$$) by intentionally disabling dynamic routing updates in the free version, forcing the entire network controller to reload and drop active connections whenever backend pods autoscale. By gating essential production features like live health checks and granular per-route observability metrics behind a commercial paywall, F5 ensures that the open-source version struggles to keep pace with basic cloud-native microservices. So once again, while Nginx works fine in local development, their quite less-than-forthcoming feature starvation strategy pushes growing teams out of the community tier and directly into an enterprise contract just to maintain platform stability. I guess that’s fine if you work at a wall street bank or a Silicon Valley tech behemoth, but The Smarter Project is strictly a community supported open source project on a shoestring budget.

We replaced NgInx with Traefik in late 2025, and I have to say that its been nothing if not pleasant, every step of the way. Its easy to learn, easy to configure, and has a surprisingly robust feature set. Here are some welcome surprises about TraefiK.

Traefik connects directly to the Kubernetes API to enable automatic service discovery. Unlike Nginx, which traditionally requires manual configuration updates or full reloads whenever the cluster topology changes, Traefik listens for changes in real time. As pods are scaled up, scaled down, or replaced, Traefik automatically updates its routing table instantly and without downtime, making it a highly reliable option for highly dynamic microservice environments.

It provides built-in Let’s Encrypt automation for native SSL/TLS management. Traefik handles the automatic issuance, verification, and renewal of free certificates out of the box using HTTP, TLS, or DNS challenges. In contrast, Nginx requires deploying and configuring external tools like certbot or managing complex cert-manager setups in Kubernetes, which adds extra layers of infrastructure overhead just to keep traffic secure.

Traefik is a modern, actively maintained router with native support for the latest Kubernetes Gateway API. While the community-maintained ingress-nginx controller has faced shifting support timelines and maintenance freezes over the years, Traefik remains heavily supported and forward-compatible. It even features a dedicated migration provider that can natively translate existing Nginx Ingress annotations, allowing teams to transition away from legacy Nginx setups smoothly.

Comparison of open-source Nginx and Traefik. When pods scale, Nginx's free version reloads and drops active connections, while Traefik watches the Kubernetes API and updates routes in real time. For TLS certificates, it is certbot or cert-manager versus built-in Let's Encrypt. For Gateway API and upkeep, it is ingress-nginx's shifting support timelines versus Traefik's native support and a provider that translates Nginx Ingress annotations.

Both MariaDB and Traefik have been running in production at University of British Columbia since January 2026 there’s not been so much as a hiccup. I definitely will not look back.