Cloud computing is being adopted by commercial, government, and Department of Defense (DoD) organizations, 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 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 lack of full control over important quality attributes. This presentation will briefly define cloud computing, the different types of cloud computing environments, and drivers and barriers for cloud computing adoption. It will also focus on examples of architecture and design decisions in the cloud such as data location and synchronization, user authentication models, and multi-tenancy support.