In computing, virtualization refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, operating systems, storage devices, and computer network resources.
A snapshot is the state of a virtual machine, and generally its storage devices, at an exact point in time. A snapshot enables the virtual machine's state at the time of the snapshot to be restored later, effectively undoing any changes that occurred afterwards. This capability is useful as a backup technique.
The snapshots can be moved to another host machine with its own hypervisor; when the VM is temporarily stopped, snapshotted, moved, and then resumed on the new host, this is known as migration. Failover allows the VM to continue operations if the host fails, from the last-known coherent state, based on whatever materials the backup server was last provided with.
Development environment is encapsulated. Hence we can easily migrate if needed.
No need for dedicated hardware.
Can have separate versions of libraries and tools, and can also be very useful for testing.
It is often resource intensive.
With modern computers with decent configurations, this should not be a problem.
More complex project setup is needed.
There are many tools that can help us in these setups.