Microservices involve developing applications as suites of small, independent services that communicate via APIs. This avoids problems of monolithic architectures where all code is deployed together. Well-defined components that are independently replaceable and upgradeable define microservices. While allowing greater scalability, flexibility and continuous delivery, microservices architectures require more sophisticated infrastructure automation, monitoring and approaches to handle failures and distributed transactions across services.