u/tasrieitservices

Thought this was gonna be a normal Tableau Server upgrade and it turned into a full region migration under pressure.

We were moving from Tableau 2023.3 to 2025.3 while rebuilding the environment in another AWS region because the original region situation started becoming unstable.

Honestly the thing that caught us off guard wasnt even Tableau itself. It was all the small stuff around it.

The old server was running Amazon Linux 2 which newer Tableau versions dont support anymore, so inplace upgrade was dead from day one. We had to build a parallel environment and slowly validate everything before cutover.

The weirdest part was restore initially kept failing and for sometime we genuinely thought the backup was damaged. Turned out to be related to the identity service changes in newer Tableau versions.

Final cutover itself only took few mins after DNS switch. Preparation took way longer then expected.

Curious if anyone else here has done big version jumps recently from older Tableau environments. Did you hit anything unexpected during restore or identity migration?

Wrote some notes during the migration if anyone finds it useful:
https://tasrieit.com/blog/tableau-server-upgrade-2023-to-2025-aws-region-migration

reddit.com
u/tasrieitservices — 7 days ago

What’s the one repetitive admin task in your business that eats the most time each week? Trying to map where UAE SMBs are losing the most hours.

I run a business in Dubai and we were losing 15 hours a week just on invoice processing and document approvals. Curious if others are dealing with the same. What’s the one task your team does repeatedly that you wish you could just make disappear?

reddit.com
u/tasrieitservices — 12 days ago

Just wrapped an Airflow 2.8 to 3.1 migration on EKS for a client. 18 DAGs, 6 weeks, zero downtime. Posting from our company account, I'm Amjad, founder of Tasrie. Happy to answer technical stuff in comments or DMs.

The DAG code changes were almost nothing. About 2 days of work:

# Out
from airflow.contrib.operators.ssh_operator import SSHOperator
from airflow.operators.dummy_operator import DummyOperator
from airflow.utils.db import provide_session

# In
from airflow.providers.ssh.operators.ssh import SSHOperator
from airflow.operators.empty import EmptyOperator
from airflow.utils.session import provide_session

Plus schedule_interval to schedule. Ruff with --select AIR301,AIR302 --fix caught 80% of it automatically.

The infra was the real work. Key decisions:

  • Green field over in-place. Old metadata DB had years of drift. Fresh cluster + DNS cutover beat nursing a schema migration.
  • KubernetesExecutor, no Celery, no Redis.
  • 2 schedulers with pod anti-affinity. HA is finally native in 3.x.
  • Triggerer as StatefulSet, capacity 1000 for deferrable sensors.
  • Git-sync sidecar, SSH on port 443 to bypass corp firewalls.
  • EFS for DAGs. EBS RWO breaks the moment you have a second node.

Stuff that surprised me:

  • Webserver command is now api-server. Wasted an hour before I caught it.
  • DAG processor as a separate process actually works. No more heavy top-level imports stalling the scheduler.
  • LDAP gotcha: FAB auth manager still gives you the old Flask login page, not the new Airflow 3 UI. Functional but ugly. There's an open discussion in apache/airflow about a native LDAP auth manager but nothing shipped.

Two things I'm curious about:

How are you sizing the dag-processor vs the scheduler? Same pod or split out?

Anyone running Airflow 3 with non-FAB auth that handles LDAP or SAML cleanly?

Full writeup with all the manifests, RBAC, EFS storageclass, and pod template is here: https://tasrieit.com/blog/upgrade-airflow-2-to-3-kubernetes-migration

Airflow 2 EOL is April 2026. If you're still on 2.x, it's less scary than it looks.

reddit.com
u/tasrieitservices — 16 days ago