Home / Tracks / Advanced

Advanced

Deep dives for experienced engineers: internals, tuning, scale and design trade-offs. 271 posts.

Azure

27 posts

Azure / How-to

Optimization: Azure Firewall policy clean-up, SKU choice and cost control

Firewall policies collect years of one-off rules, and every environment runs a Premium firewall around the clock. Use Policy Analytics and logs to find unused and overlapping rules, restructure collections with IP Groups, match the SKU to the features you use, and deallocate non-production firewalls out of hours.

4 min readAdvanced

Azure / How-to

Transformation: from self-managed hub-spoke to Azure Virtual WAN

When and how to move a customer-managed hub-spoke network to Azure Virtual WAN. Compare the models, design hubs and routing intent, migrate spokes and branches in phases, and avoid the routing surprises that cause outages.

3 min readAdvanced

Azure / Runbook

AKS node is NotReady: diagnosis and recovery

Find out why a node went NotReady (resource pressure, kubelet, network or a VMSS problem) and recover it safely without losing workloads.

3 min readAdvanced

AWS

31 posts

AWS / How-to

Advisory: designing AWS guardrails - SCPs, RCPs, declarative policies, proactive and detective controls

AWS Organizations offers several kinds of guardrails that work at different points. Map each control objective to the right mechanism - SCPs for what principals may do, RCPs for who may access resources, declarative policies for service configuration, proactive hooks at deploy time and detective rules after the fact - then roll them out safely and handle exceptions.

3 min readAdvanced

AWS / How-to

Advisory: designing for Availability Zone failure on AWS - static stability and zonal shift

Multi-AZ on paper often fails in practice because recovery depends on launching new capacity or calling control-plane APIs during the event. Design for static stability - pre-provisioned capacity, data planes that keep working, health checks that detect partial failures - and practise moving traffic away from an impaired zone.

3 min readAdvanced

AWS / How-to

Transformation: on-premises Hadoop to Amazon EMR with an S3 data lake

Move HDFS data and Spark/Hive jobs from an on-premises Hadoop cluster to Amazon EMR and S3. Separate storage from compute, copy data with DistCp or DataSync, move the Hive metastore to Glue Data Catalog and run jobs on transient or serverless compute.

3 min readAdvanced

AWS / Troubleshooting

EKS worker nodes not joining the cluster

Fix nodes that launch but never appear in kubectl get nodes, by checking the node role mapping or access entries, endpoint reachability, bootstrap and the VPC CNI.

3 min readAdvanced

OCI

30 posts

OCI / Troubleshooting

OKE: nodes NotReady and pods stuck Pending

Troubleshoot Oracle Container Engine for Kubernetes worker nodes that don't become Ready and pods that won't schedule, from security rules and capacity to pod networking IPs.

2 min readAdvanced

Data Platform

47 posts

Streaming & CDC / How-to

Optimization: Kafka producer and consumer tuning for throughput and latency

Most Kafka performance problems are client settings, not broker size. Measure where time goes, tune producer batching, linger and compression, keep idempotence and acks safe, tune consumer fetch and poll settings, scale consumers to partitions and check the broker side last.

3 min readAdvanced

Databricks & Spark / How-to

Transformation: Cloudera/Hortonworks Hadoop to a Databricks lakehouse

Plan the move from CDH/HDP/CDP clusters to Databricks on Azure or AWS. Map every Hadoop component to its lakehouse equivalent, migrate data to Delta, convert Hive/Impala SQL and Spark jobs, replace Oozie and Ranger, and run both in parallel before switching.

3 min readAdvanced

Streaming & CDC / Runbook

Transformation: migrate a Kafka cluster from ZooKeeper to KRaft

Move a production Kafka cluster off ZooKeeper before ZooKeeper support disappears. Pre-checks, deploying KRaft controllers in migration mode, moving brokers, finalising, and the rollback window you get before finalisation.

2 min readAdvanced

Warehouses / Runbook

Transformation: Teradata or Netezza data warehouse to Snowflake

