There must be a balance between huge monolitic and micro-services. when there is no balance they both bad. people tends to take micro-services to the edge while isolating almost everything and at the end handling very few lines of code, creating a database for it, implementing several methods which already implemented in different micro-service etc.. sometimes it's like killing a cockroach with a big hammer. the guidelines should be clear:
DRY - don't repeat yourself. If you have several micro-services use the same methods, create a shard lib for it. Don't create databases for every micro-service. if the service is very small, try to gather few tiny services together and create database for them - it is much easier to manage. Think before creating yet another micro-service and ask the question Do I really need it here? can I do it differently ?
Good luck