Folio Architectural Blueprint Strategic Changes

Folio Architectural Blueprint Strategic Changes

This page contains a list of possible Folio Architectural changes for the Folio platform which are under consideration by the Technical Council. Some of these are actively under discussion, while others are intended for a later discussion. Once architectural changes have been agreed upon they will be reflected in the actual Folio Architectural Blueprint.



Status

Category

Item

Summary

Plan

Why

"Aspirational" Timing

Related Jira

Champion

Participants



Status

Category

Item

Summary

Plan

Why

"Aspirational" Timing

Related Jira

Champion

Participants

ABI-001

Done. (Pending inclusion in release)

Platform

AES: pre- and post-filters

Reinstate mod-aes to allow transaction data streaming directly from Okapi. The current implementation depends on Okapi filter functionality.

  • Validate changes to Okapi from Jan 2019 (MODAFILT-6)

  • Deploy mod-aes to an environment and qualify

  • Provide solution for max-headers problem

  • Depends on pending auth redesign

  • Enhance mod-aes implementation as needed

  • Release mod-aes as part of build.



  • 2020-Q2 design

  • 2020-Q3 development

https://folio-org.atlassian.net/browse/MODAES-4 https://folio-org.atlassian.net/browse/MODAES-5 https://folio-org.atlassian.net/browse/OKAPI-837

@VBar

@Jakub Skoczen @Adam Dickmeiss @Matt Reno

ABI-002

Under Discussion

Multi-Tenancy

Cross-Tenancy Support

Allows selective and controlled data sharing between separate tenants in Folio. This addresses the needs of Institutions or Consortia who need to selectively share data between their member organizations. At present Folio supports only modeling as separate tenants (share nothing) or single tenant (share everything).

Draft Document (limited access)

  • Review strawman proposal from Spitfire Team.

  • Formulate a platform-level solution

    • Identify required changes from Okapi

    • Identify required changes from RMB

    • Design mod-tenant module to arbitrate access between tenants

    • TBD



TBD



@VBar

@Mike Gorrell

@Jakub Skoczen

@Craig McNally

@Adam Dickmeiss

ABI-003

Pending Discussion

Users

System and Tenant level users

Introduce the notion of tenant-level and system-level users.

  • Spike to gather requirements including related tech-debt items

  • Implement support for user classes (mod-users)

  • Retrofit solution to existing implementations that have temporary solutions: Edge APIs; mod-pubsub.

This allows operations to be performed in the context of the entire tenant (tenant-level) or the platform (system-level). Accordingly these classes of users would be protected from casual user management and provided with suitable permissions.

2020-Q3 design and development ??; 2020-Q3  released??

https://folio-org.atlassian.net/browse/FOLIO-2551



@Craig McNally

ABI-004

Under Discussion

Multi-Tenancy

Database Connectivity: tenant; interface; method

Allow database connectivity to be specified on a per tenant basis. Currently Folio only supports database connectivity to be specified at the module level

  • Create a solution proposal that allows flexibility for connectivity specification through RMB.

    • Primary goal is to provide tenant-level specification

    • Solution should allow for eventual interface-level specification as well and possibly method-level

  • Implement RMB changes to allow tenant-level connectivity

This would be helpful for load balancing database connectivity between tenants (allowing a large/busy tenant to have a separate database than other tenants for the same module).

2020-Q3 design and development??; 2020-Q4: released ??

https://folio-org.atlassian.net/browse/FOLIO-1794

https://folio-org.atlassian.net/browse/RMB-664



@spampell

@Jakub Skoczen @Mikhail Fokanov


ABI-005

Under Discussion

Platform

AuthN/Z Refactoring

Refactoring of authentication and authorization address:

  • Performance issues related to token signature/generation

  • Protocol limitations wrt header size limitation and security best practices

  • Protocol complexity and comprehensibility

Plan:

  • design a new internal Authn/z protocol (Okapi ↔ mod-authtoken)

  • Favour standard API design (RAML/JSON) implementation (handler vs filter)

  • Provide a solution with high level of cacheability

Primarily improved performance

2020-Q2 Design

2020-Q2 Development

