What is an Abstract Server?
An abstract server is a conceptual or logical model of a type of application server. It defines what a server of that type is expected to do, including the services it provides and the types of endpoints it supports, without tying it to a specific implementation or technology.
It serves as a blueprint for designing systems and allows architects to think at a higher level of abstraction before choosing specific tools or platforms.
Key Characteristics
- Abstract, Not Concrete
It describes functionality and interfaces without specifying programming languages, platforms, or runtime environments. - Defines a Server Type
Examples include:- RESTful API Server
- SOAP Web Service Host
- Message Queue Broker
- GraphQL Gateway
- Describes Supported Abstract Endpoints
These are high-level definitions of service interfaces, such asGET /customer
orPOST /order
, without implementation details. - Reusable in System Models
Abstract servers can be used across different system designs, acting as common building blocks.
Contexts Where Abstract Servers Are Used
Model-Driven Architecture (MDA)
In MDA, abstract servers are part of the Platform-Independent Model (PIM). Later, they are mapped to Platform-Specific Models (PSMs) that define concrete implementations.
Service-Oriented Architecture (SOA)
Abstract servers represent service hosts that define service contracts and expected behavior. Actual services are implemented separately, potentially using different technologies.
Enterprise Architecture
In frameworks such as TOGAF or ArchiMate, abstract servers are modeled as logical components that provide or consume services in the enterprise IT landscape.
Example
Abstract Server: Customer API Server
- Abstract Endpoints:
GET /customer/{id}
POST /customer
- Function: Provides access to customer information and operations
- Characteristics:
- Stateless
- Uses token-based authentication (e.g., OAuth2)
- Not Specified:
- Language (e.g., Java, Python)
- Hosting environment (e.g., AWS, on-premise)
- Actual implementation details
Benefits of Abstract Servers
- Separation of Concerns: Focus on behavior and roles without implementation constraints.
- Standardization: Reuse server definitions across multiple projects.
- Technology Agnosticism: Postpone platform decisions until later in the design process.