Service-oriented architecture (SOA) is a software design methodology based on structured collections of discrete software modules, known as services, that collectively provide the complete functionality of a large or complex software application. Each service that makes up an SOA application is designed to provide a tightly defined set of functions. As a result, each service is built as a discrete piece of code.