Is this microservice? (docs.google.com)
A web frontend to receive requests. Some requests are stored in a pub/sub message broker like Kafka / RabbitMQ. Some daemons would subscribe to the broker and do some work. Any processes would have HTTP REST API call / Thrift RPC to some other functional services. Each of those functional services and daemons are load balanced.
Is this microservice?
13 comments
[ 2.9 ms ] story [ 35.8 ms ] threadIs this microservice?
Might have, not must have, of course.
To really show the merit of microservices, this must really be reflected in your drawing.
Those names are useful to communicate ideas. It is just like software patterns. It doesn't correlate to a direct implementation of the pattern, but a pattern correlates to an idea, and it is extremely useful to communicate them. Microservices are just that.
Unix programs are non-networked microservices. An LCD controller and display driver could be described as a single-function single-process non-networked microservice. It really does not matter what you call it or how it is categorized; it just is.
Better communication is great, but we don't need a new word for every idea. Especially if people get wrapped up in what counts as that word.
IMO, a micro-service does only 1 thing, does not access common data repositories and stores its own data isolated (could be same physical db server but separate db/table/catalog etc.). Additionally, at least as I see it a micro-service does its job and then pushes a new message on the queue with the results, it never talks via the network layer to anyone else for coordination or status. But of course it may send out data or make calls via the network, e.g. HTTP, SMTP etc.
You probably already know this but from reading and my experience a micro-service should only act upon data it receives in the message. Sometimes this is where people have a hard time because it means passing an entire data set with the message to make sure the micro-service has enough information to do its job. But doing so is the only way to decouple the services and get the benefits of a distributed system. If you use the database as a communication layer it will cause you all kinds of headaches and it couples the services to data structure changes which means you still are not isolated. You should be able to update any micro-service without the need to update any other service at the same time.
'''does not access common data repositories and stores its own data isolated'''
&
'''does its job and then pushes a new message on the queue with the results, it never talks via the network layer to anyone else for coordination or status'''
There should be clear separation and interfaces between the different services.
There seem to be only one database for all of the system, wich sets a strong dependency between services.
Perhaps the right question is: It this microservice enough?