The concern most frequently voiced by Circle users is how the system will cope as the community grows. Through server scaling we can ensure the speed and reliability of the programme when the user load increases.
Circle Software is hosted on eleven servers in the Google Cloud Platform, each of these is referred to as an instance. Our servers are located in the asia-east1-a (Tiwan) and australia-southeast1-a (Australia) zones, where they are monitored by a service called New Relic.
Our database instances are separate from the Application Server instance to guarantee fast response times and to reduce the likelihood of a slow request interfering with other users.
MySQL is the main database. In addition we use a NoSQL called Elastic Search which is responsible for the product search, invoices, stock information and generation of reports that are related to this data – all of which you find in the Backoffice. The second NoSQL is called Redis. It is a value store that we use for internal caching and data imports when setting up a new Circle customer. The ALPHA server is used for testing bug fixes, improvements and new features. Big changes will then be tested by our customers on the BETA server, before they are pushed to the PROD server which the public use. Finally, the DEV server is where our developers work on the migration of Circle from Rails 3.2 to 4.2.
Vertical vs. Horizontal Scaling
Servers can be scaled in two ways. Either vertically by increasing the server’s capability with more RAM, CPU or disk space, or horizontally by increasing the number of servers.
At Circle we employ vertical scaling through the Google Cloud Provider Panel. We constantly monitor our server’s usage via New Relic and can manually scale our servers up during busy times, such as the Christmas period, and scale them back down when business slows. We are currenly working towards the ability to scale horozontly. This requires significant technology changes but when done will enable us to automatically add another server when load hits a certain threshold.
If you have been following our monthly System Updates blogs you will be aware that improving server performance has been a priority for our developers, and it will continue to be one.
- 94% of our requests are delivered with less than 500ms.
- Our error rate in the past 3 months is 0.00721% or 7 in 10,000.
- Our average throughput is 735 requests per minute.
- Our average response time is 272ms.
- Our Application Server has 14 instances of passenger, allowing us to serve 14 simultaneous requests.
- Since September 2017 our uptime is +99.9% (= about 4 minutes of downtime per month).
- Since May 2018 Circle customers have had more than 1 million page views per month.