Are you able to move fast?

Recently I was in a discussion about microservices and was asked the question: “If your typical project is 2-3 months, how are you able to launch something that works, when it takes a month to even set up the infrastructure, pipelines and deployments?”. A valid question given the current state of technology.

Complexity is sexy

As engineers we love to use the new and shiny tools on the block. It’s one of the main motivations to attract talent to your project. Are they going to be work on an old pile of legacy, or are they going to have free reins to deploy cutting edge tech?

In today’s world, a new project starts and we want microservices, they need to communicate through GraphQL, there’s a event-driven MQ in the middle. You use Redis for caching, Mongo for objects, React on the frontend, all dockerized, with a deployment pipeline. You use Kubernetes, AWS, CloudFlare in and an authentication provider... You get the point.

All this complexity takes time, knowledge and effort to set up. And every new piece of technology that you add to this pile is a link in the chain that needs maintenance, deployment, has to be updated and patched and is a potential for downtime.

Give yourself constraints

It seems the tendency is there to always reach out for the whole toolkit, to design it beautifully, so that it is solid, scaleable, fun to work with and on the bleeding edge. However, it will end up being expensive and take forever to develop.

Software architecture does not exist in a vacuum. It should be tailored to the business outcome that you want to achieve.

Are you developing a robust system, that needs to be always-online, with 10 different teams working on it simultaneously, with millions of users? Then a complex architecture that supports that is probably a good choice. Do you want to get to validate if your idea works on the market? Simplify.

What is your approach? Do you default to complexity or do you go for the bare minimum that gets the job done? #engineers #microservices #architecture#complexity #mvp

Previous
Previous

Debugging is an essential skill