http://highscalability.com/blog/2020/4/8/one-team-at-uber-is...
http://highscalability.com/blog/2020/4/8/one-team-at-uber-is...
Is the separation of a specific functionality from a wider array of functions to its own vm make it a microservice?
When does something stop being a microservice i guess?
She answered "I don't know if we have microservices, but we do have services that don't do much"
It's since then that's my definition of a microservice :)
This leftpad as a service, over HTTPS
What a wild story
The intended model is to do one thing, thus enabling surgical changes to functionality without having to rebuild everything. As long as you stick to your API contracts, you can muck around with the internals without effecting anything else.
I have this half-serious opinion that interface design is the hard (technical) part of software development, and the rest is mostly easy.
However, public interfaces are only a small part of software interfaces in total. It's getting the system's internal interfaces right that takes most of the work.
In my view, I was lumping internal/public interfaces in the same basket. I haven’t really considered public vs internal aspect of this.
There's no such thing as a micro service or a macro service (in terms of there being a perfect delineation). They're simply terms to describe certain design goals. Any given service might have several qualities that can be described as befitting a macro or a micro service.
It's all too easy to fall into the no true scotsman trap.
Essentially, "is this enough functionality to make a new service?" is the wrong question.
If there are multiple services and they all share hardware, they're not really microservices.
Nicely articulated
> If there are multiple services and they all share hardware, they're not really microservices.
You just described most microservice deployments on Kubernetes ;)
Even if we had separate cloud servers - such as EC2 on AWS - for each service, technically they are not really independent hardware.
But for the purposes of deploying, hardware capacity allocation and scaling, you can see them as such. The same goes for containers orchestrated by K8s.
A microservice architecture has weak coupling.
Need a database, use a database as it's own service, don't couple the database to the app, so if you need to scale the app horizontally you can add more replicas. If you need to scale the database vertically, you can scale the database vertically. If these are coupled, you scale only whats needed.
On top of that use the language or tool that is meant for the job. If you need something written in go, build your service with go, if you need nodejs, do it with node, etc.
Microservices don't need to be micro or small