I am looking to hire a developer who is experienced with Google Cloud Platform to build a prototype fulfilling requirement attached. It should take about 1 week full time or 1-3 weeks part time, depending on availability. I can also consider 1-2 days of work if you are able to build the core components.
- Running prototype of the file sharing system on GCP and a walk through of components - choice of front end (GAE/GCE/GKE), choice of data storage (blobs and metadata); explain pros/cons of your choices.
- At least one alternative architecture with pros/cons
- Users belonging to different groups being isolated from each other by default with no sharing of documents allowed. Walk through of design implementation of how this isolation was achieved.
- Basic reporting for admins: Current and past user sessions and activities undertaken (files viewed/downloaded/uploaded etc.). Walk through of GCP components, their pros and cons
- Estimated running costs on GCP
- Demonstrate complex file sharing and management rules. Setting group level policies that should be adhered to for sharing files/folders. For example, one of the policies can be - no file carrying employee equity grants under HR can be shared outside the group; other files are okay to be shared.
- Advanced analytics: track devices connected, third party access, white/black list ips, domains, specific users, track failed login/access attempts. This may not be built as part of the demo but a walkthrough of system design would be great - what GCP component(s) can be used and why?
Assumptions and Considerations
- To gauge the scale of this application, assume there are 10 teams with 1,000 users each. Each user uploads 2-3 documents, downloads ~10 documents every day. The frequency of search can vary randomly per user per day. The busiest times for this application is between 11am - 3pm every day. There is almost no activity expected from 7pm - 7am every day on typical days.
- You do not need to integrate with an existing identity management system (while it’s nice to have, it’s not a requirement). Start with a plain vanilla system.
- The considerations for the alternate design can be quicker turnaround on product development, ease of deployment/management, better costs, minimal learning curve for engineering etc.
- What can be done to optimise costs?
I look forward to hearing from you.