Description
Potentially this ticket will we split into different issues.
Goal: Provide a data layer with support for all operations for the Killr Video example
The services can be seen in the High Level Architecture section:
KillrVideo uses a microservices style architecture where the site is broken up into multiple smaller services where each service is responsible for providing the functionality for a specific feature. This is the current list of services and the functionality they are responsible for:
- Comments: Allows users to comment on videos and keeps track of those comments.
- Ratings: Allows users to rate videos (on a scale of 1-5) and keeps track of those ratings.
- Search: Indexes the available videos for searching by keyword and provides search suggestions (i.e. typeahead) support.
- Statistics: Keeps track of statistics for videos like how many times they've been played back.
- Suggested Videos: Provides suggestions for videos similar to another video as well as personalized video suggestions for a particular user.
- Uploads: Allows users to upload videos to the site and handles converting uploaded video files to a format that's compatible with the site.
- User Management: Manages user accounts including signing up and logging in/out.
Video Catalog: Keeps track of all the videos available for playback and the details of those videos (i.e. title, description, etc.)
Each of these services is designed to be completely independent and not have a dependency on any other service being available to do its job. What does this mean in practice? That the implementations of our services shouldn't be making calls to other service APIs in order to do their work when at all possible.
The Java implementation can be found here. The idea is not giving support for all the features implemented in that repo, only the services in the data access layer.
The data schema can be found in this other repo: