Microsoft Interview Question
Program ManagersTeam: Windows Azure
Country: United States
Interview Type: In-Person
More factors to consider:
1. Scale, how can you achieve global scale in an economic way
2. Access via various geograghic locations as well as various types of devices.
3. Anti-attack, how can you survive or even thrive when malicious attacks that are putting your competitors out of service?
4. Recovery, we all screw up sometimes, how do we get back afterwards and how fast can we do that?
5. Ah, usability, simply put, can grandma learn to use this?
Before thinking about scale, access, performance, etc. you should really ask the interviewer a magnitude of questions to understand exactly the design goals of SkyDrive. The key point here is that any system is full of trade offs; the key point is to know what your design goals are so that you can come up with the right set of trade offs. For example, some platform will give up a bit on the consistency for the sake of reliability and scalablity.
By asking to design SkyDrive kind of application, the interviewer wants to know how you can design a cloud based storage system.
The typical characterstics/requirements of a cloud storage system:
1) They are essentially file hosting services
2) Allow users to register/sign in
3) Allow registered users to buy more storage
4) Allow users to access/upload/delete the files on the cloud
5) Interact with a Distributed file system to store/delete/retrieve the files on the cloud
I have put up the design here:
h-t-t-p://thought-works.blogspot.in/2012/11/object-oriented-design-for-cloud-based.html as putting the diagrams here is not possible.
I am open for any discussion on that. Please note that without constructive discussion we can not improve our design skills.
Think in these ways:
- wayne September 26, 20121. Large data storage with reliability
Use cloud service such as Azure as a reliable storage service provider
2. High speed access
Load balancing and caching, locality-based data storage if SkyDrive uses multiple data centers.
3. Security and access control
User access through login account, consider encryption on local copy of data.
4. Data consistency management logic
When multiple people are working on the same files, provide a locking mechanism to preserve data consistency.
5. Ease of use
Support of multiple running platforms, including operating systems, file systems, etc.