A software development technique that structures an application as a collection of loosely coupled services.