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 |

Reply via email to