Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php on line 6131

Deprecated: Creation of dynamic property ACF::$fields is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields.php on line 138

Deprecated: Creation of dynamic property acf_loop::$loops is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/loop.php on line 28

Deprecated: Creation of dynamic property ACF::$loop is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/loop.php on line 269

Deprecated: Creation of dynamic property ACF::$revisions is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/revisions.php on line 397

Deprecated: Creation of dynamic property acf_validation::$errors is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/validation.php on line 28

Deprecated: Creation of dynamic property ACF::$validation is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/validation.php on line 214

Deprecated: Creation of dynamic property acf_form_customizer::$preview_values is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-customizer.php on line 28

Deprecated: Creation of dynamic property acf_form_customizer::$preview_fields is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-customizer.php on line 29

Deprecated: Creation of dynamic property acf_form_customizer::$preview_errors is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-customizer.php on line 30

Deprecated: Creation of dynamic property ACF::$form_front is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-front.php on line 598

Deprecated: Creation of dynamic property acf_form_widget::$preview_values is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-widget.php on line 34

Deprecated: Creation of dynamic property acf_form_widget::$preview_reference is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-widget.php on line 35

Deprecated: Creation of dynamic property acf_form_widget::$preview_errors is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-widget.php on line 36

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-wp-migration domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php on line 6131

Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 54

Deprecated: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 828

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the rocket domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php on line 6131

Deprecated: Creation of dynamic property acf_field_oembed::$width is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-oembed.php on line 31

Deprecated: Creation of dynamic property acf_field_oembed::$height is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-oembed.php on line 32

Deprecated: Creation of dynamic property acf_field_google_map::$default_values is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-google-map.php on line 33

Deprecated: Creation of dynamic property acf_field__group::$have_rows is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-group.php on line 31

Deprecated: Creation of dynamic property acf_field_clone::$cloning is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/pro/fields/class-acf-field-clone.php on line 34

Deprecated: Creation of dynamic property acf_field_clone::$have_rows is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/pro/fields/class-acf-field-clone.php on line 35

Deprecated: Creation of dynamic property jh_acf_field_table::$settings is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-table-field/class-jh-acf-field-table.php on line 23
UpCloud

How SportMonks increased their API performance to new heights

benefit-1

About SportMonks

SportMonks started out as a company under the name Soccerema with an idea for a web-based football game, soccer to those from the US, using real match results and player information. The game needed data on all football matches, players, location, games and a lot more.

While the game itself did not get a lot of players, we received a number of questions about our data. Due to the popular demand, we developed an API to match data. This turned out to be the start of a new part in our story and how the data used for the game became the product. We pivoted to publishing and making the data available to all and so SportMonks was born.

We offer a public API to our sports data at SportMonks.com. Though we have our origins in football (or soccer), we are expanding to other sports like Formula 1 racing, Basketball, Baseball and Hockey to name a few.

With the help of a cloud hosting provider Twisted Bytes, we migrated our old servers from DigitalOcean, which struggled with the load, to a highly optimized set of cloud servers that are able to handle a lot more customers. We continue to get suggestions for ways to optimize the code and resources from Twisted Bytes. We are really happy about having chosen UpCloud and following up on their recommendation to get in contact with Twisted Bytes.

Previous challenges

When we started the API, we had built everything by using the standard way to create and manage cloud servers from the framework we use, Laravel. But when the number of customers and API requests began to increase the servers started struggling to handle it all. In an attempt to cope with the increased demand we scaled up our backend to the extreme.

We are developers not system administrators or DevOps, therefore we needed somebody with the knowledge about squeezing every bit of performance out of the cloud servers. Because simply adding more resources will not always solve the developers' problems.

After working with Twisted Bytes and UpCloud to migrate and tune our new cloud servers, it became clear that the old setup could have handled the load with better optimisation according to the size of the backend. But default setups do not provide the level of finesse required. We also needed someone who could take the time to monitor the application, the site, and the servers to see what is going on.

Test hosting on UpCloud!

Hosting on UpCloud

We are using the basic services from UpCloud: high-performance cloud servers and of course their incredibly fast storage. We have not had much need for anything else because our systems are managed by Twisted Bytes. They monitor and track the growth of usage and will tell us when rescaling or additional resources are needed. Thanks to the stable configuration, we have not needed to add, remove, or resize our cloud servers very often. As such, our service's costs are easily predictable.

Our setup consists of a load balanced set of API servers and of course a couple of hosts for the database, caching and other services. This setup enables us to adjust the backend capabilities when needed without any outages to the API. Any changes can be done fast and easy thanks to UpCloud's simple web console.

Improvements

Our switch to UpCloud helped us to focus on developing the API to include more sports such as Formula 1. We are now sure the servers are taken care of by Twisted Bytes and UpCloud. And as developers, we can trust in being able to create the cloud servers we need to deploy our applications.

Although our old setup could have been optimized better, the new servers at UpCloud are so much faster on the disk, CPU, and memory performance. We get way more requests out of the same amount of money that the migration was well worth it. UpCloud tells you about their fast disks, but what they don't tell you is that the CPUs they use are also faster than those you normally get with other cloud providers. An extra 700Mhz more per thread is something you will notice. But when your service grows big enough to need load balancing and high availability, you can either build your own environment or turn to a company like Twisted Bytes. We are very glad UpCloud recommended us to get in touch.

Future plans

At the moment we are running everything in one zone. But we are going to expand to more locations and that is going to need some global load balancing. We already have some ideas about that and are looking forward to getting it implemented.

In the long run, with the addition of UpCloud's Go API client, we would love to see support for tools like Terraform. It would make managing and documenting our servers at UpCloud even easier. In that way defining hosts would be as simple as writing a configuration file.

If you found this case study interesting

More blogs on Platform-as-a-Service
benefit-2
Platform-as-a-Service

How SportMonks increased their API performance to new heights

The new servers at UpCloud are so much faster on the disk, CPU, and memory performance. We get way more requests out of the same amount of money that the migration was well worth it.

Read More
benefit-2
Digital agencies

How Barabra took control of their cloud hosting solution

We're able to adapt to different situations much better thanks to being in full control of our software stack. The ability to activate and deactivate instances on-demand has proven very useful.

Read More
benefit-2
Software-as-a-Service

How Sitesbi raised their SLA way above industry norms

Thanks to your offerings, our SLA is almost as good as yours. Your backups are also, in our experience, the best in the market. It was love at first sight.

Read More

Ready to talk?

You can speak to an actual human from our brilliant team, no bots here.