I have already documented my adventures in getting the service behind ConnectStats to keep up with the users increase.
The previous service was having regular glitches, was slow to process data from Garmin and limited option and flexibility for upgrades. It was time to change.
Brief History of my Hosting Providers
My first website was hosted on Yahoo Hosting, when I purchased the domain
ro-z.net back in 2005. I originally chose it because it offered
mysql/php and it enabled me to build a small web site to share photos and movies with my family in France while I was living in Japan. That was a few years away before I discovered social sharing sites that did a better job than writing the code for your family website yourself…
When I started writing my first app in 2009, the now defunct MacroDial, I leveraged the site to build the basic information and support service for the app. So of course when I started ConnectStats, I used the same site and service. The site at the time was built manually, with
html and some
2015 move to GoDaddy
In 2015, Apple introduced a new requirement in iOS 9 for app to only allow secure web requests via https. At the time Yahoo Hosting didn’t support https, and therefore I had to move away, so I went to GoDaddy which met my requirement at the time.
Note that until recently the service I required on my web page was fairly lightweight, as it mostly hosted the support and documentation pages, the blogs, and bug reporting infrastructure.
Since ConnectStats has now a full backend server with the new Garmin API requirement, I definitely reached the limit of entry level web hosting…
As I have documented in the past, I investigated AWS, serverless computing and modern approaches. Ultimately I went with Digital Ocean, because it gives me all the flexibility I need, and the pricing is very competitive and much less complicated than AWS. In my testing with AWS I ended up with a few very expensive months as setting up databases, virtual networks, etc can lead to high charges with complex pricing formula, while Digital Ocean has a very straight forward pricing.
I also always used Digital Ocean online documentation which is very generic, well written and helped me a lot in linux setup at home, so I felt it the right thing to do to switch to them.
I have been planning the switch for months. I made the necessary changes to have two servers in sync with a primary and a secondary. The new server has been up for two months now, it was running in parallel to the main server as a secondary instance.
I also added to one of the previous release of the app a check for a trigger, so I can get all the existing users to transparently switch to the new server as primary at a moment of my choosing.
I triggered the switch yesterday, and I am quite pleased to report that the planning was right and it seems to have been quite smooth so far. The new server is processing data from garmin much more efficiently than previously so far, and I have a much better controlled and more flexible environment for the future.
One small glitch I found is that for a brand new user, the trigger was not noticed at the right time in the first connection workflow, so I removed the app from the App Store until a new version appears that fixes this, hopefully today.
Whats’ in it for you, the users?
Not too much direct impact, as the best server switch is when the end user does not notice…
The main benefit for users will be that hopefully it will require less support from my time, meaning I can go back to spending my app development time to more feature on the app.
One indirect benefit is that with the new server switch I am also switching the weather provider to Visual Crossing.
What’s in it for me?
Well, while it does not include direct new feature, it has been yet another interesting learning experience for me, Digital Ocean enables you to setup the server as you wish, so I learned more about linux server setup, and I will have ability to leverage outside packages, tools, etc for the server that was impossible in GoDaddy, that provides a very pre-configured setup without much flexibility…