Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> - DB is not an obligatory part of microservices.

If the microservices don't have their own store, but are all mucking around in a shared data store, everything will be much harder. I wouldn't even call that a microservice, it's a distributed something. It can work, sure.



You misunderstand their point. Not all microservices need persistence at any level. Very often, microservices are just processing things.


Ah, I misunderstood then.


Back when I was studying CS in the early 90s, it wasn't obvious at all that I am going to work with a DB anytime in my career. I loved the subject, I passed with A*. But I thought I am not going to see it later, because I didn't plan to work for a bank or some large enterprise.

Then, in about two years, everything changed. Suddenly, every new web project (and web was also novel) included a MySQL DB. That's when the idea about the three tier architecture was born. And since then, a few generations of engineers have been raised that can't think of a computer system without a central DB.

I'm telling this because in microservices I see the opportunity to rethink that concept. I've built and run some microservices based systems and the biggest benefit wasn't technical, but organizational. Once, the system was split into small services, each with its own permanent storage (when needed) of any kind, that freed the teams to develop and publish code on their own. As long as they respected communication interfaces between teams, everything worked.

Of course, you have to drop, or at least weaken, some of ACID requirements. Sometimes, that means modifying a business rule. For example, you can rely on eventual consistency instead of hard consistency, or replenishing the data from external sources instead of durability.

Otherwise, I agree with the author that if you are starting alone or in a small team, it's best to start with a monolith. With time, as the team gets bigger and the system becomes more complex, your initial monolith will become just another microservice.


I'd see a "distributed something" that takes an input, processes it in multiple ways, possibly passing it around to some APIs or queuing it somewhere without ever needing to store it in its own dedicated area to be a good idea.

That could probably the best instance of something that can be built outside of the monolith and can be manipulated separately.


DB is needed period, unless you want to go blockchain, DHT route, which is not the way to go with most applications.


DB isn't needed. Our microservices pipeline either uses MQ, EFS or S3 for the destination for another pipeline to pick up. Unless you count those 3 as DBs ;)


Yeah I would say those are key value document based DB. Just silicon valley hipster coming up with cool names to call something different so it is a bit easier for developer to use. Anything does permeant storage are DB.


You could argue S3 is a key-value store, however ActiveMQ is a message queue, and EFS is essentially NFS.

I certainly don't agree that 'anything that does permanent storage is a DB'. Not many people would call their hard drive a 'database'

I personally think that they all have a place and are very useful tools for certain situations, depending on the problem.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: