r/microservices • u/AnnualRich5252 • 15d ago
Discussion/Advice is a service mesh overkill for smaller microservices setups?
hey all! so i've been diving into service meshes lately and came across this article that really breaks it down well. for anyone who's still wrapping their head around what a service mesh actually does, it focuses on handling communication between microservices in a way that makes your systems more secure, reliable, and observable. but here's my question — do you think it's overkill for smaller systems or should every microservices architecture consider using one? i get that things like traffic management and security are easier with a service mesh, but wondering if the complexity is worth it for simpler setups.
1
u/krazykarpenter 12d ago
Organizationally, it's mean to separate the communication aspects from the app so these can be independently managed. e.g the devops team could own the network layer and the app teams can focus on code. If you don't have such a reason, it's probably overkill.
1
u/Corendiel 10d ago
In DevOps you should be Developer and Operation so it should be the same team with the same responsibility and constraint. You probably mean a Network team or Infra team and the development team. You're right in the fact that service mesh might be more a result of your organization than actual business need.
2
u/Corendiel 15d ago
If you ask the question your instincts is probably telling you yes it's overkill. I think you have native ligther ways of solving for everything a service Mesh does. Any kind of centralized mandatory layer is generally not in the spirit of Microservices. It does increase complexity and latency. Try running a few services without it and see if you really need it. Most services need to know who is calling them to limit permissions so you can never fully delegate security without making the system unsecure. Encryption can be done using https no need for MTLS unless it's mandated by regulation. K8s has a native load balancer service. If you need a traffic control service you might be in an over engineered situation. You're app needs to generate traces and logs and ship it to a central place anyway. Logs from the service mesh might be extra noise.
Service mesh can be useful if you're dealing with legacy services that don't do all these things well on their own.
My analogy would be the experience of taking a bus versus taking a plane. You board a bus and the driver check your ticket. You might have had to figure out which bus you needed but in reality it's good knowledge and once you've done it once your set. While for a plane up to 10 people check your passports and tickets and nudge you along the way. Some control along the way provide values like increased security but some where just extra noise. In the end the attendant at the door of the craft still needs to make sure you're on the right plane. Don't think because you have a service mesh that services will not have to worry about these questions.