by Cesare Rocchi

Trying to avoid lock-in

by Cesare Rocchi

While building my services I am trying to avoid lock-in as much as possible. I especially try avoiding to tie myself to a non portable technology.

For example I could have used Heroku. I used it in the past, it’s very cool. But it doesn’t allow to upload files. I mean it does, but storage is not permanent. The suggested way is to upload files to S3. Another dependency. You see where this is going? And what if I discover that Heroku is too expensive or there’s a better/cheaper alternative? I’d need to spend time to migrate to another platform.

There are open source Heroku clones like dokku, OpenRuko, Deis. They are all cool but they are all tools I’d need to master. Learning them would not be enough, I’d need to trust myself using them. And that requires time. The same thoughts could be applied to any similar platform like Google App Engine and the like.

So that’s why I went with portable technologies. I have VPSs on Digital Ocean and I manage them via ssh. I can’t make a seamless migration in 60 seconds but I can in about 20 minutes, and I pretty happy with it.

If DigitalOcean gets bought and shut down or if a new/better/faster data center comes out I am ready to switch without pulling my hair and without changing my application’s code.

I wasn’t like this. A few years ago I’d have chosen an Heroku-like solution hands down. Growing up I have noticed that I prefer to have a bit more control over what happens on the server side of things.