What are the benefits of Microservices?

Microservices break up Monolithic Architecture into standalone lightweight services that serve a single purpose.  Developer productivity is increased as teams dedicated to the single responsibility service can control releases independent of other services.  They can also control the language the service is written in.  This is helpful when certain services might benefit from being written in Python vs C#, Java or Javascript.  Microservices advocate for an event driven architecture where services are not coupled or referenced directly.  Each Microservice can publish events that can be consumed/subscribed by other services.  Containerization and Microservices go well together when designing Microservices, considering that the paradigm calls for Containers to be immutable and treated as Cattle.  New and Old versions of the same Microservice can be released side by side in an A/B pattern, helping with assurance of any updates.  Containers can host the Microservices quickly and be tested across environments with reliability ensuring all dependencies are encapsulated in the build of the running image.