SpellChecker.net company doesn’t only sell licenses of the application, but also provides spell-checking service. With the growth of the number of SpellChecker.net customers we faced with a necessity to start balancing the load. In scope of this post we want to share our experience how we balance the volume on our servers.
The question of load balancing became more urgent when WebSpellChecker became a part of FCKeditor 2.6.4 available for all users of the editor. And now when CKEditor 3.0 with an embedded SCAYT 2.0 is coming load balancing will play a huge role in the service provision.
On the image at the right you can see how server load varies within 24 hours (time range is based on PDT). Load is not equal during a day. As we use Amazon EC2 servers it is not reasonable to run instances and pay for an additional server time when we do not need it. But at the same time we must be sure that the number of running servers is enough to provide stable and reliable work of the service. Logic solution is to have variable number of servers running at the same time.
Though the solution is obvious – tools to implement and support it are required. At first we started the development of our own load balancing agent and instance manager. Being in the middle of the implementation we received a Newsletter from Amazon “Introducing Monitoring, Auto Scaling and Elastic Load Balancing for Amazon EC2”.
Newsletter started with “We are excited to announce the public beta of several new features for the Amazon Elastic Compute Cloud (Amazon EC2): Amazon CloudWatch, a web service for monitoring AWS cloud resources, Auto Scaling for automatically growing and shrinking Amazon EC2 capacity based on demand, and Elastic Load Balancing for distributing incoming traffic across Amazon EC2 compute instances. Together, these capabilities provide you with visibility into the health and usage of your AWS compute resources, enhance application performance, and lower costs.”
It is useful to read newsletters! After reviewing mentioned features released by Amazon we made a conclusion that it is exactly what we need for load balancing!
New Amazon features provide us with the following benefits:
1. With Auto Scaling we can ensure that the number of Amazon EC2 instances we’re using scales up seamlessly during demand spikes to maintain performance, and scales down automatically during demand lulls to minimize costs. Auto Scaling is well suited for applications that experience hourly, daily, or weekly variability in usage. So it perfectly meets our needs!
2. Thanks to CloudWatch feature we have a visibility into resource utilization, operational performance, and overall demand patterns – including metrics such as CPU utilization or network traffic.
3. Elastic Load Balancing allows us to automatically distribute incoming application traffic across multiple Amazon EC2 instances.
We have just started to use Amazon Features for load balancing and will share our experience in the next posts.