Converting an existing product or service for use in the cloud should begin with a consideration of several key requirements. Simply extending a system to support more clients may result in serious security, performance, and scalability issues.
These core requirements should be addressed prior to the application specific features, they represent the foundation for the system. These common elements apply for virtually any cloud based service.
- Secure - The system must be designed and developed with best practices for security.
- Scalable - The system must be scalable, to allow additional organizations to join without impacting others. The system capacity must be able to grow as necessary.
- Manageable - It must be possible to adjust the resource allocation in response to changing consumption. If one server is too busy, clients should be able to be moved to a different server, with minimal service impact.
- Fault Tolerant - System outages should be minimized and a disaster recovery plan must be in place. This includes backup and restore procedures, whether the failure or problem is due to a hardware, software, administrator, or user issue.
- Segmented - Each client or organization must have a separate file system area, or account, and database, and access to these resources should limited as necessary for the use of the data. Failure to organize and protect the data can make it difficult or impossible to secure, scale and manage. Although some service elements may be system or server based, they must be provisioned or partitioned for use in such a way that the data is segmented.
- Access Paths - Cloud services should allow subscribers to white label, so they can offer the services as if they are their own. Access URLs should be defined by the subscribers, probably as subdomains or derivative domains from their existing architecture.
- Brandable - It is important that the services be brandable, so clients can identify the system as theirs. The extent of branding can vary, but at a minimum, a corporate logo should be displayed, and some connections or links to the corporate site and support resources should be provided. A neutral color scheme, such as grayscale can make it easier to ensure a nice presentation regardless of the logo.
- Incremental - A tiered service offering should be established to allow free trials, as well as service levels so clients can purchase only the services they need.
- Extensible - Cloud offerings should include the ability to extend and integrate with other systems, and those extensions should be managed at the client level. Thus, if one subscriber needs custom code, the code can be added without affecting other clients.
- Integration - As with extensions, custom integration should be enabled to allow access into client infrastructures without affecting other clients.
- Turnkey - The base system should be available very quickly, set up time should be minimal.
- Easy to Use - Examine any existing systems and consider support requests to identify areas that have been difficult for clients to work with. Be sure to consider ways to improve these issues before proceeding.
- Web Service or API Access - Subscribers should be able to interact with the system through automated processes with standards based interfaces such as SOAP and REST. These interfaces must be well-defined and documented. Test code and interfaces should be provided to ease development.
- Well Supported - An extension of easy to use, support refers to ensuring users can use the system to do what needs to be done in a timely manner. The application needs to be organized carefully, supported with validation and help on the client (browser) side, adequate documentation, meaning a full manual in PDF, HTML or .zipped, a ticket system and possible a live chat interface.
- Cost Effective - The cost of the system must be competitive.
- Service Level Agreement - A service level agreement must be provided. This ensures both the provider and client understand exactly what is being offered.
- Localization (l10n)
- Internationalization (i18n)