This project demonstrates how to create a cross-participant analytics SaaS solution on the AWS cloud. Users of the SaaS offering can submit input files and the SaaS application will perform analytics calculations by aggegating the inputs. After the calculations are performed, users will be able to download the aggregated results.
Users are isolated from one another. They cannot see the inputs provided by other users or the outputs provided to them.
Users can send and receive files by logging in to a UI portal or by connecting via SFTP.
SaaS administrators have a dedicated UI portal where they can see which users have submitted files, execute analytics, and view reports.
If you wish to jump directly to the setup, see the Deployment Steps.
The admin can see which files have been uploaded by which users and the date of the upload.
The admin can choose to run one or multiple analytics processes on the input files received from users. The analytics can be initiated through the Web console or as a batch job at a scheduled time.
The admin can see which files were created by the analytics execution process.
The admin can see which files have been uploaded by users and when this occurred.
The admin can see when analytics were run and how long they took to execute.
Users can sign up and log in.
Users can upload input files for analytics processes to utilize.
Users can download the analytics results files.
The below diagram depicts the solution's separate data storage silos for tenants. For each tenant, there is a pair of S3 buckets dedicated strictly to that tenant. The first bucket stores input files and the second stores output files. A separate security role is created per tenant that has read/write access to the buckets for the tenant. Only the users for that particular tenant and the analytics program can assume this role. This makes sure that no one else including administrators can access these buckets.
As an alternative to using the Web console, users can choose to utilize SFTP to programmatically send input files and receive output files.
See the Deployment Steps.
See CONTRIBUTING for more information.
This library is licensed under the MIT-0 License. See the LICENSE file.