Background
inQuiry BB has multiple components like assessment-service and Flink jobs spread across multiple GitHub repositories. The objective is to decouple the inQuiry specific code from KP (Knowledge-Platform) Git Repos and bring it under the inQuiry BB space in GitHub.
Current Code Structure:
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
Open Questions:
Is separate infra monitoring (e.g: monitoring service, grafana dashboard) will be installed for inQuiry?
How load testing will be performed for inQuiry components? Do we get common load test infra?
Currently, all assessment APIs are onboarded with
Content
Role (e.g: Content Create or Content Update). Should we change the API roles to Question/QuestionSet Role (e.g: Question Create)?
Note: this will have an impact on SunbirdEd/Diksha/etc)What will happen to service telemetry (e.g: info/error logs) dashboard such as Graylog? Do we need it? If yes, what all services/components need to be installed?
Some basic functionalities around any objects (e.g: audit history, audit-event ) are currently with Knowlg. Should inQuiry also have these?
Proposed inQuiry BB Changes:
Proposed Git Repos:
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 |
|
Code Changes:
quml-service:
configuration change:
Cassandra's keyspace configuration will be updated as per the new keyspace format.
New Keyspace Format: [env_name]_[bb_name]_[keyspace_name] . e.g: dev_inquiry_hierarchy_store
Kafka topic configuration will be updated as per the new format. New format: [env_name]_[bb_name]_[topic_name]
schema/script change:
Cassandra database script will be modified to have a building block name in keyspaces.
Kafka topic creation script will be modified to have a building block name.
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.
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-editor:
Option 1:
inQuiry will copy the collection code and make changes on top of it.
quml-editor code will not have any collection & content related changes.
Option 2:
A base editor needs to be designed & implement
Both quml-editor & collection editor will use this base editor.
quml-player:
quml-player code is already independent. So just we need to move from project-sunbird to inQuiry Github repo.
0 Comments