Separation of LMS Service

Problem Statement

Till release 2.0.0, LMS service was used for all the flows i.e. user, org, course batch, toc etc. There is a need to separate the LMS service to be used for flows related to course, batch, pages, toc etc.

SB-12310 - Getting issue details... STATUS


Solution Approach

To achieve the separation below are the major steps needs to be taken

  • Restructuring of sunbird-utils
  • sunbird-utils in maven central repo (or private repo)
  • Cleaning of lms service to hold routes and flows related to lms only.
  • Removal of gitmodules strategy as it is tightly coupled (service → mw → utils)
  • Code refactoring and restructuring in sunbird-lms-mw

Restructuring of sunbird-utils

sunbird-utils needs to hold specific core components which is leveraged by other services. For that purpose sunbird-utils is restructured as below. some of the components are renamed to specify it's purpose.

New structure is as below

Brief description of each module

moduledescription
sunbird-platform-coreIt's an aggregating module which segregate platform related component 
sunbird-cassandra-utilsholds all cassandra related utilities
sunbird-es-utilscontains all es related utilities
sunbird-notificationsholds the util for sending notifications (sms)
sunbird-cache-utilsutils related to caching either in memory or redis
actor-coreall the classes related to actor and router
actor-utilsall the utils related to actor
common-utilscommon utility which is being used by other modules.
sunbird-commonsgenerates a fat jar combining actor-core, actor-utils and common-utils