Cloud computing is being adopted by commercial, government, and DoD organizations and is driven by a need to reduce the operational cost of their information technology (IT) resources. From an engineering perspective, cloud computing is a distributed computing paradigm that focuses on providing a wide range of users with distributed access to virtualized hardware and/or software infrastructure over the Internet. From a business perspective, it is the availability of computing resources that are scalable and billed on a usage basis as opposed to acquired, which leads to potential cost savings in IT infrastructure.
From a software architecture perspective, what all this means is that some elements of the software system will be outside the organization and the control over these elements depends on technical aspects such as the provided resource interface to business aspects such as the service-level agreement (SLA) with the resource provider. Therefore, systems will have to be designed and architected to account for a lack of full control over important quality attributes. This presentation will briefly define cloud computing and the different types of cloud-computing environments, and point out drivers and barriers for cloud-computing adoption. It will then focus on examples of architecture and design decisions in the cloud, such as data location and synchronization, user authentication models, and multi-tenancy support.
This presentation was given at SATURN 2011 in Burlingame, CA.