-
Notifications
You must be signed in to change notification settings - Fork 0
Implementation Overview
The spring boot application is built as a three-tier architecture. The layers are separated into the following packages: rest, service, dao. The rest package contains the REST endpoints. The service package the Services that contain the business logic and the dao package contains the data access layer object which are simply interfaces to databases, e.g. mongoDB and elasticsearch. The service and dao packages are again split into api and implementation packages. The config package contains configuration classes, security package contains security related services, such as auth filter implementations or the JWT handler implementations. The domain package contains the database models, stored in the postgres database. Util is for helper and other utility classes and api contains exceptions and dtos. In the service package the subpackage external contains interfaces for services that connect to external services, hence constitute somewhat of a forth layer of the application.
Postgres is used to store 'static' data persistenly, such as user account information. Passwords are hashed with bcrypt. We use mongoDB to store the maDMPs in a natural way and use custom java services to index the maDMPs with elasticsearch. Elasticsearch is then directly used by the frontend to provide a fast search functionality. Transaction handling between mongoDB and elasticsearch is implemented with a custom transaction management system.
- Chrome