FOLIO is a micro-service system. FOLIO services are called "modules"
Each module is a separate application serving a specific role. There are several roles in project:
Frontend modules
-- TBD
Backend modules
OKAPI
OKAPI is a central gateway in FOLIO project. It also encapsulates following services
- service registry - all modules, excluding UI, publish their descriptors using OKAPI API to be available within the system)
- security / access control - all requests passing through OKAPI has a security token assigned and checked to have corresponding permissions
- database upgrade facilitation - OKAPI controls when a database of a particular module (including a per-tenant databases) have to be upgraded for next version
- dependency management - each module descriptor published has a set of dependencies included. OKAPI checks all those dependencies and also checks for existing circular dependencies in tree.
- API gateway - all modules communicate through OKAPI API, there's no direct interaction
Business logic
Business logic modules are usually a Java applications, encapsulating data transformation, enriching, calculation - everything required to implement a business process.
Business logic modules are not commonly using their own database connection, but using "Storage modules" to persist information.
Storage
These modules are dedicated to provide an API for persistence layer of FOLIO. They usually expose CQL-type API to access database objects. Modules are mostly implemented using RAML descriptors.
Storage modules are not meant to have any type of business logic and must serve exclusively for storage purposes.
Edge
Edge modules are services to provide API for integration of third-party systems with FOLIO platform. Those modules are set up to be accessed from 'external' networks and not using OKAPI as a gateway in front of them.
For access control purposes they use their own mechanisms.