Hi Airavata team,

I’m Ramya Vedi, proposing to containerize the Agent service for GSoC 2025.
I’ve attached my full proposal, including a workflow diagram, and
summarized key sections below. I’d appreciate your review and guidance on
two points: the correct `*airavata.storageResourceId*` value, and whether
the `*protoSourceRoot*` in `agent-service/pom.xml` should be explicitly
defined (details in Section 5).

**Keywords**: Containerization, Docker, Docker Compose, DevOps,
Microservices, Java, Maven, gRPC, MariaDB, Cloud, Scientific Workflows,
Open Source, Deployment, Kubernetes, CI/CD, Documentation

*Contributor Information*
- Name: Ramya Vedi
- GitHub: [http://github.com/RamyaVedi](http://github.com/RamyaVedi)
- LinkedIn: [
https://www.linkedin.com/in/ramya-vedi/](https://www.linkedin.com/in/ramya-vedi/)

- Email: ramyasasidara...@gmail.com
- Location: Ipswich, UK
- Time Zone: UTC/GMT+1 hour
- Current Work Experience: DevOps Engineer at Ariyath Technologies
- Education: Bachelor of Engineering in Computer Science, Anna University
(2007–2011)
- Motivation: I’m excited to contribute to Apache Airavata and grow my
open-source experience through GSoC 2025, applying my DevOps skills to
enhance scientific workflows for the community.

*Personal Background - Work Experience *
I’m a DevOps Engineer at Ariyath Technologies, where I bring hands-on
expertise to infrastructure and deployment challenges. I hold a Bachelor of
Engineering in Computer Science from Anna University (2007–2011). My
experience includes:
- Leading the deployment of over 15 containerized microservices using
Docker and Kubernetes, enhancing scalability for enterprise applications at
Ariyath Technologies.
- Implemented CI/CD pipelines with Jenkins and GitHub Actions, automating
builds and deployments for 10+ projects, reducing release cycles by 30%.
- Configured and optimized MariaDB and cloud-based databases, ensuring high
availability for production workloads—skills I applied to integrate MariaDB
with Apache Airavata’s Agent service.
- Began my open-source journey by contributing a pull request to
`first-contributions` on GitHub, igniting my passion for collaborative
development, which led me to GSoC 2025 via YouTube’s open-source insights
and Apache’s community focus.
-* Successfully containerized Airavata’s Agent service (ports 18880/9090)
with MariaDB (3306), achieving a running proof-of-concept (PoC) with
`docker ps` validation, driving my proposal to modernize Airavata’s
deployment ecosystem.*

*Skill Set*
I bring a combination of technical expertise, DevOps experience, and a
collaborative mindset to this project, ensuring I can deliver a robust
containerized deployment for Apache Airavata. My key skills include:
- Java: Proficient in Java, with hands-on experience building Java-based
applications, as demonstrated by compiling the Airavata Agent service
(`agent-service-0.21-SNAPSHOT.jar`).
- Maven: Experienced in using Maven for dependency management and builds,
resolving issues like `airavata.storageResourceId` and `proto source root`
errors in Airavata.
- Docker: Skilled in containerizing applications with Docker, creating
optimized Dockerfiles (e.g., using `openjdk:21-jdk-slim`) and managing
multi-container setups with Docker Compose, as shown by my Agent service
deployment.
- DevOps: Experienced in CI/CD pipeline automation (e.g., Jenkins, GitHub
Actions) and infrastructure optimization at Ariyath Technologies, where I
deployed 15+ microservices and reduced release cycles by 30%. Applied these
skills to troubleshoot Airavata’s deployment issues (e.g., `KeyError:
'ContainerConfig'`).
- Microservices: Familiar with microservices architecture and gRPC, used in
Airavata for inter-service communication (e.g., Agent service on port
9090).
- Collaboration and Open-Source Contribution: New to open source but eager
to learn, with an initial contribution to `first-contributions` on GitHub.
Actively engaged with the Airavata dev mailing list.
- Documentation and Communication**: Able to document technical processes
clearly, as shown by my setup steps and troubleshooting notes for the Agent
service.

*Project Progress *
*I successfully containerized the Agent service: *
- Cloned the Airavata repository, built it with Maven, and joined the dev
mailing list.
- Encountered a `proto source root` error during the build, as the
`protobuf-maven-plugin` couldn’t locate the `.proto` files. Resolved by
adding `<protoSourceRoot>${project.basedir}/../proto</protoSourceRoot>` to
`agent-service/pom.xml`, pointing to the `proto` directory. Should this
path be explicitly defined, or is a root-level build (`mvn clean install`
from the project root) the recommended approach?
- Created a `Dockerfile` using `openjdk:21-jdk-slim`, copying the JAR and
configuration files.
- Set up `docker-compose.yml` to run the Agent service with MariaDB,
configuring datasource properties and ports (18880 for HTTP, 9090 for
gRPC).
- Resolved a Spring error (`Could not resolve placeholder
'airavata.storageResourceId'`) by adding it to `application.properties` and
as an environment variable (`default-storage-id`).
- Addressed a Compose compatibility issue (`KeyError: 'ContainerConfig'`)
and a health check failure by simplifying the configuration and clearing
stale state.
- Confirmed with `docker ps`:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3312ca8e2fc0* target_agent-service* "java -Dspring.confi…" 21 seconds ago
Up 15 seconds 0.0.0.0:9090->9090/tcp, 0.0.0.0:18880->18880/tcp
target_agent-service_1
96718fa79e21 *mariadb:10.11* "docker-entrypoint.s…" About a minute ago Up
About a minute (healthy) 0.0.0.0:3307->3306/tcp target_mariadb_1


- Tested with `curl http://localhost:18880`, *receiving a 404 response*,
which verifies the HTTP server is running (as expected, since the endpoint
isn’t implemented). I plan to test gRPC endpoints next using `grpcurl`.

*Proposal Summary*
Apache Airavata facilitates scientific workflows but faces deployment
challenges due to complex dependencies. This project aims to containerize
Airavata’s core services using Docker and Docker Compose, starting with the
Agent service, to enable portable, consistent, and scalable deployments for
researchers. As a DevOps Engineer at Ariyath Technologies with expertise in
Docker, Java, and Maven, I’ve already containerized the Agent service
(ports 18880/9090) with MariaDB (3306), resolving issues like the `proto
source root` error and `airavata.storageResourceId` configuration. The
deployment was validated using `docker ps` and `curl http://localhost:18880`
(returning a 404, confirming the HTTP server is active). Over 8 weeks, I’ll
finalize the Agent, containerize the Registry and PGA services, and deliver
optimized Dockerfiles, a multi-service `docker-compose.yml`, and a
comprehensive deployment guide. This will simplify Airavata’s setup for
scientific workflows, with future steps including Kubernetes orchestration.
See Section 9 for the workflow diagram.

*Project Goals*
- Analyze Airavata Services and Dependencies: Deeply understand the
architecture, dependencies, and build process of Airavata services (e.g.,
Agent, Registry, PGA) by studying the codebase and documentation, ensuring
each service’s JAR file is correctly built using Maven. I’ve already built
the Agent service JAR (`agent-service-0.21-SNAPSHOT.jar`) and resolved
dependency issues like `airavata.storageResourceId`.
- Develop Dockerfiles for Each Service: Create optimized Dockerfiles for
each Airavata service, starting with the Agent service, using lightweight
base images (e.g., `openjdk:21-jdk-slim`). The Dockerfile will package the
JAR, configuration files, and runtime dependencies. I’ve completed this for
the Agent service, successfully building the `target_agent-service` image.
- Deploy Services with Docker Compose: Implement a multi-container
deployment using Docker Compose, integrating services with dependencies
like MariaDB, and ensuring reliable startup with health checks. I’ve
deployed the Agent service (ports 18880/9090) alongside MariaDB (port
3306), validated by `docker ps` in Section 5.
- Test and Validate Deployments: Verify functionality of deployed services
through HTTP (`curl`) and gRPC (`grpcurl`) tests, ensuring stability and
documenting configurations. I’ve tested the Agent service with `curl
http://localhost:18880` (received a 404, confirming the HTTP server is
active) and plan to test gRPC endpoints next.
- Iterate and Expand to Other Services: Extend containerization to
additional Airavata services (e.g., Registry, PGA) over the 8-week GSoC
period, refining the setup based on community feedback and creating a
comprehensive deployment guide for developers as a key deliverable.

*Planned GSoC Work Hours - Commitments*
I commit to dedicate 175+ hours to this project. I do not plan on any
personal vacations. If anything comes up, I will inform the mentor and
communicate promptly.
- **Weekdays**: 6 Hours (UTC)
- Monday and Friday: 19:30 to 00:30 UTC [Fixed]
- **Weekends**: 5 Hours (UTC)
- Saturday and Sunday: 17:30 to 22:30 UTC [Flexible]
- **Estimated Hours Per Week**: 40 hours (Weekdays: 6 hours × 5 days = 30
hours; Weekends: 5 hours × 2 days = 10 hours)
Based on circumstances, I am willing to adjust and re-plan the timing. I
will write one blog article each week to explain my progress and stay in
touch via the dev mailing list and any preferred channels like Slack or
Zoom.

Thanks for your feedback!
Ramya Vedi

Attachment: docker-compose.yml
Description: Binary data

Attachment: Dockerfile
Description: Binary data

Reply via email to