Abstract Server Definition

 

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

  1. Abstract, Not Concrete
    It describes functionality and interfaces without specifying programming languages, platforms, or runtime environments.
  2. Defines a Server Type
    Examples include:

    • RESTful API Server
    • SOAP Web Service Host
    • Message Queue Broker
    • GraphQL Gateway
  3. Describes Supported Abstract Endpoints
    These are high-level definitions of service interfaces, such as GET /customer or POST /order, without implementation details.
  4. 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.