This series of posts shares hands-on feedback on French PaaS providers, with one problem in mind: hosting a fleet of 120+ WordPress sites.
In this series:
- Part 1. Background to the French PaaS comparison
- Part 2. PaaS comparison: OVH falls overboard
- Part 3. PaaS comparison: Clever Cloud,
the boat is taking on waterthe captain rights the ship - Part 4. PaaS comparison: Scalingo stays afloat
- Part 5. PaaS comparison: Platform.sh lies at anchor
- Part 6. PaaS comparison: Hidora, the Swiss cloud
- Part 7. PaaS comparison: performance, Clever Cloud VS Scalingo VS Hidora
Clever Cloud
Update, January 2021: during 2020, Clever Cloud changed its database pricing, which considerably reduces the costs I talked about in this post.
What’s more, after a new performance test using the same project as in December 2019, default performance is much better than before (see the update to PaaS comparison: performance, Clever Cloud VS Scalingo).
Skip to the summary if you’re in a hurry
Clever Cloud is another French PaaS that kept popping up in my Twitter timeline whenever people asked where to host their projects. So I was keen to try it out.
On paper, the offering is sexy: vertical and horizontal (auto)scaling.
The database
When you sign up, first bad surprise: the database is billed by the full month, and it can’t be scaled yet, either automatically or manually, though that should change (soon).
| Clever Cloud | Scalingo | |
|---|---|---|
| Max connections | 75 | 62 |
| Max DB size | 5 GB | |
| Memory | 1 GB | 1 GB |
| Type | Dedicated | Dedicated (Software + RAM) |
| CPU | 1 vCPU | Shared |
| Price | €14.4/month (billed by the minute) |
Another red flag: Clever Cloud openly nudges you toward PostgreSQL, since for strictly equivalent resources, database containers are more expensive for MySQL.
We’re talking about a difference of €180 +€54 a year.
They justify the difference by saying that a MySQL instance costs more to run than PostgreSQL, and their tech team prefers maintaining PostgreSQL.
For a Symfony application, switching to PostgreSQL makes no difference to me (or almost…), but with WordPress, we have no say in which database the CMS supports. So in the end, it’s the user who pays the extra cost.
EDIT 12/20 Apparently, they’re reworking the pricing of their database scalers. That’s now done, hence this update to the post.
Configuring the application on Clever Cloud
As with any application hosted on a PaaS, you go through the “environment variables” step. At Clever Cloud, it’s not very convenient. When I ran my tests a few weeks ago, there was no way to edit or add variables in bulk. When you have 20 variables to enter, what a waste of time! Fortunately, that was fixed recently with the addition of a bulk edit/add.
You can’t reference another variable (e.g. DATABASE_URL=$MYSQL_ADDON_URI), which is a shame.
Next, I wanted to deploy my WordPress. Unfortunately I couldn’t, because a dependency (wp-cli) required the PHP extension ext-readline, which wasn’t available on Clever Cloud.
I had to ask support, and as luck would have it, it was a Friday, so no production release possible before I left on vacation.
NB (not aimed at Clever Cloud): this absurd policy has to stop. I fully agree with the tweet below: at our company, Friday is a day like any other for deployments, because we made sure it would be (tests, automation, reviews…).
"No deploys on friday" is cancer philosophy that enforces fear to deploy and slow down the dev cycle. Stop repeating this crap as if it's cool, and improve processes and tests, for god's sake.
— SergiGP 🎗 (@SergiGP) December 19, 2018
When I got back from vacation, I still couldn’t build because of a mix-up: “the feature is enabled but not the extension”. Anyway, it came through a few hours later: the application could finally be built.
Building the application on Clever Cloud
So, how do you build on their platform?
Since the project has a composer.json, the PaaS fetches the dependencies automatically. But we build the theme with a yarn build task, so we need to be able to run a yarn install followed by a yarn build.
And that’s where it gets awkward, because it can’t work out “OK, I see a yarn.lock, so I’ll also run a yarn install && yarn build”. So you have to go through a Build Hook.
You set a variable telling it to use yarn as the package manager, then you tell it which commands to run and at which point of the build, for example: CC_POST_BUILD_HOOK="yarn install && yarn build"
Note that WordPress wasn’t detected automatically: I had to create a file named php.json in a .clevercloud folder so the router would know what to serve:
{
"deploy": {
"webroot": "/web"
},
"configuration": {
"pm.max_children": "20"
}
}
Performance at Clever Cloud
EDIT 01/21 The new pricing policies, along with many hardware/software improvements (datacenter migration + a better reverse proxy written in Rust), have let Clever Cloud drastically right the ship compared with the tests run in December 2019.
So the price gap is narrowing. My tests from January 2021 show that you no longer have to spend 5 to 9 times more money to get performance similar to one of its main competitors, Scalingo. It’s now closer to a x2 ratio. In other words: on our WordPress setup, Scalingo matches Clever Cloud’s performance for half the price.
Example: I send 5 unique visitors per second to the home page for 2 minutes.
For €10.8/month at Scalingo, I get an average response time of 492ms.
For €20.3/month at Clever Cloud, I get 588ms. That’s the minimum you have to spend to get similar performance.
Clever Cloud summary (TL;DR)
👎 Cons
Disastrous price/performance ratio on WordPress- Database add-on pricing:
expensive, andmonthly commitment - No database scaling
No references to other environment variables- No GitHub Server support for automatic deployment
- Interface sometimes unintuitive
- Statistics (in BETA since 2019?)
- No easy way to set
pm.max_childrenfrom the UI (e.g. through an environment variable) - EDIT 12/20 Very little openness to the PHP ecosystem: APM / monitoring (no Datadog, blackfire.io, tideways.io)
- EDIT 01/21 Good price/performance ratio
👍 Pros
- Automated backups
- Let’s Encrypt integration
- Vertical and/or horizontal auto-scaling
- Support that’s responsive when it comes to communication
- Sexy, snappy interface
- Clear log management
- A home-grown alternative to Amazon S3, for mounting persistent storage
- An optional reverse proxy (Varnish) that looks simple to manage
- EDIT 12/20 Very stable (feedback from 1+ year of hosting a project with them)
- EDIT 12/20 Multi-region support (with OVH’s help behind the scenes)
⛔️ VERDICT: ELIMINATED ⛔️
EDIT 01/21 Performance and price, the 2 problems that got Clever Cloud eliminated for our hosting needs in 2019, are now solved.