Cloud Native and Stateless Hell Yes, Microservices May Be

Many now say that we have arrived at the trough of disallusionment regarding microservices. As with all architectures and technologies they can be and often are misunderstood and misapplied by many. Considering that a shocking amount of our industry has less than 5 years experience it is any wonder?

The trouble with hype is that it breeds this one size fits all mentality. It is the cool thing and everyone wants to do it. It doesn't matter that it might not be a good fit, the hype just bulldozes everything and all sense.

In the last couple of years it has been the turn of microservices. Even though there have been plenty of warnings about how it doesn't fit all circumstances and that you need a certain maturity with a dev ops culture to successfully pull it off, it hasn't dampened the excess enthusiasm to embrace microservices, whether it is a good fit or not - whether your organisation can realistically pull it off or not.

So now we arrive today, with an increasingly skeptical view of microservices. The hype is still there but the religious fervour seems to have broken and more and more people decry the error of our ways for ever having adopted microservices.

My feeling is that now perhaps we can have a more realistic conversation about microservices without the hype associated. Microservices are another pattern in our toolkit that can be applied under the right cirumstances.

Personally I think that Cloud Native apps, be they micro, medium or monolithic are the true winners in the last couple of years. Cloud native apps are flexible and scalable. 

Do you need microservices to scale? It depends on your size. Are you Google? Are you Facebook? Are you Twitter? These guys have serious traffic volumes, serious amounts of money and the best talent on the planet. My client has millions of daily hits on their website with API calls that reach 2 billion a month. Reasonable but not crazy numbers there. How do we scale? By being stateless. Our production apps are not huge but they are not microservices. They scale horizontally because they are stateless. Horizontal scaling existed before microservices and Docker!

Microservices are also there to easily scale your organisation. They allow teams to own services and not tread on each others toes. That clearly is a good thing and I don't think anyone disagrees with that point.

My personal opinion is that you size your applications according to your needs. Right-sized Cloud Native services should be the hype. I love Docker! That and favouring asynchronous communication over synchronous HTTP calls, but that's another blog post.