Skip to content

Migration analysis: ElastiCache Serverless readiness checks #570

Open

Description

@KIvanow

Problem

AWS launched online migration into ElastiCache Serverless for Valkey on 2026-10-21. Its prerequisites page lists source conditions that fail a migration, several of them mid-flight and permanently (a failed AWS migration cannot be restarted, only force-completed). AWS checks some at prepare time and none before the user has provisioned billed migration nodes. BetterDB's Community-tier analysis already samples the source and could tell the user before they start, whether they end up using our execution or AWS's.

Proposal

Add a serverless_readiness category to compatibility-checker.ts, emitted when the target connection is detected as ElastiCache Serverless (the AWS_SERVERLESS agent flag, or an endpoint matching *.serverless.*.cache.amazonaws.com), and also exposable as a standalone "check this source against ElastiCache Serverless" option with no target selected. Checks, with the AWS limit each maps to:

Check Severity AWS rule
Any sampled key name > 4 KiB blocking Key name limit; fails the initial load and cannot be restarted
used_memory > 32 GB on any source master blocking Memory per node limit
More than 166 masters blocking Shard limit
Source is standalone (cluster_enabled 0) blocking for the AWS tool, info for ours AWS accepts cluster-mode sources only
Source engine/version outside Redis OSS 4.0–7.2 or Valkey 7.2–8.1 blocking for the AWS tool Supported source range
PSYNC / REPLCONF renamed or absent (COMMAND INFO) blocking Replication support
Slot coverage gaps or overlaps, or a slot migration in progress blocking Slot coverage / no resharding
Scripts in the script cache (SCRIPT EXISTS on sampled SHAs, or INFO number_of_cached_scripts) warning Scripts are not replicated; reload via the endpoint or get NOSCRIPT after cutover
Pub/sub subscribers present (PUBSUB NUMSUB / INFO pubsub_channels) warning Subscribers are disconnected at cutover
Commands in the COMMANDLOG/SLOWLOG distribution that Serverless restricts (KEYS, MEMORY, OBJECT, FUNCTION, WAIT, CLIENT LIST, etc.) warning Rejected at the migration endpoint from the moment the app is redirected
Pipelining-heavy clients (from client analytics, if available) info Pipelines are serialised for the duration of an AWS migration

Restricted-command list: https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SupportedCommands.html#RestrictedCommandsRedis

Relationship to #546

#546 adds a capacity check comparing source size to target headroom. The 32 GB-per-node and 5,000 GiB-per-cache rules here are the Serverless-specific version of that; if #546 lands first, this should reuse its memory figures rather than re-derive them.

Why

It is a free-tier feature that is useful to people choosing AWS's tool, which is a larger audience than people choosing ours, and it gives the sales story a concrete hook: run the free check before paying for migration nodes. Compare page: https://www.betterdb.com/betterdb-vs-elasticache-serverless-migration

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions