Some key design aspects in Cloud computing include; authentication, resiliency, elasticity, and multi-tenancy. These 'characteristics' differentiate cloud computing, and distributed computing, from client-server and legacy enterprise systems.
An authentication system in cloud computing has critical importance as it ensures the overall security of the system. Authentication of identity ensures that proper roles are applied to end users; and that their data is kept discrete and secure. A basic authentication system in the cloud computing is the following image:
The image presented above, shows a step by step authentication process in the cloud computing system. The purpose of securely authenticating access is to guard against malicious intruders, malicious cloud agents posing as consumers; and server side attacks leading to lost, stolen or corrupted data.
The concept of resiliency is a characteristic of failover in cloud computing. Resiliency means that there is a distributed set of resources related to information and databases, across all the physical locations on the network. Resiliency in any cloud network can be leveraged to one’s needs to increase the availability and reliability of the applications. If one resource goes down, the cloud system redirects requests to a resilient part of the network, either locally, or remotely, which can service the request. Agents can trigger the use of resiliency computing, depending on the data configuration and service level expectations of the client.
Elasticity is a core feature of distributed computing. Basically resources are scaled out or in [horizontal scaling], depending on demand [vertical scaling refers to resiliency and failure, scaling up or down physical resources depending on failover logic]. Elasticity deals with variations in data load in the network by adding resources into the network at the time of higher load, and decreasing the number of resources by removing them when the load diminishes. This helps to maintain the operating costs of the system while ensuring the overall performance of the system.
Multi-tenancy is a very innovative and important architectural style in cloud computing. It allows the service provider to serve the clients from various tenants simultaneously from a single application located on the cloud. Multi-tenancy allows the clouds to give a rich experience to the users who use the applications on the cloud similar to the on-premise software applications.
Multi-tenancy simply divides both the hardware and software among the operational tenants, thus reducing the operational costs drastically. It also simplifies the maintenance process of the cloud. The 'virtual machine' on the server, will handle multiple 'tenants' or users of the resource. The modelling of multi-tenancy, is inherently more difficult and vital, than server side models of data usage with a typical client-server system.