Service Oriented Architecture
- Applications built using an SOA style deliver functionality as services that can be used or reused when building applications or integrating within the enterprise or trading partners.
Service
- A logical representation of repeatable activity that has a specified outcome.
Features
- Loose coupling
- Autonomy
- Abstraction
- Re-usability
- Statelessness

Web Services
- A web service is a software system that enables machine-to-machine communication
Composition
- SOAP - Simple Object Access Protocol (XML based protocol)
- WSDL - Web Services Description Language (describes the interfaces and set of operations supported by the web service).
- UDDI - Universal Description, Discovery and Integration (provides a global registry for discovery of web services)

SOAP Protocol Extensions
WS-* is used to refer to extensions to Web Services
- WS-Security - Handles signatures and encryption
- WS-Policy - Expands on WS-Security, specifies how and who can use each web service
- WS-I - Strict practices and guidelines for interoperability of web services
- WS-BHEL - Provides a way to specify interaction between web services, such as branching and concurrent processing
Issues with SOAP
- Difficult to use
- Difficult to debug
- Difficult to build
REST
- Representational State Transfer
- Resource Identification using URI
- Uniform Interface
- Stateless Interactions
- Self-Descriptive Messages
Comparison between REST and SOAP

Micro-services
- Involves splitting a large software into multiple individual components, communicating through APIs
- Every micro-service is an independent software component by itself
Service Registration and Discovery
Registration
- Self Registration
- Third Party Registration
Discovery
- Client Side Discovery
- Server Side Discovery