I am currently researching XCP-ng hipervisor and I was wondering what are the main differences between the XCP-ng and VMware hipervisor. As far as I can see the XCP-ng does not have high availability features as advanced as VMware's. The VMware has a shadow VM for every primary VM on another host that has the a copy of RAM state of the primary VM, and when the host that is hosting the VM fails the shadow VM becomes primary and continues all operations seamlessly and we get no server down time. But on the XCP-ng on host failure the VM reboots on the other host and you have server down time of 1 to 2 minutes. Did I get that right? What are some other differences?
Almost.
vSphere does have feature called Fault Tolerance, which enables seamless host-failover through running the guest VM on all (configured) hosts.
vSphere also has a feature called High Availability, which boots all of our lost VMs in case of a host failure on other hosts in your cluster. The downtime depends on your machines boot time.
XCP-ng has HA, but not FT.
There are a lot - way too much to be answered here. XCP, for example, selects it's pools master by itself, while vmware needs the vCenter Server. Which has ton of functionality by itself. vSphere uses a near-realtime storage heartbeat and offers a lot of option for cases of host isolation, XCP has "just" VM/Host alive features. But XCP is free, while ESXi (with HA/FT/Vmotion) will cost some money.
In my personal opinion vmWare is more awesome, but costs a lot more. So I du use vSphere in business environments (for the great support) and XCP for labs, staging and projects where the money is really tight (like NGOs).