Skip to content

Instantly share code, notes, and snippets.

@txomon
Last active July 12, 2016 22:14
Show Gist options
  • Save txomon/87177076a19b118043c3c721e3bf79e4 to your computer and use it in GitHub Desktop.
Save txomon/87177076a19b118043c3c721e3bf79e4 to your computer and use it in GitHub Desktop.
Architecture problem for training

Problem

Our company is a service to track all your media life. We provide image, video and audio sharing, archiving, etc., we provide TV, PlayStation, xbox, etc. integrations, we secure your data, and we also keep track on what you listen and watch, we propose new things to read, watch and listen depending on what you consume.

Integrations with social networks are obviously though of.

The idea is to provide a realtime customer experiece. Leaving aside the cost of the design, create a ultra scalable, micro service based architecture with the following features:

  • Media size optimization, while maintaining the quality of the original upload (reencoding to optimal formats)

  • Client bandwidth and capabilities consideration when delivering content for example, mobiles don't need fullhd image/video when on mobile networks

  • Everything should be as perfect and as optimized as possible

  • 100% SLA, zero upgrade downtimes, cross-continent replicated. Zero data loss

  • ML/NN engines for suggestions, best searchs, etc.

  • Plugable and modular architecture to replace pieces as new software comes out.

  • Service as a Service allowed, would be taken into account that they have high scalability but not high availability.

  • News integration.

Solution

This exercise should be resolved with the latest technologies available, as optimal as possible.

Deliverables should at least include:

  • Service architecture diagram

    • Names of the software used for each of the services if an existing solution exists.

    • Explanation on why of each of the pieces

  • One fully documented use case covering as much as possible. You may use https://www.websequencediagrams.com/

  • Service foreseen costs/needs. Use any data you may find on internet to build your stats, but write them down for cross checks.

Crafting a solution to this problem should take 6 hours for just the minimal solution, achieving a 5/10

Additionally, to earn extra points:

  • Design deployment architecture, sysops/devops diagrams, and maintenance related requirements/specs

  • Specify protocols, formats, and relevant possible technical low level designs of the solution

  • Make a project plan for the proposed design and resources needed to make the project happen.

  • Extras I might not have thought of.

Each question is 1 point and it should take around 1 or 2 hours depending on knowledge. The extras need to be weighty, and can provide up to 2 points.

Deliverable

Post a comment or send me an email with a google docs page

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment