Using a shared library to manage the cross-cutting concerns of microservices