A practical migration plan from an appliance data warehouse to Snowflake. Inventory and usage analysis, schema and SQL conversion, historical data transfer, rebuilding loads, testing with reconciliation, cutover of BI tools and decommissioning.

2 min readAdvanced

Databricks & Spark / How-to

Databricks tenant-to-tenant migration: strategy, scope and approach

Plan a move of Azure Databricks (or a Databricks account on AWS) from one tenant or account to another after a merger, divestiture or tenant consolidation. Covers why workspaces can't simply be moved, what has to be rebuilt versus copied, the target design, phases and the main risks.

3 min readAdvanced

Databricks on Azure

26 posts

Databricks on Azure / How-to

Refreshing test environments with Delta deep and shallow clones on Databricks

Use shallow clones for fast, cheap test copies and deep clones for independent copies, refresh them incrementally, mask sensitive columns, keep them inside Unity Catalog permissions, and avoid the shallow-clone trap where VACUUM on the source breaks the clone.

4 min readAdvanced

Databricks on Azure / Checklist

Databricks Runtime 18 query results that changed in 2026 - NATURAL JOIN case matching, LATERAL EXPLODE nulls and windowed min/max on binary columns

Several 2026 fixes in Databricks Runtime 18 change query results rather than throwing errors - NATURAL JOIN now matches columns case-insensitively, LEFT JOIN LATERAL with EXPLODE keeps rows it used to drop, and windowed min/max on BinaryType columns now returns per-frame values. Find the queries that could be affected and decide whether to accept the new results.

3 min readAdvanced

Databricks on Azure / Troubleshooting

DStream jobs fail to recover from checkpoint after the July 2026 Databricks update - setting spark.streaming.checkpoint.allowedClasses

Since the 24 July 2026 maintenance update for Databricks Runtime 18 LTS and 18.2, legacy DStream jobs that put custom or third-party types in closures must list those classes in spark.streaming.checkpoint.allowedClasses before checkpoint recovery. Find the classes, set the config, and plan the move to Structured Streaming.

3 min readAdvanced

Databricks on Azure / How-to

Advisory: networking for Databricks serverless on Azure - network connectivity configs, private endpoints and egress control

Serverless compute runs in Databricks' account, not your VNet, so classic VNet injection rules don't apply. Use network connectivity configurations for stable egress identities and private endpoints to your resources, control outbound access with serverless network policies, and design firewall rules on storage and other services around them.

2 min readAdvanced

Databricks on Azure / Runbook

Transformation: upgrade from the Hive metastore to Unity Catalog with UCX

Move tables, permissions, jobs and code from the workspace Hive metastore to Unity Catalog using Databricks Labs UCX. Assessment, group migration, storage credentials and external locations, table upgrade, code changes and cutover.

3 min readAdvanced

Databricks on Azure / How-to

A Delta lakehouse blueprint for Azure Databricks: catalogs, medallion layers, loading patterns and data products

A reusable design for a Delta lakehouse on Azure Databricks. Covers how to lay out Unity Catalog catalogs and schemas, what belongs in bronze, silver and gold, standard loading patterns (append, MERGE, SCD2, snapshot), table settings, data quality, compute per workload, and how to publish gold tables as governed data products.

7 min readAdvanced

Databases

57 posts

SQL Server / Troubleshooting

Access violation and dump files when querying sys.dm_exec_requests during database recovery - SQL Server 2026 updates known issue and trace flag 4696

Since the September 2026 SQL Server updates, querying sys.dm_exec_requests while a database is recovering (after a restart or failover) can raise an access violation and write a dump. Monitoring tools trigger it most. Choose between trace flag 4696, pausing those queries during recovery, or removing the update.

3 min readAdvanced

SQL Server / How-to

Run job B only after job A succeeded today: table-driven SQL Agent job dependencies

Agent has no built-in dependency between jobs, so people chain them with sp_start_job or guess at schedule gaps. Instead, keep dependencies in a table and add a gate step that checks predecessors succeeded for today's batch. Each job can then wait, skip or fail, and the whole chain is visible in one query.

