Over-engineering

It starts with something like:

Let’s go serverless, and build micro-services

and you could substitute many other technologies in there, whatever the flavour of the month is. Now your chosen technology is cool, I mean really cool, but we shouldn’t let the technology drive the business.

Doing something like micro-services isn’t trivial. In theory each microservice is standalone, and can be developed and maintained independently of everything else. It sounds great, the ability to maintain and update simple pieces of code without the need to release the whole system. You probably do need to run integration and end to end testing though.

Decoupling adds work. When services are decoupled, you need to allow for the asynchronicity of them, and the fact that they may be unavailable (for whatever reason). This usually means introducing some kind of queueing system, and writing orchestration code to manage that.

It’s quite possible that the additional effort in this queueing and orchestration outweighs the benefit of isolation of features that micro-services bring.

Leave a Comment