Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement the batching design for position prepare messages #3489

Closed
21 of 32 tasks
PaulGregoryBaker opened this issue Aug 22, 2023 · 0 comments
Closed
21 of 32 tasks

Implement the batching design for position prepare messages #3489

PaulGregoryBaker opened this issue Aug 22, 2023 · 0 comments

Comments

@PaulGregoryBaker
Copy link

PaulGregoryBaker commented Aug 22, 2023

Goal:

As a development team working on mojaloop transfer performance enhancement
I want to Implement the transfer batching design for the position handler
so that I get the performance benefit of batching

This story is to implement the first part of this which is the prepare handler. The implmenetation design is to run old and new handlers together and use configration to and seperate kafka topics to seperate the message flows.

Acceptance Criteria:

Note
As this story will need to be resized/or checked for size after the design story is completed #3488

Complexity: <High|Medium|Low> > A short comment to remind the reason for the rating

Uncertainty: <High|Medium|Low> > A short comment to remind the reason for the rating


Tasks:

  • Add skeleton for new handler, bin processor and prepare domain function [ @vijayg10 ]
  • Implement new handler [@vijayg10 ]
  • Implement domain function: processPositionPrepareBin [@kleyow ]
  • Implement domain function: processBins [@vijayg10 ]
  • Add integration tests for happy path [@vijayg10 ] [@kleyow ]
  • Add integration tests for NDC limit and payer liquidity [@kleyow ]
  • Combine everything and execute functional tests [@vijayg10 ]
  • Add integration tests / functional tests for negative scenarios for end to end functionality [@sri-miriyala ]
  • Characterise the performance in isolation [@vijayg10 ]
  • Document the observations and difference in performance compared to non batch mode [ @vijayg10 ]
  • Sprint review - followup tasks
    • Try batchSize of 1 and document the observations
    • Check if the notifications are published before commit or after and align the design diagram according to the implementation and make sure that there will be no issue if a service dies at any point of execution - Checked the implementation, the order is like Kafka Commit->DB Commit->Send Notifications. Changed the diagrams accordingly.
    • Test a new scenarios for batching performance with a managed DB instead of local DB As we could push the CPU utilisation to 99% and got a throughput of 282 ops/sec, decided to not do this test for now
  • Create followup stories

Done

  • Acceptance Criteria pass
  • Designs are up-to date
  • Unit Tests pass
  • Integration Tests pass
  • Code Style & Coverage meets standards
  • Changes made to config (default.json) are broadcast to team and follow-up tasks added to update helm charts and other deployment config.
  • TBD

Pull Requests:

Follow-up:

  • N/A

Dependencies:

  • N/A

Accountability:

  • Owner: TBC
  • QA/Review: TBC
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants