This is an automated email from the ASF dual-hosted git repository. yasith pushed a commit to branch feat/airavata-service-layer in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 0d2e96fd8af8e340546b57e71e5de92010308d64 Author: yasithdev <[email protected]> AuthorDate: Thu Mar 26 13:12:38 2026 -0500 docs: update README with service layer architecture, fix Dockerfile ports - README: document the 14-service architecture and transport-agnostic design - Dockerfile: remove obsolete per-service ports (all Thrift on 8930) --- Dockerfile | 26 +++++--------------------- README.md | 25 ++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index 35b7e32063..a1772a150e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -67,34 +67,18 @@ ENV JAVA_OPTS="-server \ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -f http://localhost:8930/ || exit 1 -# sharing registry service -EXPOSE 7878 -# tunnel service -EXPOSE 8000 -# tunnel service (ingress) -EXPOSE 17000 +# All Thrift services multiplexed on single port +EXPOSE 8930 # file service EXPOSE 8050 -# api service -EXPOSE 8930 -# cred store service -EXPOSE 8960 -# profile service -EXPOSE 8962 -# registry service -EXPOSE 8970 -# agent service (http) +# agent service (http + gRPC) EXPOSE 18800 -# agent service (gRPC) EXPOSE 19900 -# research service (http) +# research service (http + gRPC) EXPOSE 18889 -# research service (gRPC) EXPOSE 19908 -# monitoring +# monitoring (prometheus) EXPOSE 9097 -# rest proxy (commented out as restproxy distribution is not available) -# EXPOSE 8082 # Copy startup script COPY dev-tools/deployment-scripts/docker-startup.sh /opt/airavata/start.sh diff --git a/README.md b/README.md index 9464ae5016..978e948b4b 100644 --- a/README.md +++ b/README.md @@ -102,11 +102,34 @@ graph TB 2. Registers 9 Thrift services on a single `TMultiplexedProcessor` (port **8930**) 3. Starts background `IServer` workers after the Thrift server is ready +#### Architecture: Service Layer + Thrift Transport + +All business logic lives in a transport-agnostic **service layer** (`org.apache.airavata.service.*`). Thrift handlers are thin adapters that delegate to services via `ThriftAdapter`, translating between Thrift types and service exceptions. This decoupling enables future REST/gRPC transports without duplicating logic. + +| Service | Responsibility | +|---|---| +| `ExperimentService` | Experiment lifecycle (create, launch, clone, terminate, intermediate outputs) | +| `ProjectService` | Project CRUD and search | +| `GatewayService` | Gateway management and sharing domain setup | +| `ApplicationCatalogService` | App modules, deployments, and interfaces | +| `ResourceService` | Compute/storage resources, job submission, data movement, storage info | +| `CredentialService` | SSH/password credential management with sharing | +| `ResourceSharingService` | Resource sharing and access control | +| `GroupResourceProfileService` | Group resource profiles and policies | +| `GatewayResourceProfileService` | Gateway resource preferences | +| `UserResourceProfileService` | User resource preferences | +| `SSHAccountService` | SSH account provisioning and validation | +| `DataProductService` | Data products and replicas | +| `NotificationService` | Notification CRUD | +| `ParserService` | Parsers and parsing templates | + +Shared utilities: `SharingHelper` (sharing operations), `EventPublisher` (messaging), `RequestContext` (transport-agnostic identity). + #### Thrift Services (all on port 8930, multiplexed) | Service name | Handler | Responsibility | |---|---|---| -| `Airavata` | `AiravataServerHandler` | Public API consumed by SDKs and dashboards | +| `Airavata` | `AiravataServerHandler` | Public API — delegates to service layer | | `RegistryService` | `RegistryServerHandler` | Metadata and definitions for tasks and applications | | `CredentialStore` | `CredentialStoreServerHandler` | Secure storage and retrieval of compute credentials | | `SharingRegistry` | `SharingRegistryServerHandler` | Sharing and permissioning of Airavata resources |
