You can log your IO and as long as your functions are idempotent that should be enough info to replicate.
Assuming everything is idempotent is a tall order.
There are a lot of libraries that haven non-idempotent actions. There are a lot of inputs that can be problematic to log, too.
Assuming everything is idempotent is a tall order.
There are a lot of libraries that haven non-idempotent actions. There are a lot of inputs that can be problematic to log, too.