In the past, we wrote about how we are migrating our software from a desktop interface to a web interface. We are also migrating our technology from Celayix-hosted computing to cloud computing.
What is the “cloud”?
In computing, “cloud” is a term for a datacentre hosted by a third party. A cloud in the atmosphere is remote, and “big.” Analogously, cloud computing involves physical computers hosted at a remote site, which offer potentially more than enough resources for us.
Why move to cloud computing?
Hosting data on our own servers does not give Celayix a competitive advantage. What our business needs is simply something to put data in and get data out. When we run stuff on the cloud, we do not know what computer our code is running on, which is good because we do not care. It costs money for us to maintain and upgrade our own hardware. There is also a risk that if our hardware fails, clients will be out of service until we get back up, so we cannot neglect these costs. By moving to the cloud, we can hand off all of these problems to a third party which does this efficiently for low cost, so that we can focus on what we do best, make the best employee scheduling software!
Another advantage is that if our customer base grows, we can get more computational power and storage immediately. The “cloud” has more than enough resources for our needs.
Who is our provider?
For general computing, we are using Amazon Web Services (AWS). AWS offers many different types of services, such as databases, storage and web hosting. For our Voice XPress product, we use Plivo, Plivo is useful because it offers text to speech software (so that we don’t have to create an in-house solution). This speeds up our development because we don’t have to manually record audio files and it further reduces our costs. Plivo interfaces with AWS.
Amazon Web Service is well known for the dedication to reliability and security of its cloud computing services. For example, AWS has data centres all over the world, with 42 Availability Zones within 16 geographic Regions. This ensures the delivery of the services and redundancy if any services should fail.
One of the primary services that we use is EC2 Instances. EC2 instance is like virtual server that runs on Amazon Cloud infrastructure. EC2 instance can be optimized and configured based on difference purpose of the server. For instance, OLAP DB, it requires frequent and rapid access to the hard drive. With this kind of intensive Disk IO operation, AWS provision SSD storage volumes that is optimized for the requirement. EC2 instance can also be configured for application with heavy ram usages.
Like any server, EC2 instance can be hit with a heavy process load and AWS employees several strategies to handle the stress, Load balancing and instance healthy check. Load balancer is going to constantly check if EC2 instance is healthy and can process user requests well as balancing the workload in between 2 or more instances. If one instance is too busy processing a request it will redirect the request to another less busy instance.
Aside for performance, Celayix also takes reliability of the service into account. By placing EC2 instances to different Availability Zones, we improve overall system reliability and fault tolerance. On top of the existing AWS built in features, Celayix also continuously monitor the system through Cloud Watch. This helps our DevOps team see up to 5 minutes instance log information, and react accordingly if there any sign of the emergency. We also perform instances and data volume snapshots, helps us protect user data from accidental loss.