Scaleway vs DigitalOcean and deploying web apps on an ARM server

By Martin Rusev read

Sometime ago I stumbled on a popular story on Hacker News about Scaleway: a new cloud provider offering something very unique - bare metal ARM SSD servers. The vibe I got from their website and the discussion on HN was that they are targeting DigitalOcean and I decided to check it out and then benchmark the servers against similar DigitalOcean offering.

Scaleway - First Impressions

After signup you are greeted with a visually pleasing, although still rough around the edges interface. To spin a server, first you have to enter your billing information. I had a small issue with this step, because of 4 working elsewhere debit cards - it accepted only 1. Maybe this is just me and people who have credit cards instead of debit will have no problems.

The next step is adding an SSH key. Adding the key is mandatory - there is no option to login with root and an automatically generated password like DigitalOcean.

The final step is booting the server, you can choose from a list of all the popular distros and there are some "One Click" installers for popular apps like Wordpress, Ghost, Gitlab, Discourse. I am really interested in some of the apps in the "Coming Soon" section like Chromium, Android and Ubuntu Desktop.

The whole process from signup to login into my server took me around 15 minutes. One thing that could potentially slow you down is - the documentation is extensive, but there is not enough inline help or even links to the specific topic in the docs, so you have to find those manually.

One questionable decision I want to highlight - the people behind Scaleway have decided as part of their business model to charge for support. By default you are on the basic support tier which says 24x7x365 support by ticket, but they don't say when. The next payed tier is 2.99 euro/mo. for < 12 hours response time and the first reasonable support tier with < 2 hours response is 49 euro/mo. As it stands right now, the servers they provide are already in the premium range - 10 Euro for 2GB server and when you put support charges on top of that it could really gets expensive.

Installing web apps on ARM

This was my first exposure to an ARM server and I was curious to know which apps from the typical web stack are going to run without any issues. I started with the underlying infrastructure apps like databases and web servers and then moved on to specific stacks like Rails and Wordpress.

Application Status
MySQL Working
PostgreSQL Working
Redis Requires minor workarounds: https://gist.github.com/martinrusev/47b33b93c64890689ff2#file-redis-sh
MongoDB Not supported at the moment: https://jira.mongodb.org/browse/SERVER-1811
Apache Working
Nginx Working
Python Working
PHP Working
Nodejs Working
Ruby/Rails Requires workarounds: https://gist.github.com/martinrusev/47b33b93c64890689ff2#file-rails-sh

Scaleway vs DigitalOcean: Benchmarks

At the time of writing Scaleway only had 1 type of server configuration with more coming in the near future. It is a 4 core ARM with 2GB RAM. I spinned a droplet with similar characteristics on DigitalOcean and these are the results I got. For benchmarking I used sysbench. You can take a look at the detailed results in this Github repo: https://github.com/martinrusev/cloudbench

CPU


# Command
sysbench --test=cpu --cpu-max-prime=20000 run
sysbench --test=cpu --cpu-max-prime=20000 run --num-threads=4

# DigitalOcean - single threaded 
total time:                          42.4121s
total number of events:              10000
total time taken by event execution: 42.4079
per-request statistics:
     min:                                  3.80ms
     avg:                                  4.24ms
     max:                                 17.91ms
     approx.  95 percentile:               5.20ms

DigitalOcean - multi-threaded
total time:                          21.3409s
total number of events:              10000
total time taken by event execution: 85.3456
per-request statistics:
     min:                                  3.76ms
     avg:                                  8.53ms
     max:                                 23.16ms
     approx.  95 percentile:              13.02ms



# Scaleway - single threaded 
total time:                          685.5120s
total number of events:              10000
total time taken by event execution: 685.5024
per-request statistics:
     min:                                 68.52ms
     avg:                                 68.55ms
     max:                                 76.68ms
     approx.  95 percentile:              68.58ms


# Scaleway - multi-threaded
    total time:                          171.3962s
    total number of events:              10000
    total time taken by event execution: 685.4663
    per-request statistics:
         min:                                 68.51ms
         avg:                                 68.55ms
         max:                                 96.01ms
         approx.  95 percentile:              68.56ms

Disk I/O

One thing I would like to mention here. The SSD drives you are going to get on your Scaleway server are something they call - LSSD or Local SSD. These drivers are not physically attached to your server - they are mounted using via the NBD protocol(Network Block Device). I personally have no experience with NBD, but as a general rule, anything accessed on a network have at least some latency.

In this test I am using a 6GB file which should prevent caching in RAM on both servers.

# Command
sysbench --test=fileio --file-total-size=6G prepare
sysbench --test=fileio --file-total-size=6G --file-test-mode=rndrw 
    --max-time=300 --max-requests=0 --file-extra-flags=direct run
sysbench --test=fileio --file-total-size=6G cleanup

# DigitalOcean
Operations performed:  628590 Read, 419060 Write, 1340928 Other = 2388578 Total
Read 9.5915Gb  Written 6.3943Gb  Total transferred 15.986Gb  (54.565Mb/sec)
 3492.15 Requests/sec executed

# Scaleway
Operations performed:  188313 Read, 125542 Write, 401664 Other = 715519 Total
Read 2.8734Gb  Written 1.9156Gb  Total transferred 4.789Gb  (16.347Mb/sec)
 1046.18 Requests/sec executed

MySQL Load

On both servers I am using the latest version available in the Ubuntu 14.04 repositories, which is 5.5. You can get better results with MySQL 5.6, but at the time of writing it was not available in the repo.

mysql -u root -p
create database benchmark;
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=benchmark 
--mysql-user=root --mysql-password=123456 prepare

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=benchmark 
--mysql-user=root --mysql-password=123456 --max-time=60 
--oltp-read-only=on --max-requests=0 --num-threads=8 run

# DigitalOcean
OLTP test statistics:
    queries performed:
        read:                            475608
        write:                           0
        other:                           67944
        total:                           543552
    transactions:                        33972  (566.11 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 475608 (7925.50 per sec.)
    other operations:                    67944  (1132.21 per sec.)

Test execution summary:
    total time:                          60.0098s
    total number of events:              33972


# Scaleway
OLTP test statistics:
    queries performed:
        read:                            392392
        write:                           0
        other:                           56056
        total:                           448448
    transactions:                        28028  (467.07 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 392392 (6539.00 per sec.)
    other operations:                    56056  (934.14 per sec.)

Test execution summary:
    total time:                          60.0080s
    total number of events:              28028

Conclusion

Scaleway is a very intersting offering and I would definitely keep an eye of what they are going to do in the future.

In all my tests, the performance of their servers was slower compared to DigitalOcean, but this could be because they are using Network drivers(LSSD) and a 32bit ARM architecture(armv7l)

In terms of specs the Scaleway servers are vey similar to Raspberry Pi 2 and even if you don't end up deploying your apps, they could be useful for testing things that you want to on ARM and you don't have an Raspberry Pi lying around and don't want to deal with complicated emulators like Qemu

Thanks for reading and I hope you enjoyed this little Scaleway review !