3 min readAdvanced

Oracle / Runbook

Transformation: Oracle to PostgreSQL with Ora2Pg, from assessment to cut-over

Move an Oracle schema and its data to PostgreSQL (self-managed, Azure Flexible Server or RDS/Aurora). Estimate effort with the Ora2Pg report, convert schema and PL/SQL, load data, and handle the differences that cause most bugs. Then run a parallel validation before switching.

3 min readAdvanced

Oracle / Runbook

Transformation: upgrading Oracle 19c to 23ai with AutoUpgrade

Use AutoUpgrade to analyse, fix up and upgrade 19c databases to 23ai, including converting non-CDBs into PDBs. Covers the config file, the analyze, fixups and deploy modes, restore points for fallback, and the checks to run after the upgrade.

3 min readAdvanced

SQL Server / How-to

Who changed that job? Auditing SQL Agent job changes with SQL Server Audit

SQL Server Agent records that a job changed but not who changed it or what changed. Use a database audit specification on msdb's job procedures to capture who did it, keep script snapshots to capture what changed, and know the limits of triggers on msdb tables.

3 min readAdvanced

SQL Server / How-to

Cross-cloud transformation: Amazon RDS for SQL Server to Azure SQL Managed Instance

Move databases from Amazon RDS for SQL Server to Azure SQL MI, for example after a consolidation decision or an acquisition. Covers native backups from RDS to S3, copying to Azure Blob Storage with azcopy, restoring with Log Replay Service, TDE and identity considerations, and cutover.

3 min readAdvanced

SQL Server / How-to

Minimal-downtime SQL Server migration to AWS with AWS DMS full load + CDC

Use AWS Database Migration Service to copy SQL Server data to RDS or EC2 and keep it in sync with change data capture until cutover. Covers source prerequisites (MS-CDC or replication), schema-first approach, task settings for LOBs, validation, monitoring latency and cutover.

3 min readAdvanced

SQL Server / How-to

When RDS isn't enough: moving SQL Server to Amazon RDS Custom for SQL Server

RDS Custom gives a managed SQL Server with OS and sysadmin access for apps that can't run on standard RDS. Covers when to choose it, prerequisites, the shared responsibility model, migrating with native backups, automation pause for customisations, and HA.

3 min readAdvanced

PostgreSQL / How-to

PostgreSQL high availability with Patroni, etcd and HAProxy

Build a three-node PostgreSQL cluster with automatic failover using Patroni and etcd, route clients with HAProxy or a VIP, choose synchronous mode settings, and run switchovers and health checks.

2 min readAdvanced

AI & GenAI

53 posts

AI & GenAI / How-to

Lessons from the 29 September 2026 Azure OpenAI incident in Sweden Central - multi-region failover with API Management and sensible retries

For about six hours, Azure OpenAI and Foundry requests in Sweden Central failed intermittently. The incident review recommends retries with backoff, BCDR planning and granular monitoring. Put a second region behind API Management with a circuit breaker, keep retries bounded, and measure per-backend error rates.

4 min readAdvanced

Vector Databases / Runbook

Re-embedding a vector index when the embedding model retires - a zero-downtime switch with dual indexes and a recall check

Vectors from different embedding models can't be mixed, so when an embedding model retires (Cohere embed v3 on Foundry is deprecated in November 2026 and retires in February 2027) every document must be re-embedded. Build a second index in parallel, compare retrieval quality on a test set, then switch the query path in one step.

4 min readAdvanced

AI & GenAI / How-to

Optimization: getting more from GPUs when fine-tuning - mixed precision, batch sizing, data loading and checkpoints

Fine-tuning jobs often leave GPUs idle while waiting for data or wasting memory on full precision. Profile utilisation first, use bf16 mixed precision, size batches with gradient accumulation, enable gradient checkpointing and parameter-efficient methods when memory is tight, fix the data loader, and checkpoint so spot or preempted capacity is usable.

