Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleRepo: github.com/project-sunbird/knowledge-platform

/knowledge-platform/assessment-api (assessment-service specific code)

/assessment-api/ assessment-service (play application)

/assessment-api/ assessment-actors (actor implementation)

/assessment-api/ qs-hierarchy-manager (hierarchy-manager)

/knowledge-platform/ontology-engine (assessment-service uses entire ontology-engine)

/ontology-engine/graph-common

/ontology-engine/graph-core_2.11

/ontology-engine/graph-dac-api

/ontology-engine/graph-engine_2.11

/ontology-engine/parseq

/knowledge-platform/platform-core (assessment-service uses entire platform-core directly or via ontology-engine)

/platform-core/actor-core

/ontology-engine/schema-validator

/ontology-engine/platform-telemetry

/ontology-engine/platform-common

/ontology-engine/platform-common

/ontology-engine/cassandra-connector

/ontology-engine/kafka-client

/knowledge-platform/platform-modules (assessment-service uses only import-manager module)

/platform-modules/import-manager

/platform-modules/mimetype-manager

/platform-modules/url-manager

Expand
titleRepo: github.com/project-sunbird/knowledge-platform-jobs

/knowledge-platform-jobs/jobs-core (common module for all flink jobs)

/knowledge-platform-jobs/auto-creator-v2 (inQuiry BB job)

/knowledge-platform-jobs/publish-pipeline

/publish-pipeline/publish-core (common module for other publish job)

/publish-pipeline/questionset-publish (inQuiry BB job)

Dependency with Knowlg BB:

  1. Currently, all common modules are part of knowlg BB and are tightly coupled with knowlg/inQuiry services/jobs.

  2. inQuiry uses the below api’s

  • category definition api’s, framework api’s - taxonomy-service

  • search api - search-service

  • asset api’s, content api’s, channel api - content-service

...

Expand
titleSunbird-inQuiry/quml-service (for assessment-service )

/quml-service/assessment-service
/quml-service/assessment-actors
/quml-service/qs-hierarchy-manager
/quml-service/build (build script)
/quml-service/schema (question & questionset schema)
/quml-service/definition (sunbird supported primary category & its definition script for quml)
/quml-service/tests (API Functional Test Script/Code)

Expand
titleSunbird-inQuiry/quml-jobs (for backend jobs)

/quml-jobs/questionset-publish (for Question/QuestionSet Publish)
/quml-jobs/auto-creator-v2 (for import of Question/QuestionSet)

Expand
titleplayer & editor repos

Sunbird-inQuiry/quml-editor (for questionset editor)

Sunbird-inQuiry/quml-player (for quml player)

Sunbird-inQuiry/quml-portal (dummy portal for experiencing inQuiry feature)

Expand
titleDevops repos

Sunbird-inQuiry/devops (devops script for provisining, deployements)

Sunbird-inQuiry/devops-cred or devops-private (private repo)

Deployment Structure:

  • inQuiry is dependent on the below services and jobs from Knowlg BB:

    • search-service

    • taxonomy-service

    • content-service

    • search-indexer flink job

  • inQuiry will install all dependent services/jobs in its own infra.

inQuiry & Knowlg using Same DB:

...

inQuiry portal will use Knowlg channel, category definition, asset & search APIs.

Micro Services

assessment-service:

  • assessment-service will be deployed with its own configuration.

  • assessment-service will be configured to make db calls for category definitions.

flink jobs

  • questionset-publish:

    • It will be installed with inQuiry specific configuration.

  • auto-creator-v2:

    • the job makes 2 api call (get hierarchy & add to hierarchy).

    • the api calls will be made using internal content-service url and end points (url & endpoint will be a configuration)

  • search-indexer:

    • No need to install search-indexer job for inQuiry, as graph db is same.

DB’s

  • Neo4j:

    • inQuiry doesn't need to install db extension, if graph db is same.

  • Logstash:

    • No need to install for inQuiry

  • Kafka:

    • assessment-service will use its own kafka topic for publishing question/questionset.

  • Cassandra:

    • inQuiry will have its own keyspace names.

  • Redis:

    • inQuiry will use db number assigned to BB.

  • ES:

    • inQuiry will use Knowlg search-indexer job and will write data to Knowlg Index (e.g: compositesearch)

    • inQuiry will use Knowlg search-service and consume data

inQuiry & Knowlg using Different DB:

...

inQuiry portal will use Knowlg channel, category definition, asset & search api's.

Micro Services

assessment-service:

  • assessment-service will be configured to make db calls to get the category definition as taxonomy-service will be installed.

flink jobs

  • questionset-publish:

    • It will be installed with inQuiry specific configuration.

  • auto-creator-v2:

    • the job makes 2 api call (get hierarchy & add to hierarchy).

    • the api calls will be made using internal content-service url and end points (url & endpoint will be a configuration)

  • search-indexer:

    • inQuiry will install search-indexer job with inQuiry specific configuration.

    • The job will write data to inQuiry Index (e.g: inquiry_searchindex)

DB’s

  • Neo4j:

    • inQuiry need to install db extension, because graph db server is different.

  • Logstash:

    • Need to install for inQuiry

  • Kafka:

    • a inQuiry specific topic need to create for search-indexer job also.

    • assessment-service will use its own kafka topic for publishing question/questionset.

  • Cassandra:

    • inQuiry will have its own keyspace names.

  • Redis:

    • inQuiry will use db number assigned to BB.

  • ES:

    • inQuiry will use its own search-indexer job and will write data to own Index (e.g: inquiry_searchindex)

    • inQuiry need to deploy search-service from Knowlg BB to consume the data. the service will point to inQuiry index.

quml-service:

configuration change:

...

  • all common modules listed in the Current Code Structure section will be pushed to either a common repo or different repo for each module - Need to decide by considering maven central movement for each component?

  • For resolving common module dependency, we have the below options:

    • option 1:

      • Check out all dependent repos along with the main repo and do a sequential build (dependent module first. e.g: platform-core then graph-engine) and then build the main repo.

      • A custom Jenkins build script with the parameterised branch will be written for the same. so that inQuiry can point to a specific branch/tag for the dependent component.

      • We need to have a similar build script for local checkout and development.

    • option 2:

      • Add all dependent modules as submodules.

      • Modify the Jenkins build script to checkout the main repo along with all submodules.

      • For all submodules, a specific branch (e.g: 4.9.0) will be configured.

  • For service level code movement, we have the below option:

    • option 1:

      • only assessment-service related code will be committed manually in the proposed structure because we need to take the code out from knowledge-platform/assessment-api folder.

    • option 2:

      • the entire knowledge-platform repo can be moved and then we can delete the unused code and modify the current service folder structure.

  • the graph-engine module needs to be enhanced to either use a DB connection or API call for fetching category definition. the default option would be DB call unless it is configured for API call. - for now, we can deploy taxonomy-service under inQuiry BB and use the DB call or can directly point to Knowlg keyspace. this enhancement can be taken up in the next release.

...

  • .

2. inQuiry will deploy search-indexer job, if graph db is going to be different for assessment-service.

quml-jobs:

  • Two Jobs (questionset-publish & auto-creator-v2) will be moved to the inQuiry Github repo.

  • For the above two jobs, two dependent components jobs-core and publish-core are required.

  • These two common components should be present in the separate repo and should be pulled during the build of inQuiry specific jobs.

  • Three other common jobs (search-indexer, audit-event-generator, audit-history-indexer) can be build and deployed under inQuiry infra from Knowlg BB.

  • the inQuiry will maintain only the build & deployment script and BB Specific configuration for other jobs. the codebase will remain under Knowlg BB.

...

  • quml-player code is already independent. So just we need to move from project-sunbird to inQuiry Github repo.

Deployment Structure:

  • inQuiry is dependent on the below services and jobs from Knowlg BB:

    • search-service

    • taxonomy-service

    • content-service

    • search-indexer flink job

  • inQuiry will install all dependent services/jobs in its own infra.

inQuiry & Knowlg using Same DB:

...

inQuiry portal will use Knowlg channel, category definition, asset & search APIs.

...

Micro Services

...

assessment-service:

  • assessment-service will be deployed with its own configuration.

  • assessment-service will be configured to make db calls for category definitions.

...

flink jobs

...

  • questionset-publish:

    • It will be installed with inQuiry specific configuration.

  • auto-creator-v2:

    • the job makes 2 api call (get hierarchy & add to hierarchy).

    • the api calls will be made using internal content-service url and end points (url & endpoint will be a configuration)

  • search-indexer:

    • No need to install search-indexer job for inQuiry, as graph db is same.

...

DB’s

...

  • Neo4j:

    • inQuiry doesn't need to install db extension, if graph db is same.

  • Logstash:

    • No need to install for inQuiry

  • Kafka:

    • assessment-service will use its own kafka topic for publishing question/questionset.

  • Cassandra:

    • inQuiry will have its own keyspace names.

  • Redis:

    • inQuiry will use db number assigned to BB.

  • ES:

    • inQuiry will use Knowlg search-indexer job and will write data to Knowlg Index (e.g: compositesearch)

    • inQuiry will use Knowlg search-service and consume data

inQuiry & Knowlg using Different DB:

...

inQuiry portal will use Knowlg channel, category definition, asset & search api's.

...

Micro Services

...

assessment-service:

  • assessment-service will be configured to make db calls to get the category definition as taxonomy-service will be installed.

...

flink jobs

...

  • questionset-publish:

    • It will be installed with inQuiry specific configuration.

  • auto-creator-v2:

    • the job makes 2 api call (get hierarchy & add to hierarchy).

    • the api calls will be made using internal content-service url and end points (url & endpoint will be a configuration)

  • search-indexer:

    • inQuiry will install search-indexer job with inQuiry specific configuration.

    • The job will write data to inQuiry Index (e.g: inquiry_searchindex)

...

DB’s

...

Neo4j:

  • inQuiry need to install db extension, because graph db server is different.

...

Logstash:

  • Need to install for inQuiry

...

Kafka:

  • a inQuiry specific topic need to create for search-indexer job also.

  • assessment-service will use its own kafka topic for publishing question/questionset.

...

Cassandra:

  • inQuiry will have its own keyspace names.

...

Redis:

  • inQuiry will use db number assigned to BB.

ES:

...

inQuiry will use its own search-indexer job and will write data to own Index (e.g: inquiry_searchindex)

...

  • .