Now, you might be thinking that I’m all glum on microservices and in essence, my rant amounts to "stay away from microservices" - but believe me, I’m actually a microservices believer! And the reason is that we shipped and operated services at scale for more than 2 years. Nothing beats real world experience, I say.

When we built Scheduler and Brewmaster, they were actually really well structured services and we were 'doing' microservices - just that no one cared. We cared a lot more about how our REST API footprint looked like, we cared about how our domain was structured but we didn’t care if we were 'doing' microservices.

As an engineering team, we focused on the domain first, then we made sure that we designed the subsystems to be loosely coupled so that they could all be evolved individually. We wrote unit tests along with our code and then integration and system tests. We had a good CI and CD pipeline on day 1 when setting up the solution structure.

In fact, our first release was a monolith. We just didn’t have reasons to split services enough at the outset without some sort of market validation.

More importantly, we built the team with good engineers who were willing to learn - every one was interviewed by everyone else on the team, you had to pass a hands-on coding test and anyone could review anyone else’s code. Even then, when someone didn’t work out on the team, we were quick to take corrective action and part ways amicably. We were our own Dev team and Ops team and everyone was responsible for their code in production. Engineering culture’s important!

As proof that microservices really worked for us, here’s how quickly we evolved:

Public beta launch of the first service - Scheduler in 6 weeks. Feedback and validation Azure marketplace launch Refactor User and Tenant into their own services - 4 weeks Payments integration - 4 weeks Conceptualize the second service - IaaS automation on Azure - Brewmaster. Brewmaster Beta in 8 weeks Template SDK in 6 weeks supporting user uploadable templates. Redo Payment provider since the 3rd party provider we were using jacked up their processing fess - 4 weeks.