# Dynamic Leasing * The number of shards in the cluster is completely dynamic... * numShards == numReplicas * The pod horizontal autoscaler can scale up and down based on the the CPU/Mem (or number of WFs in the system). ## Algorithm: 1) Admin assigns a unique Int `[0, maxBins]` per execution randomly. 2) Propeller starts up, creates Leases that match the number of replicas 3) It attempts to acquire all the leases. 4) As soon as it acquires one, it drops the rest and starts processing. 5) It picks up WF IDs in the range `[leaseRank * replicas, (leaseRank+1) * replicas)` 6) When autoscaler decides to scale up/down, all propellers die, start up and repeat (Using `Recreate` Deployment Strategy)