What is microservice

Microservice can be rewrote in 2 weeks or less (Jon Eaves).

Each microservice inside an application infrastructure may be written in a language that is most suitable for the problem the microservice is solving, use libraries and instruments it needs even if other microservices use other.

Small team (see Two-pizza teams) can own one small microservice. Small teams work with small codebases are more efficient and can be easily distributed across the globe.

Microservices allows us to deliver new features faster. Although deploy and infrastructure may be a bit more sophisticated comparatively to solid application.
Microservices allows us to use resources more efficiently, manage them more agile.

How to share code between microservices:

Create packages (add them to requirements and install using pip, npm, etc.)

Copy/paste sometimes also acceptable (be relaxed about violating DRY across all services)

Microservices is for organizations where developers have a lot of freedom.

It's possible that to start from monolithic application is better idea than to use microservices, and if we will need it in future: see quote in the beginning.

Other

Single Responsibility Principle (Robert C. Martin): Gather together those things that change for the same reason, and separate those things that change for different reasons.