Loading…
Loading…
Detailed architecture of the s2r platform, covering high-level components, network security, control/data planes, admin flows, payload handling, and
The s2r platform provides a mechanism for converting SOAP services into RESTful APIs, facilitating the exposure of legacy SOAP functionalities through modern REST interfaces. It addresses the problem of integrating SOAP-based backends with REST-oriented consumers by handling the transformation, mapping, and lifecycle management of these services.
The system is composed of several key components that interact to provide both runtime (data plane) and administrative (control plane) functionalities (source: 1) High-Level Components, 3) Control Plane vs Data Plane).
Key Components:
Apigee X handles external REST exposure, policies, and consumer authentication (source: 1) High-Level Components).Cloud Run services for both runtime and administrative functions (source: 1) High-Level Components).Cloud Run Runtime Service: Performs REST to SOAP conversion for production calls (source: 1) High-Level Components).Cloud Run Admin API Service: Manages WSDL import, CRUD operations, versioning, and publish states (source: 1) High-Level Components).Cloud Run Admin UI Service: Provides a no-code portal for administration, dashboards, and debugging (source: 1) High-Level Components).Cloud Run Worker Service / Jobs: Handles asynchronous tasks like WSDL parsing, code/model generation, spec generation, alert evaluation, and synthetic monitoring (source: 1) High-Level Components).Cloud SQL PostgreSQL stores metadata, mappings, versions, audit records, debug indexes, SMTP alert history, and synthetic monitor definitions (source: 1) High-Level Components).Cloud Storage is used for WSDL files, generated OpenAPI specs, mapping artifacts, and staging large payloads (source: 1) High-Level Components).Pub/Sub + Cloud Tasks manage background orchestration and retry mechanisms (source: 1) High-Level Components).Secret Manager stores sensitive information like SOAP credentials, WS-Security materials, and certificates (source: 1) High-Level Components).Parameter Manager handles control-plane system parameters and IAM group-role mappings (source: 1) High-Level Components).Inputs: WSDL files (for control plane), REST API calls (for data plane) (source: 4) No-Code Admin Flow, 3) Control Plane vs Data Plane).
Outputs: REST API responses, OpenAPI v3 specifications, audit/metrics/debug events (source: 3) Control Plane vs Data Plane, 4) No-Code Admin Flow).
Callers: API publishers interact with the Admin UI/API, while API consumers interact with the exposed REST endpoints (source: 3) Control Plane vs Data Plane, 4) No-Code Admin Flow).
The s2r platform operates through a separation of concerns between its control plane and data plane, orchestrated by various Cloud services (source: 3) Control Plane vs Data Plane).
The control plane is responsible for managing the lifecycle of SOAP services exposed as REST APIs. This involves several steps, typically initiated by an API publisher through the Admin UI or Admin API (source: 3) Control Plane vs Data Plane, 4) No-Code Admin Flow).
Cloud Run Worker Service parses the WSDL, auto-discovers operations and types, and performs validation (source: 3) Control Plane vs Data Plane, 4) No-Code Admin Flow).serviceKey, serviceName, default dev environment), and suggested REST method/path previews per operation (source: 3) Control Plane vs Data Plane, 4) No-Code Admin Flow).get/list/create/update/delete) with collision fallback. Path placeholders prefer matched request-schema field names (e.g., {citizenId}) when a clear candidate is present in the imported contract (source: 4) No-Code Admin Flow).enum, pattern, length, numeric bounds) are preserved into the generated OpenAPI schemas (source: 3) Control Plane vs Data Plane, 4) No-Code Admin Flow).vN) and set as active when readiness is not blocked (source: 3) Control Plane vs Data Plane, 4) No-Code Admin Flow).4) No-Code Admin Flow).Cloud SQL PostgreSQL (source: 1) High-Level Components, 6) Performance Model). WSDL files, generated OpenAPI specs, and mapping artifacts are stored in Cloud Storage (source: 1) High-Level Components).The data plane handles production REST calls and their conversion to SOAP, and vice-versa (source: 3) Control Plane vs Data Plane).
Cloud Run Runtime Service receives production REST calls (source: 3) Control Plane vs Data Plane).3) Control Plane vs Data Plane).3) Control Plane vs Data Plane).WS-Security is applied when configured (source: 3) Control Plane vs Data Plane).3) Control Plane vs Data Plane).3) Control Plane vs Data Plane).Cloud Run Runtime Service runs with a minimum of 1 instance and is configured to autoscale out (source: 3) Control Plane vs Data Plane). Runtime services are stateless, with persistent state stored in Cloud SQL. Short-lived, non-persistent in-memory read caches are used for hot mapping metadata, and parsed contract-node metadata is compiled/cached in-memory to optimize repeated conversions (source: 6) Performance Model).Cloud Run services are deployed with ingress=internal, meaning access is private only: Apigee runtime VPC -> internal LB -> Cloud Run. Cloud Run outbound traffic uses Direct VPC egress to private routes. Cloud SQL access is via private IP with IAM database authentication using service account identity. Project-level VPC peering can be configured to a central project (source: 2) Network and Security).
An API publisher can onboard a SOAP service as a REST API using the following step-by-step process via the Admin UI (source: 4) No-Code Admin Flow):
service/port/soap:address.serviceKey, serviceName, default dev environment).choice, wildcard, union/list, attributes, and polymorphic variants.get/list/create/update/delete) and are editable. For read/update/delete patterns, path placeholders prefer matched request-schema field names (e.g., {citizenId}).vN) and can be set as active if readiness is not blocked.4) No-Code Admin Flow).This section details configurable parameters and operational defaults within the s2r platform.
| Name | Type | Default | Required | Description ---