Michał, a Senior Backend Dev with over 8 years of experience, explains Domain-Driven Design (DDD) by focusing on the business problem we are trying to solve, rather than technology. DDD consists of two levels: strategic and tactical. The strategic level involves finding domain experts, building a common ubiquitous language, and distilling the core domain to build a domain model of the system. On the other hand, the tactical level involves implementing business logic and technical parts in separation by using a group of patterns and relations between them. DDD can be useful in microservices by helping in finding effective boundaries between business processes and by encapsulating certain logic within services. Overall, its difficult to answer when to use DDD as it depends on many aspects, but its more suitable for situations where theres a lot of business logic and the application is complex.