https://folio-org.atlassian.net/browse/FOLIO-2523

@Jakub Skoczen

@Adam Dickmeiss

@Craig McNally

ABI-019

Under

Discussion

Platform

Distributed Transactions

Discussion regarding strategies for dealing with cross-module (microservice) communication that required data consistency. Including:

  • architectural patterns (eg 2PC, ES/CQRS, Saga, PM, etc)

  • examples through specific FOLIO use-cases (Acq, Circ, DI)

  • platform-level support (Okapi, mod-pubsub, etc)

  • recommended external tools/libraries/frameworks

  • error handling for async operations and eventual consistency

  • Capture representative use-cases and discuss limitations of existing implementation

  • Discuss patterns that can be used to remove the limitations

  • Propose extensions to the platform components to aid developers when implementing processed requiring DT

  • Research and proposed third party library and tools that could be integrated with the FOLIO Platform



2020-Q1/Q2 Requirements analysis

2020-Q2

Research and design

Spike: Distributed transaction use cases and solutions

Handling Errors in Asynchronous Processes

@Marc Johnson

@Craig McNally

@Jakub Skoczen

@VBar

@Taras Spashchenko



ABI-006

Suggested for evaluation

Refactor Okapi

Tenant Context (runtime)

Split out Okapi tenant management into "mod-tenant". Intersects with cross-tenancy functionality.













ABI-007

Suggested for evaluation

Refactor Okapi

Dependency Management

Dedicated global registry for Folio dependencies













ABI-008

Suggested for evaluation

Refactor Okapi

Registry (runtime)

Split out Okapi management of registered modules and interfaces.













ABI-009

Suggested for evaluation

Refactor Okapi

Tenant APIs (admin)

See below













ABI-010

Suggested for evaluation

Multi-Tenancy

Tenant Management

A administrative component for tenant provisioning and upgrading (including data upgrading). Refactoring the TenantAPI functionality from Okapi forms the basis













ABI-011

Under Discussion

Search

Search Engine

Introduce a dedicated search engine (e.g. ElasticSearch) for performance reasons. Also provides cross-tenant searching.

See related proposal:
Search









@VBar

@Jakub Skoczen

@Ian Ibbotson (Use this one)

@Mikhail Fokanov

@folio_china

@Sha Jiang

ABI-012

Suggested for evaluation

Automation

Camunda

Add an automation engine for Folio













ABI-013

Suggested for evaluation

Users

Roles

is this the same as Team/Group concept (data ownership)?

Create support for formalized Roles within Folio













ABI-014

Suggested for evaluation

Platform

GraphQL

Adopt GraphQL as a API calling convention in Folio













ABI-015

Suggested for evaluation

Release Management

Application packaging

Support the distribution of "Applications" separate from monolithic Folio releases.













ABI-016

Suggested for evaluation

Users

SAML SSO strategy

Come to a more focused project strategy for SAML support.







https://folio-org.atlassian.net/browse/MODLOGSAML-44

https://folio-org.atlassian.net/browse/MODLOGSAML-58

https://folio-org.atlassian.net/browse/MODLOGSAML-59

https://folio-org.atlassian.net/browse/MODLOGSAML-66

https://folio-org.atlassian.net/browse/UXPROD-554

https://folio-org.atlassian.net/browse/UXPROD-556

https://folio-org.atlassian.net/browse/UXPROD-1612

https://folio-org.atlassian.net/browse/UXPROD-2444

See also:

@Tod Olson



ABI-017

Suggested for evaluation

Codex

Codex

Next generation of Codex functionality

  • beyond Codex Search













ABI-018

Suggested for evaluation

Instrumentation

Okapi/modules

Define instrumentation capabilities, including:

  • logging formats and structure (fields, patterns)

  • metrics: supported protocols (e.g JMX, Prometheus, etc) and measured quantities

  • integration with third-part tools, including log aggregators (ELK, CW, etc), time series databases (Prometheus), service mesh solutions (e.g Istio, X-ray)









@Jakub Skoczen

@John Malconian

@Wayne Schneider

@Ian Hardy

@Mikhail Fokanov

Core: platform