An inspired journey into microservices architecture

Sometime this week I came across a series of blog posts by the taxi company Hailo about how their architecture has changed over time from a simple PHP/Java API to a global infrastructure with over 150 services powering their consumer and operational apps.

The three blog posts can be found here:

I love this blog post too.

I’ve been very slowly orientating my stack at work (more on that soon) to be made up of a number of discrete services, but since reading the posts above I’ve become a little bit obsessed with understanding at an even deeper level how to properly build and orchestrate a whole raft of services to power our mobile apps.

At this point I’ve come to two conclusions. First what I’ve made works really well so far and I don’t want to disrupt that unnecessarily. Also any further splitting out of application functions into individual services needs to be done at a rate which is manageable for the resources we have available at the time and also carefully because we’re about to launch our newest app into production.

My second conclusion is I really want and need to add another language to my toolbelt. I’ve worked with PHP for years now; I’m fast and effective with it but my frustration with the direction of the language vs what I want from it (namely strict scalar type hints and types), it’s lacklustre ability to run long running processes and poor concurrency support mean it’s starting to work against my needs. I’ve been playing on and off with other languages and Go and has really captured my imagination so my challenge now is to find the time to learn as much as I can about Go and if I’m confident with this new approach then appropriately introduce it into our stack.