Microservices are an architecture for individual services that aim to facilitate continuous delivery and parallel development of multiple services. They differ from Service Oriented Architectures (SOAs) in scope, with microservices focusing on facilitating continous delivery and parallel development, whereas SOAs focus on flexibility at the enterprise IT level. Microservices have a messaging system that coordinates communication between different services, which is distinct from Enterprise Service Buses (ESB). The size of a microservice can vary depending on application needs, but companies like Hudl and UPS i-parcel approach it by defining a single verb for each service and ensuring teams are small enough to be manageable. Decoupling databases in a microservices environment is crucial to maintain strong cohesion and loose coupling. Due to the distributed nature of microservices, failures can occur more frequently, requiring strategies such as minimizing blast radius, circuit breakers, and monitoring frameworks to ensure meeting Service Level Agreements (SLAs). MongoDB was chosen by these companies due to its scalability, fast failovers, dynamic schema, and ability to scale-out on commodity hardware. The dynamic schema of MongoDB allows for quick adaptation to changing business environments, making it an ideal choice for companies like UPS i-parcel with rapidly evolving e-commerce rules.