High Level System Architecture

High Level Architecture

SCSB is designed to enable efficient, real-time transactions between the partner integrated library systems (ILS), their web-accessible discovery environments, and the inventory management system (IMS) or storage facility’s system.

One side SCSB talks to multiple institution library systems using SIP2 or NCIP or REST APIs and on the other side it talks to inventory management systems using REST APIs.

SCSB is designed to provide

  • Real-time availability of all shared collection items in OPAC systems

  • Validate and process the requests in real-time

  • Provide real-time item status

  • Integration with Partner ILS to support requesting and circulation.

  • Eliminate cross loading bibliographic and item records in ILS (Voyager, Sierra, Alma)

The following diagram depicts the the environment (of the collaborating systems) where the solution fits in. SCSB is the middleware solution. 

Layered Architecture

The architecture includes five distinct layers:

  • Presentation Layer

  • Authentication Layer

  • Services Layer

  • Search and Data Services Layer

  • Data Layer

 

Presentation Layer

The presentation layer deals with user interface aspects of the system. SCSB’s user interface is developed using Angular JS.

Authentication Layer

SCSB supports both CAS (Central Authentication Service) and OAuth 2.0

Microservices Layer

The microservice layer encapsulates business rules, which are made available to the presentation layer. The presentation layer requests enterprise services, which are then fulfilled by this layer. The architecture envisages providing a seamless enterprise service layer communicating with internal data stores and 3rd party services. The data access layer supports the enterprise service layer by serving the data required.

SCSB has the following microservices.

Microservice

Functionality

Notes

Microservice

Functionality

Notes

SCSB-Gateway

Gateway for All APIs

This is an internal gateway for all API calls

SCSB-Circ

Request Processing
Initial Request Load

This microservice handles all circulation related aspects of the system, like processing requests in all the supported formats( SIP2, NCIP and REST API). This service also handles loading of the legacy circulation transactions.

SCSB-Doc

Solr Index, Search
Matching Algorithm
Update CGD
Reports

This microservice in the front-end interface to the solr server ( index data of bibliographic records). This service also handles Matching Algorithm and related reports

SCSB-ETL

Initial Data Load
Data Exports
Reports

This microservice is primarily for ETL related aspects like data loads and data exports and related reports

SCSB-Auth

User Authentication
Authorization for SCSB UI modules

This microservice is primarily for authentication, authorization and session management aspects of the system

SCSB-UI-Angular

User interface for Search
Deaccession
CGD Update
Reports
User Role Management/Admin Functions
Scheduling jobs (Support)

This microservice is primarily for the user interface layer of various modules.

SCSB-UI-Services

Services required for SCSB-UI-Angular

This microservice is primarily to provide the necessary data to the UI

SCSB-Batch-Scheduler

Configuring Batch Jobs

This microservice is primarily for managing batch scheduling jobs.

SCSB-Solr-Server

Apache Solr Server

This microservice is primarily to create, store and retrieve index of the meta data of the bibliographic records for all partners

SCSB-ActiveMQ

Apache ActiveMQ server

This microservice is to handle all messaging requirements of SCSB

SCSB-ZK

Apache Zoo Keeper

This microservice is to maintain the synchronization of solr-index data between the servers

Data Services Layer

The data services layer provides fundamental services to fulfill the business needs (fulfilled through enterprise services) such as Search, Request Item, etc. The data services layer serves data required by enterprise services. Data services support both relational database and Solr. 
Services implementing data access to relational database leverages Java Persistence Architecture (JPA), providing separation of object persistence and data access logic from a particular persistence mechanism (relational database) in data layer. This approach provides the flexibility to change the applications persistence mechanism without the need to re-engineer application logic that interacts with the data layer. Persistence classes are developed following the object-oriented idiom including association, inheritance, polymorphism, composition, and collections. This framework provides the flexibility to express queries in its own portable SQL extension, as well as in native SQL, or with object-oriented criteria. 
Services implementing data access to Solr / Lucene search wraps the Solr RESTFul API's to provide features such as search, filter, sort and navigation.

Data Layer

The data layer serves as the data store for all persistent information in the system including the relational database and search engine indexes. 
RDBMS data layer is comprise of MySQL server. RDBMS data layer is accessed only from the data access layer via Data Access Objects (DAOs). RDBMS architecture allows a single physical database to be accessed by concurrent instances running across several different CPUs. The data layer is composed of a group of independent servers or nodes that operate as a single system. These nodes have a single view of the distributed cache memory for the entire database system providing applications access to more horsepower when needed while allowing computing resources to be used for other applications when database resources are not as heavily required. 
A single Solr instance can support more than one index using Solr cores (single index per core). A single large index can be a performance overhead. SolrCloud distributes a single index on different machines, commonly referred as shards. All shards of the same index making one large index are referred as collection. While collection supports index scaling, it does not provide redundancy. Replication of shards provides redundancy and fault tolerance. 
Zookeeper maintains the SolrCloud, by distributing the index across shards and federating the search through the collection. SolrCloud uses leaders and an overseer. In the event of leader or the cluster overseer failure, automatic failover will choose new leaders or a new overseer transparently to the user and they will seamlessly takeover their respective jobs. Any Solr instance can be promoted to one of these roles.