Back in 2005, Imagine it, a consultancy, lacked a good invoicing service and set out to build one themselves. The effort resulted in the launch of the invoicing service Fakturan.nu in 2007. The passion driving the development of Fakturan.nu has always been to make invoicing as easy as possible and even fun. Since the release in 2007 Fakturan.nu has grown organically to become one of the most used invoicing services for small businesses in Sweden. Today Imagine it is a product company focused on continuously improving their services for the benefit of their customers.
Can you tell us about the Fakturan.nu infrastructure set up before you moved to Cloud 66?
Years ago, we started with a co-located server. Every time we had to do an upgrade or install something we suffered from the fear that we possibly could mess this single server up. As a small company, we have never had a dedicated role for server infrastructure and this fact only made the fear worse.
To make life a bit easier we migrated our co-located server to a VPS. The benefits we wanted were the ability to scale the server as we grew, to be able to take snapshots, and also to quickly fire up a new server in case of emergency. Things felt a bit safer but snapshots required the server to be offline for some time so it only became a tool for disaster recovery and not something that helped us in our day-to-day work. We also suffered from the outages of our cloud provider. Usually, the interruptions were brief so there was no point in moving all systems to another data center but we felt helplessly out of control over the availability of our apps. The long term solution would be to move to some kind of redundant setup (High Availability). We also wanted to outsource as much of the sysops as possible and started to look for alternatives:
+ They know Rails
- The platform felt outdated
+ Also known to make Rails hosting simple
- Didn’t support the new AWS region in Sweden
- You have to find the right partner
- The partner would need to know a lot about our services to make a redundant solution work good
- Felt outdated and unreliable
- Too complicated if we had to set up everything ourselves
We then stumbled upon Cloud 66 and it looked very promising.
+ They know Rails
+ The platform felt up-to-date
+ Flexible hosting
+ Affordable pricing
Why did you choose Maestro Kubernetes?
At first, we thought we should use the classic Rails hosting as the migration would be straightforward but the stories about Cloud 66’s own successful migration to Kubernetes got us curious. We have 6 different apps running in production and being able to run them on the same hardware would be both convenient and cost-effective. A Kubernetes cluster also felt like the right solution for our need to get higher availability and containers equally felt like the right solution for maintainability and upgradability.
How easy or complicated was the migration to Cloud 66?
The main obstacle to migrating to Maestro was to get rid of our file system dependencies. To get there we first had to do a few Rails upgrades and then migrate to ActiveStorage. We also had to level up our Docker skills and get our production images right. Here we got great support from Cloud 66 and it was reassuring to know that they had done this migration themselves successfully already.
For the database layer, we chose to use AWS Aurora and not the database service provided by Cloud 66. Fast automatic failover and file system level replication across 3 availability zones fitted in nicely with our plans to get High Availability.
Once all preparations were done (all file system dependencies migrated to ActiveStorage) the actual server migration went smoothly. We only had to migrate our database to Aurora and then switch the traffic to Cloud 66.
Now that all systems are up and running we finally feel that we have a hosting solution that is maintainable in the long run. Having all our apps running in Maestro gives us a great overview and control through the Cloud 66 dashboard. It’s wonderful how simple they make it to add Failover Groups, Load Balancers, SSL, etc.
Lastly, what are Imagine it future plans?
With everything moved to Maestro we have started to experiment with running multiple production instances side-by-side to make the rollout of new features safe and easy. We aim for a setup where we can try a new feature in a pre-production environment ourselves, then selectively route users there too, and finally, roll out the feature to everyone. We hope that this will speed up our delivery of new features so that we can focus on delivering the best possible service to our customers.