Research Computing Accounting Management System (RCAMS): An Inner Source Code Built with Open Source Best Practices
Description
Research computing centers need flexible accounting systems to track consumption of compute and storage resources under a cost model that allows researchers (or their groups) to purchase capacity for their workloads [1]. An effective system must: (1) bind funding sources to the Principal Investigators (PIs) who control them, (2) link those funds to specific resource allocations, and (3) retain a complete transaction history for auditing and reporting. Existing tools—such as Moab Accounting Management and the native accounting features in SLURM—do not fully capture the complex organizational structures, funding flows, and policy constraints typical of academic research environments. To address these gaps, the Partnership for an Advanced Computing Environment (PACE) at Georgia Tech is developing the Research Computing Accounting Management System (RCAMS), an open‑source Python platform engineered from first principles with contemporary software design best practices.
RCAMS features a maintainable, three‑layer architecture shown:
-
Domain Layer: Uses SQLAlchemy ORM to represent core entities (accounts, funds, resources, organizations, owners) with built‑in data integrity checks and a full audit‑logging subsystem that records every change to the database.
-
Operations Layer: Implements generic CRUD operations via a flat inheritance model centered on _OperationBase[T], where T is the domain entity [2]. This approach avoids deep class hierarchies and simplifies maintenance.
-
CLI Front‑End: Inspired by Git’s user experience, the rcams command exposes subcommands for each entity (e.g., rcams account add-storage, and rcams fund get-spending-history), ensuring discoverability and consistency.
To optimize performance—especially when auditing hundreds of thousands of records—RCAMS isolates each entity’s operations and CLI handlers into separate modules. This compartmentalization reduces import overhead and facilitates parallel development by multiple Research Software Engineers (RSEs) with minimal merge conflicts.
Quality is enforced through a comprehensive CI/CD pipeline in GitHub Actions: linting with Ruff [3], static‑typing validation with mypy [4], over 95 % test coverage via pytest [5], automated Sphinx [6] documentation deployment to GitHub Pages, and seamless issue‑tracking updates with GitHub Projects Kanban Board. Together, these practices ensure that every release is reliable, well‑documented, and immediately deployable.
RCAMS is well documented with contributor guidelines, which allows efficient onboarding for the new team members; modular design increases the parallelism in the development, greatly reduced the merge conflicts; well defined maintainer role and developer role ensure code quality; internal team working group forms a governance unit which decides the feature changs and policy enforcement.
By combining modular design, performance‑optimized architecture, and fully automated development of workflows, RCAMS empowers institutions to tailor their accounting processes, enhance transparency, and streamline resource management.
Files
USRSE'25 RCAMS Poster [FINAL].pdf
Files
(501.8 kB)
| Name | Size | Download all |
|---|---|---|
|
md5:0b4929b6a417ad40a302a5578ef17f2b
|
501.8 kB | Preview Download |
Additional details
Dates
- Submitted
-
2025-10-03
References
- [1] Aaron Jezghani et al. "Phoenix: The Revival of Research Computing and the Launch of the New Cost Model at Georgia Tech". In Practice and Experience in Advanced Research Computing 2022: Revolutionary: Computing, Connections, You (PEARC '22). Association for Computing Machinery, New York, NY, USA, Article 13, 1–9. https://doi.org/10.1145/3491418.3530767
- [2] "What Is CRUD? Create, Read, Update, and Delete | CrowdStrike," Crowdstrike.com, 2025. https://www.crowdstrike.com/en-us/cybersecurity-101/observability/crud/.
- [3] charliermarsh, "Astral Docs," Astral.sh, 2025. https://docs.astral.sh/ruff/.
- [4] "mypy 1.17.0 documentation," Readthedocs.io, 2025. https://mypy.readthedocs.io/en/stable/.
- [5] "Full pytest documentation - pytest documentation," Pytest.org, 2015. https://docs.pytest.org/en/stable/contents.html.
- [6] "Sphinx — Sphinx documentation," Sphinx-doc.org, 2025. https://www.sphinx-doc.org/en/master/.