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.
This great primer for Contexts and Dependency Injection covers the need for it and a simple implementation in a Java EE environment that focuses on injecting properties.