We are trying to make a high-level design for our startup-example from a previous post.
Based on the need from the user and business model, a high-level design hypothesis looks like something like the image below. We have done some architecture work prior to sketching the design, i.e. an evaluation of different options of how the solution would look like, but that is a subject for a separate post.
The design hypothesis is a solution with this functionality and building blocks
- Mobile clients for upload from phone and search for media assets
- Desktop client for bulk import/export of both media and related information
- Web application for searching among media assets
- Web application for user management, i.e. party domain
- User login with password, two-phase authentication and encryption
- Role based permissions for sharing individual assets
- Use existing standards for data modelling
- Separation of integration layer from database layer
- REST API for flexibility of meta-data formats to back-end systems
- Cloud-based back-end for access everywhere, scalability and performance
- SQL-database for managing user information and other structured data
- No-SQL database for managing media-files and metadata for media
- Public cloud / Azure for back-end
- Google appstore, Windows appstore, Apple Appstore and MacApp store for download of mobile and desktop apps
To verify this design, we also need non-functional requirements for availability, security and performance that have impact on the solution.
We talking about of > 100 TB of media files per work group for storing assets and not only metadata. It should be really fast to find right media within your organisation, but to find right media in all organisations will both take time and permissions to make such a search.
This is not for on-line editing and availability should be good, but this is not a highly critical system for the user or a society critical system.
Security must be high, to comply with privacy legislation and possible sensitivity of stored media.