community icon indicating copy to clipboard operation
community copied to clipboard

High Throughput Compute Grid (HTC-Grid) Software Project Contribution and Onboarding

Open kirillsc opened this issue 9 months ago • 5 comments

Please note that only FINOS members can propose new projects. If you're interested in membership, see https://www.finos.org/membership-benefits#become-a-member.

Onboarding Process

Completing an onboarding of a project into FINOS requires following these 5 main steps:

  1. Describing the Contribution led by contributor
  2. Approval led by FINOS TOC
  3. Preparing for Onboarding led by contributor
  4. Onboarding completed by FINOS Infra
  5. Announcement led by FINOS Marketing

1. Describing The Contribution

This is a list of questions that need to be answered by the contributor in order to allow a new project to pass to the approval stage of onboarding.

Business Problem

Financial Services Institutions (FSIs) perform a large volume of computations as part of their daily operations, such as pricing their products, monitoring, and controlling their risk exposure. These computations are typically executed on compute grids, which are paramount components of the FSIs' infrastructure today. Historically, compute grids were running on on-premises infrastructure and these systems can be very large, complex and expensive to operate.

Market volatility and new regulatory requirements, such as FRTB and Solvency II, are driving a significant increase in compute load today. Aging on-premises infrastructure is both expensive to retain and slow to scale up. To provide better service to their customers, financial service institutions increasingly desire faster intra-day computational results, on-demand analytics, and innovation. All of these factors prompt FSIs to re-invent their computing grids and explore modernisation pathways in the cloud.

Furthermore, FSI workloads often involve a high number of short-running tasks. It is not uncommon to process more than 100 million tasks per day, with a large portion of these tasks taking less than 2 seconds to compute. These unique characteristics make many existing grid schedulers unsuitable for these workloads.

Proposed Solution

The High Throughput Compute Grid project (HTC-Grid) is a container-based cloud native HPC/Grid solution. The project provides a reference architecture that can be used to build and adapt a modern high throughput compute solution using underlying AWS services, allowing users to submit high volumes of short and long running tasks.

HTC-Grid addresses the massive computational demands by combining very high throughput scheduling (over 30,000+ submissions a second), low latency (under 300 ms) and seamless infrastructure orchestration. HTC-Grid provides uniform architecture suitable to handle large scale nightly batch workloads and intra day workloads that require near real-time response times.

By using a modular architecture made up of managed services such as Amazon EKS, Amazon DynamoDB, Amazon SQS, (or similar services from other CSPs) and the use of Spot instances, HTC-Grid is able to dynamically scale computing resources and meet the demanding requirements of FSIs.

Tentative Roadmap

Initial plan is to move existing HTC-Grid repository from AWS-Labs to FINOS.

Current State

HTC-Grid source code - https://github.com/awslabs/aws-htc-grid HTC-Grid workshop & documentation - https://catalog.us-east-1.prod.workshops.aws/workshops/6b17d1f3-419d-4c05-821f-1dd2c3488d6f

Existing Materials

If materials already exist, provide a link to them that Foundation staff can access - if it's in a private GitHub.com repositories, you should invite the finos-admin user with R/O permissions to those repositories

  • [x] GitHub / GitLab Repository (yes)
  • [x] Is Continuous Integration used? [(GitHub Actions and AWS CodePipeline)]
  • [x] Was the project ever released? [(yes)]
    • [x] If so, are releases public? [(yes)]
    • [x] And what's the latest released version? [(v0.4.3)]
  • [x] Existing Project Documentation [( https://catalog.us-east-1.prod.workshops.aws/workshops/6b17d1f3-419d-4c05-821f-1dd2c3488d6f)]
  • [x] Does the name have a registered trademark? HTC Grid is available as name, there seems to be nothing available with the same name
  • [x] Is there a logo? [no]
  • [x] High-Level Presentation prepared for Technical Oversight Committee (~15 mins) (https://www.youtube.com/watch?v=dJ0GTgz5Nrs)
  • [x] Are meetings currently held for the project? [no]
  • [x] Are meeting minutes, agenda and attendance tracked? [no]

Development Team

Maintainers

Who will be the project maintainer(s)? Provide full name, affiliation, work email address, and GitHub / GitLab username.

Name Affiliation Work Email Address Github / GitLab username
Clement Rey Amazon [email protected] clementrey-dev
Flamur Gogolli Amazon [email protected] fgogolli
Kirill Bogdanov Amazon [email protected] kirillsc

Confirmed contributors

If applicable, list all of the individuals that have expressed interest in and/or are committed to contributing to this project, including full name, affiliation, work email address, and GitHub.com username

Name Affiliation Work Email Address Github / GitLab username
Clement Rey Amazon [email protected] clementrey-dev
Flamur Gogolli Amazon [email protected] fgogolli
Kirill Bogdanov Amazon [email protected] kirillsc

Target Contributors

Describe the contributor profile (background, position, organization) you would like to get contributions from.

Project Communication Channel(s)

  • [x] Contributor to ask maintainers which communications channels they'd like to use:
  • Asynchronous
    • [x] GitHub Issues [https://github.com/finos/aws-htc-grid/issues]
  • Synchronous
    • Recurring meetings - not in scope for the contribution process

Understanding FINOS Onboarding Requirements

As a project onboarding into FINOS, you will need to familiarize yourself and your contributor team with the following materials:

Record The Contribution (FINOS Infra)

  • [x] Add project to LFX PCC

2. Approval

The FINOS Technical Oversight Committee (TOC) is responsible for approving FINOS project contributions; feel free to check their contribution principles.

If needed, the TOC will request a follow up either via GitHub Issue comments or by inviting project leads to one of their recurrent meetings.

Tasks (for FINOS Infra/TOC)

  • [x] Prioritise this issue on the TOC Backlog
  • [x] Assign this issue to @colineberhardt
  • [x] Add the ready-for-tsc label
  • [x] TOC to invite contributors to present their project
  • [x] FINOS TOC approves/rejects the contribution
  • [ ] Update project in LFX with Status="Engaged"

TOC Findings / Report

TOC to enter findings summary here.

3. Preparing For Onboarding

Before the FINOS team can onboard your project, there are a few housekeeping that need to be taken care of. These must be completed by the contributor, with help if required from the FINOS Infra.

Kick-off meeting

  • [x] Set up kick-off meeting with project leads
  • [x] Run kick-off meeting
    • [x] Walk through the checklist in part 1, ensure all the questions are answered and remove items that don't apply
    • [x] Plan presentation to the TOC

Logo / Trademarks

  • [ ] Sign the project contribution agreement to allow FINOS to act on behalf of the contributor for accounts related to the project (e.g., GitHub, domain names, social media) and to optionally manage trademark assignment
  • [x] Request logo design from [email protected] (if needed)
  • [x] The codebase doesn’t include any patent or copyright that conflicts with FINOS Governance and bylaws. (Infra team to validate with FINOS Legal team if anything important is raised)

FINOS Project Blueprint

  • [x] finos-admin is Admin of the GitHub repository to transfer
  • [x] Apply project blueprint contents - see [our docs on collaboration infrastructure] - (https://community.finos.org/docs/collaboration-infrastructure#finos-project-blueprint) - PR Sent - https://github.com/awslabs/aws-htc-grid/pull/82
    • [x] README.md file contains the sections in the README Template
    • [x] Project FINOS badge in README (incubating)
    • [ ] OpenSSF Passing Badge
    • [x] License in README
    • [x] Contributing in README
    • [x] CONTRIBUTING.md
    • [x] LICENSE (replace {} placeholders)
    • [x] Ensure that the proper project governance is in the CONTRIBUTING.md file
  • [x] All incubating criteria are checked and documented below

Add documentation here

4. FINOS Onboarding

This is performed by FINOS Infra once the three previous stages are complete, with support from the contributor and the FINOS Infra team.

Maintainers, Contributors and CLAs

  • [x] Identify other existing contributors (assuming there's a contribution history (eg Git history)
  • [x] Check if maintainers and other contributors are all covered by FINOS CLA
  • [x] Engage with FINOS Legal team to figure out what’s needed to cover all maintainers and contributors with FINOS CLA
  • [x] Reach out to contributors and employers to coordinate CLA signatures
  • [x] Invite GitHub usernames to GitHub FINOS Org
  • [x] Create <project-name>-maintainers GitHub team and invite users

Validation (only if code is contributed)

  • [x] Backup (even with screenshot) GitHub permissions of the repository to transfer
  • [x] Check GitHub repository transfer requirements:
    • [x] finos-admin has Admin to all repositories to transfer
    • [x] finos-admin ia allowed to transfer repositories out of the org
    • [x] if the repository is owned by a user (and not an org), the user must be able to transfer the repository to finos-admin
  • [x] The codebase doesn’t have HIGH or CRITICAL CVEs across direct and transitive libraries
python3 -m venv .
./bin/pip install safety
./bin/safety check --full-report -r requirements.txt

@kirillsc - All dependencies in requirements.txt are unpinned; is there any reason for that? If not, we'd recommend to follow Python best practices and pin dependencies.

  • [x] The codebase is scanned against security issues (using bandit for python, tflint for Terraform/OpenTofu files and cfn-lint for Cloudformation files)
  • [x] The codebase doesn’t have any unfriendly licenses across direct and transitive libraries
python3 -m venv .
./bin/pip install pip-licenses
./bin/pip-licenses --allow-only="ISC License (ISCL); BSD License; Apache Software License; MIT License; Python Software Foundation License; Mozilla Public License 2.0 (MPL 2.0)"

No Category X licenses found

@kirillsc - it would be great to create a GitHub Action to run this continuously, every time the requirements.txt file gets updated. Is this something you and team could work on?

  • [x] (optional - if a build system is provided) The build process runs successfully
  • [x] The codebase doesn’t include any patent or copyright that conflicts with FINOS Governance and bylaws (to be validated with FINOS Legal team)
  • [x] All incubating criteria are met (review documentation provided above)

Code transfer

  • [x] Transfer all code assets as GitHub repositories under github.com/finos
  • [x] Rename main branch to main (instead of master)
  • [x] Configure finos-admins (Maintain role) and finos-staff (Triage role) team permissions

Project Communication Channel(s)

  • [ ] Link communication channels linked front-and-center in the project README.md

Repository setup

  • [x] Enable EasyCLA
  • [x] Add project to metadata
  • [ ] Add logo to FINOS landscape
    • [ ] Create staging branch on finos/finos-landscape
    • [ ] Merge finos/metadata changes on master (will udpdate landscape.yml in finos/finos-landscape)
    • [ ] Create PR from staging branch on finos/finos-landscape
    • [ ] Review Netlify preview
    • [ ] Merge PR
  • [x] Add project maintainers emails to [email protected] list
  • [x] Add project maintainers GitHub usernames to the project-maintainers Team
  • [ ] (best effort) Update release coordinates and code namespace to include finos
  • [x] Check that CVE (and preferably static code analysis, if applicable) scanning is in place
  • [x] Enable automated dependency update, using Renovate
  • [x] Enable branch protection (Require a pull request before merging)

5. Announcement

(Lead: Project Lead and FINOS Infra team)

  • [ ] Update the contribution status to "Active" by sending another email to LF Legal Representative with the name of the project and its new status.
  • [x] Lead maintainer works with FINOS marketing to send out announcement to [email protected] , checkout announcement template at the Contribution page
  • [x] Notify FINOS marketing (@grizzwolf + finos-marketing internal Slack channel)

kirillsc avatar Apr 29 '24 08:04 kirillsc

@kirillsc - thanks for your contribution proposal! I'm going to guide you and team through the contribution process.

As next step, we'll organize a meeting with you and the team, to give you a high level walkthrough of the process and refine the checklist mentioned above.

I'll also engage with our Technical Steering Committee to ask for their approval. Thank you!

maoo avatar Apr 29 '24 08:04 maoo

@kirillsc - thanks for the contribution proposal. I see merit in this approach and what is not clear yet is the maturity / fit of this solution. Do you know any FI that is actually using it in production environment? Knowing this help steer the roadmap.

Thanks you!

brunodom avatar May 10 '24 16:05 brunodom

Approved, but please make sure the roadmap is documented. I know there are plans for the project and to extend support to the other providers but this needs to be incorporated into the roadmap

eminty69 avatar Jun 07 '24 15:06 eminty69

Great news! I look forward to working together on this project!

kirillsc avatar Jun 10 '24 09:06 kirillsc

Announcement sent, see https://groups.google.com/a/finos.org/g/announce/c/b7tAlU5rmBI.

The contribution process is completed (there are few leftovers that are in progress but they are not blockers).

Congratulations to the Amazon team, and thanks for contributing HTC Grid to FINOS!

TheJuanAndOnly99 avatar Sep 03 '24 18:09 TheJuanAndOnly99