So you want to move everything to the Cloud including your voice / phone service? No problem, just remember one word - latency.
Latency is a measure of time delay between two points. Why is this important? Latency might not mean much when visiting a simple web page or even watching a video on YouTube (you get a "buffering" message as the video stops & starts up again), but it's a show stopper when it comes to voice / phone services in the Cloud. Image a conversation between two people at opposite ends of a cave and that's what latency can do to a Cloud-based voice service.
So before going with a Cloud-based voice solution, upgrade to a business class Internet Service Provider (ISP). Using a cable-based ISP is a recipe for disaster and will get you fired. The extra money that you spend on a business class ISP will be worth it in the end.
I've used the example that making a call using Cloud-based voice services is similar to making a call on your mobile phone - sometimes you get through, sometimes you can't connect, or maybe the call gets dropped in the middle. Why? Because you're using the Public Internet and your call is competing with everyone from a student watching Netflix to a business person accessing Salesforce.com for an application. Quality of Service becomes an issue. PSTN (the Public Switched Telephone Network) has been around for more than 100 years and is a robust, fault tolerant system for communicating with others. Your goal should be to find a way to duplicate that same level or reliability using the Public Internet.