Most used design patterns for microservice architecture. Their pros, cons and when, how and why should they be used.