Loading…
Loading…
An overview of the SOAP-to-REST conversion platform architecture, including its components, data flow, configuration, and operational constraints.
The SOAP-to-REST Central Conversion Platform is a no-code solution designed to expose internal SOAP-based backend services as modern REST APIs. It acts as a central conversion layer, simplifying the integration of legacy systems into a RESTful ecosystem.
The platform is an internal-only system. It is designed to sit behind an API gateway (such as Apigee) and an internal load balancer. API consumers interact with the generated REST APIs through the gateway, which forwards requests to the platform's runtime component. The runtime then converts the REST request, calls the appropriate internal SOAP backend, and transforms the SOAP response back into a REST response for the consumer.
API publishers use the platform's administrative interface to manage the conversion process. This involves importing a SOAP service's WSDL file, configuring the backend service URL, and allowing the platform to automatically generate the REST-to-SOAP mappings and an OpenAPI v3 specification for the new REST API.
The platform also provides built-in observability features, including dashboards, debug tracing, and audit logging. It supports versioning and rollback for each configured API service.
The platform is composed of separate control plane and data plane services running on Google Cloud Run. The control plane provides the administrative interface for managing APIs, while the data plane handles the live request/response conversions.
At runtime, a request from an API consumer flows through the API gateway and internal load balancer to the platform's runtime service, which then communicates with the backend SOAP service.
flowchart TD
subgraph "API Consumer VPC"
A[API Consumer]
end
subgraph "API Platform VPC"
B[API Gateway]
C[Internal Load Balancer]
D[SOAP-to-REST Runtime]
end
subgraph "Backend Service VPC"
E[Internal SOAP Backend]
end
A --> B
B --> C
C --> D
D --> E
E --> D
D --> C
C --> B
B --> AThe system consists of four primary Cloud Run services:
s2r-admin-ui: The control plane's web-based user interface. API publishers use this interface to import WSDLs, configure services, manage role-based access control, and view observability dashboards.s2r-admin-api: The backend API for the control plane. It handles administrative functions such as creating and updating settings, managing role bindings, updating operation policies, and activating or rolling back service versions.s2r-runtime: The data plane. This service executes the real-time conversion of REST requests to SOAP and SOAP responses back to REST. It uses a short-lived read cache for route resolution to optimize performance.s2r-worker: A service for handling asynchronous background jobs, using technologies like Pub/Sub and Cloud Tasks.The platform integrates with the Specaria licensing system. The s2r-runtime service fetches a JSON Web Key Set (JWKS) from api.specaria.io to validate a license JWT. If consented by the customer, the runtime also emits a daily heartbeat containing PII-redacted numeric metrics to the Specaria platform.
Operators must be aware of the following system-level constraints and design choices:
s2r-runtime service enforces a hard limit of 30 MB for synchronous request payloads. Requests exceeding this limit are rejected.admin, operator, and reader.NOTE
The source provides an example of IAM group naming for one tenant: SOAP-To-REST_Admin@<tenant-domain>, SOAP-To-REST_Oper@<tenant-domain>, and SOAP-To-REST_Reader@<tenant-domain>. Each tenant configures their specific group names in the platform's settings via the Admin UI or by updating the s2r_role_binding database table.
The platform includes several default runtime policies that are configurable.
| Parameter | Default | Required | Description |
|---|---|---|---|
backend timeout | 100ms | No | The timeout for requests from the s2r-runtime service to the backend SOAP service. |
retries | 2 | No | The number of times the s2r-runtime service will retry a failed request to the backend SOAP service. |
retention | 60 days | No | The retention period for platform data, such as logs and metrics. The source does not specify the data. |
IMPORTANT
System-level parameters for the control plane and the mapping of IAM groups to platform roles are managed via Parameter Manager.
Access to the platform's services is routed through a regional internal HTTP load balancer. The following table details the path-based routing rules.
| Path Pattern | Target Service | Description |
|---|---|---|
/ | s2r-admin-ui | The root path, which serves the administrative web interface. |
/admin/* | s2r-admin-api | Paths prefixed with /admin/ are routed to the control plane's backend API. |
/worker/* | s2r-worker | Paths prefixed with /worker/ are routed to the service that handles asynchronous jobs. |
/dev/*, /test/*, /prod/* | s2r-runtime | Environment-specific paths that are routed to the data plane for live request processing. |
The Admin API (s2r-admin-api) supports the following management capabilities. The source does not specify the exact endpoint paths, methods, or request/response schemas for these operations.
s2r-runtime service receives a request where the body size exceeds 30 MB.413 Payload Too Large status code.result_code=rejected and the error code S2R-RUN-0413.gcloud, terraform) returns an error.The source repository contains further documentation that provides additional context on the platform's design and implementation.
docs/architecture.md: Target architecture and data flow diagrams.docs/decisions.md: A log of technical decisions and their trade-offs.docs/plan.md: The phased implementation plan for the platform.docs/backlog.md: The prioritized feature backlog and acceptance criteria.docs/questions.md: A list of open questions and resolved decision gates, including details on the payload size limit.docs/lld/: Directory containing low-level design documents that serve as the source of truth for implementation names, contracts, and schemas.docs/rfc/specaria-platform-integration.md: A document detailing the integration with the Specaria licensing and metrics platform.