DR-000006 - Apache Kafka Usage in Inventory Storage
Overrides/Supersedes
This decision was migrated from the Tech Leads Decision Log as part of a consolidation process. The original decision record can be found here.
RFC
N/A
Stakeholders
VBar Marc Johnson Mikhail Fokanov
Contributors
Approvers
This decision was made by the Tech Leads group prior to the adoption of current decision making processes within the FOLIO project.
Background/Context
Apache Kafka should be used directly in inventory-storage for implementation of domain event pattern, which is needed for both remote-storage integration and new search module. This direct usage of Apache Kafka should be considered as a special case, as it was for data-import. Also it is special case, that storage module use more than one data storage. For search module the performance is significant. Kafka partitioning provide system with out-of-the-box mechanism for scaling out modules.
It will be one fault tolerant solution for sending notification to other applications, when data is changed in inventory-storage. This notifications allow us to make business logic segregation and avoid implementation of not related business logic in inventory module:
- Remote-storage module will start accession process based on these notifications.
- Search will need to reindex data based on this notifications, so system cannot live with missing even one update notification, because the data would be inconsistent in such case.
- In future the same notifications may be consumed by other modules (e.g. possible implementation of INN-Reach)
Assumptions
N/A
Constraints
N/A
Rationale
N/A
Decision
Apache Kafka will be used directly in inventory-storage as a special case
Implications
- Pros
- N/A
- Cons
- N/A
Other Related Resources