...
Expand | ||
---|---|---|
| ||
/knowledge-platform/assessment-api ( /assessment-api/ assessment-service ( /assessment-api/ assessment-actors ( /assessment-api/ qs-hierarchy-manager ( /knowledge-platform/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 ( /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 ( /platform-modules/import-manager /platform-modules/mimetype-manager /platform-modules/url-manager |
Expand | ||
---|---|---|
| ||
/knowledge-platform-jobs/jobs-core ( /knowledge-platform-jobs/auto-creator-v2 ( /knowledge-platform-jobs/publish-pipeline /publish-pipeline/publish-core ( /publish-pipeline/questionset-publish ( |
Dependency with Knowlg BB:
Currently, all common modules are part of knowlg BB and are tightly coupled with knowlg/inQuiry services/jobs.
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 | ||
---|---|---|
| ||
/quml-service/assessment-service |
Expand | ||
---|---|---|
| ||
/quml-jobs/questionset-publish ( |
Expand | ||
---|---|---|
| ||
Sunbird-inQuiry/quml-editor ( Sunbird-inQuiry/quml-player ( Sunbird-inQuiry/quml-portal ( |
Expand | ||
---|---|---|
| ||
Sunbird-inQuiry/devops ( 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:
|
flink jobs |
|
DB’s |
|
inQuiry & Knowlg using Different DB:
...
inQuiry portal will use Knowlg channel, category definition, asset & search api's.
Micro Services | assessment-service:
|
flink jobs |
|
DB’s |
|
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
andpublish-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)
...
.