2 min readAdvanced

AI & GenAI / How-to

Optimization: sharing GPUs on Kubernetes - MIG, time-slicing and bin packing for small models

Small models, embedding services and dev notebooks often use a fraction of a GPU while holding the whole device. Measure real GPU use, partition supported GPUs with MIG for isolation, use time-slicing where isolation isn't needed, pack workloads with node pools and autoscaling, and keep large models on dedicated GPUs.

2 min readAdvanced

Vector Databases / Runbook

Transformation: consolidating a standalone vector database into PostgreSQL with pgvector

Small and medium RAG workloads often run a separate vector database next to a PostgreSQL that already holds the metadata. Moving vectors into pgvector removes a system to operate and enables joins and transactional updates. Check the fit, design the table and HNSW index, bulk load, verify recall and switch reads.

4 min readAdvanced

AI & GenAI / How-to

Transformation: extending an existing MLOps platform to support LLM applications

Teams with a working MLOps platform for classic models don't need a second platform for LLM apps. Reuse the registry, pipelines and monitoring, and add what's missing - prompt versioning, evaluation datasets and judges, tracing, and token cost tracking - with a release gate that works for both.

3 min readAdvanced

AI & GenAI / How-to

Transformation: from a single-prompt workflow to a bounded agent using MCP tools

An incident-summary script that pastes logs into one prompt hits limits fast. Turn it into a bounded agent that fetches what it needs through MCP tools. Start read-only, cap steps and tokens, log every tool call, require approval for actions, and compare results against the old workflow.

3 min readAdvanced

AI & GenAI / How-to

Transformation: from long prompts to a LoRA fine-tuned small model for a narrow task

When a high-volume task needs a long prompt full of rules and examples on a large model, a small model fine-tuned with LoRA can match quality at lower latency and cost. Decide if fine-tuning is the right fix, build a training set from logged outputs, train with PEFT, evaluate against the prompt baseline and serve adapters with vLLM.

3 min readAdvanced

AI & GenAI / Runbook

Transformation: moving models from hand-built GPU VMs to managed inference endpoints

Models served from a GPU VM with a Flask app and a cron restart are fragile and hard to scale. Move them to managed online endpoints for health checks, autoscaling, blue/green deployments and built-in monitoring. Package the model, define the deployment, test, shift traffic gradually and retire the VMs.

3 min readAdvanced

AI & GenAI / How-to

Transformation: moving self-hosted LLM inference from FP16 to FP8 or INT4 quantized models

Serving open-weight models at FP16/BF16 uses the most GPU memory per request. Quantizing weights (and optionally the KV cache) to FP8 or INT4 can fit a model on fewer GPUs or serve more concurrent users. Pick the scheme your GPUs support, quantize or use a pre-quantized checkpoint, evaluate quality, load test and roll out behind the gateway.

3 min readAdvanced

AI & GenAI / How-to

GPU capacity and model quota planning: sizing, reservations and headroom

Plan capacity for GenAI before it becomes an outage. Covers estimating tokens per minute from user numbers, sizing pay-as-you-go quota versus provisioned throughput, sizing self-hosted GPUs from memory and throughput, cloud GPU quotas and reservations, and monitoring headroom.

3 min readAdvanced

AI & GenAI / How-to

Highly available self-hosted LLM inference on Kubernetes

Run vLLM model servers on Kubernetes without single points of failure. Covers multiple replicas across zones, readiness probes that wait for the model to load, PodDisruptionBudgets, autoscaling on queue depth, fast model loading, and rolling updates that keep capacity.

4 min readAdvanced

Vector Databases / How-to

Vector index DR: rebuild from source, restore a snapshot, or replicate?

Choose a DR strategy for vector indexes by comparing rebuild time, snapshot restore and continuous replication. Includes how to estimate rebuild time from embedding throughput, snapshot commands for common engines, and keeping the embedding model version consistent.

3 min readAdvanced