Designing a distributed microservice architecture from nothing is tricky; this article shows you how to start with the monolith then divide it into microservices.
Git tags are a simple and effective way to make sure you can keep track of the different versions of your code, and an important quality of Git's version control.