MYOC - Make Your Opinion Cloud- Series 1
In this series, I will be walking you through an online poll application which at the very basic level is all about creating polls and participating in one. From a scenario perspective this may seem to be trivial and where every enterprise may have one or several of such apps exists out there today. However this is also a simple enough scenario to understand and demonstrate architectural and design concepts which are pertinent to cloud applications and those I have used to develop MYOC. Also further demonstrating how a simple application like this one can be enriched by leveraging cloud giving way to innovative capabilities. So let’s start…
MYOC-Make Your Opinion Count
Objectives
MYOC is conceptualized as a polling platform where consumers can use it in a more social community setup to seek opinions from family, friends etc. Similarly enterprises can use this platform to seek opinions from key stakeholders, be it employee, suppliers or customers. MYOC is built as a platform and not an application. Unlike an application the platform will offer other developers the opportunity to consume MYOC services and provide enriched functionality of their own thus expanding the reach of the application.
Use cases:
Below is a pictorial representation of the applications navigation flow

Use Case | Sub-scenarios | Description |
| Security | Create User (Sign Up) | A user should be allowed to create his own account for accessing the application |
| Login (multiple identities) | Users should be allowed to login using different identities. The application should provide access to different Identities such as Live Id, Infosys Id, Open Id and be extensible to support other Identity issuers in the future | |
| Authorization/Access Control | The application will have two set of users such Guest & Member A guest user will only be able to participate in a poll. Whereas a member will be additionally allowed to create and manage a poll. The member will also be allowed to Add new contacts or friends into the system | |
| Create Poll | Define Poll | A user should be allowed to create a poll and define when to close the poll. A poll should be allowed to be set as private, which will not be displayed in the public list and viewed only on invite |
| Invite friends | The user creating a poll should also be allowed to invite friends by SMS, Email, Messenger, Twitter, etc.. | |
| Vote | Present a vote | User should be presented a vote to participate in. The poll should be presented in a manner which will adapt to the device used by the user to submit votes. The voter should be able to view all active polls and participate in a poll he selects from the active poll list. |
| Submit a vote | A poll presented to the user, should allow the user to select his poll choice and register his vote along with comments. The results of the poll should be displayed after he would have submitted his votes | |
| Voting from a PC/Laptop | Here a user presented with polls to participate in, should have a rich user experience with the advanced capabilities to do searches, view poll results, view comments made by other users | |
| Voting by a Mobile device | The user should be able to participate in a poll from his internet enabled mobile device | |
| Vote by Phone | A user can also submit his votes over Phone | |
| Manage | Manage a Poll | A poll owner should be able to : · View and sort the list of all his polls (Active as well as InActive) · View results of a poll · View comments made by the community on a poll · Invite users to participate in a poll over o Email o SMS o Phone · Close/Open a poll |
Technical challenges:
Some key areas which we will be required to address from a techology perspective are:
a. Ability to participate in a poll from any location and using any device
b. Users must be able to access the application using their own identities. Nultiple Identity providers such as Live, Enterprise Active directory, Forms Authentication, Open Id etc.. should be supported and be configurable to support new Identity providers required in the future
c. Application should be SaaS ready with the capability to be multi-tenant and scalable to meet fluctuating Internet demands
d. Appication should have a service platform where application functionality can be offered as a service to support future customizations and introducing new devices or delivery channels easily such as widgets, mashup apps on facebook, etc..
As you can see from the use case and some of the challenges listed above, these are standard requirements for any public facing web application sans the cloud. The question then is, What makes MYOC a cloud app? The difference here lies underneath the facade of the application, which is not very evident from the outside, and where lies the true value of the technology. From outside it may seem a regular web application having a regular public facing URL but the construction of MYOC and the technology underpinnings is where the differences would lie. I would be covering this aspect of cloud development in my forthcoming blogs.
In my next blog, I will be sharing the application solution design.
BTW, You can try out the application here. If you any feedback, please do share.


