Trustworthy Cloud Computing - Vladimir O. Safonov - E-Book

Trustworthy Cloud Computing E-Book

Vladimir O. Safonov

0,0
107,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Introduces the topic of cloud computing with an emphasis on the trustworthiness of cloud computing systems and services

This book describes the scientific basis of cloud computing, explaining the ideas, principles, and architectures of cloud computing as well the different types of clouds and the services they provide. The text reviews several cloud computing platforms, including Microsoft Azure, Amazon, Oracle, Google, HP, IBM, Salesforce, and Kaavo. The author addresses the problem of trustworthiness in cloud computing and provides methods to improve the security and privacy of cloud applications. The end-of-chapter exercises and supplementary material on the book's companion website will allow readers to grasp the introductory and advanced level concepts of cloud computing.

  • Examines cloud computing platforms such as Microsoft Azure, Amazon, Oracle, Google, HP, IBM, Salesforce, and Kaavo
  • Analyzes the use of aspect-oriented programming (AOP) for refactoring cloud services and improving the security and privacy of cloud applications
  • Contains practical examples of cloud computing, test questions, and end-of-chapter exercises
  • Includes presentations, examples of cloud projects and other teaching resources at the author’s website (http://www.vladimirsafonov.org/cloud)

 Trustworthy Cloud Computing is written for advanced undergraduate and graduate students in computer science, data science, and computer engineering as well as software engineers, system architects, system managers, and software developers new to cloud computing.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 566

Veröffentlichungsjahr: 2016

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Cover

Title Page

COPYRIGHT

PREFACE

ACKNOWLEDGMENTS

INTRODUCTION

THE CLOUD AS AN INNOVATIVE CHANGE OF COMPUTING PARADIGM

THE BASIC IDEA OF THE CLOUD AND ITS ADVANTAGES

ISSUES OF THE CLOUD APPROACH AND OF ITS LEARNING

ELEMENTS OF THE CLOUD APPROACH ALREADY IN USE

NEXT STEPS OF CLOUD DEVELOPMENT AND THEIR ISSUES

INTEREST IN CLOUD AMONG DIFFERENT CATEGORIES OF SPECIALISTS AND COMMUNITIES

EXERCISES TO INTRODUCTION

CHAPTER 1: PRINCIPLES AND CONCEPTS OF CLOUD COMPUTING

1.1 KINDS OF MODERN SOFTWARE ARCHITECTURES

1.2 CHARACTERISTIC FEATURES OF MODERN SOFTWARE

1.3 BASIC CONCEPTS OF MODERN SOFTWARE ARCHITECTURE

1.4 SERVICE-ORIENTED ARCHITECTURE (SOA)

1.5 SOFTWARE AS A SERVICE (SaaS)

1.6 KEY IDEAS AND PRINCIPLES OF CLOUD COMPUTING

1.7 COMPONENTS OF CLOUD PLATFORMS AND KINDS OF CLOUD SERVICING

1.8 LAYERS OF THE CLOUD ARCHITECTURE

1.9 SCHEME OF ARCHITECTURE OF THE CLOUD

1.10 ROLES OF PEOPLE IN CLOUD COMPUTING

1.11 STANDARDS OF CLOUD COMPUTING

1.12 HOW THE CLOUDS COME TRUE: ORGANIZATION OF DATACENTERS AND CLOUD HARDWARE

1.13 SPECIFICS AND COMPONENTS OF SOFTWARE FOR CLOUD COMPUTING

1.14 CLOUD COMPUTING-RELATED TRENDS, ACTIVITIES, AND RESOURCES

EXERCISES TO CHAPTER 1

CHAPTER 2: PLATFORMS OF CLOUD COMPUTING

2.1 A VARIETY OF CLOUD PLATFORMS: THE FIRST IMPRESSION

2.2 AMAZON AWS CLOUD PLATFORM – A PIONEER OF CLOUD COMPUTING

2.3 IBM CLOUD

2.4 ORACLE CLOUD

2.5 GOOGLE CLOUD PLATFORM

2.6 HP HELION CLOUD PLATFORM

2.7 SALESFORCE CLOUD PLATFORM

EXERCISES TO CHAPTER 2

CHAPTER 3: PRINCIPLES AND PILLARS OF TRUSTWORTHY COMPUTING

3.1 VITAL ISSUES OF TRUSTWORTHY COMPUTING

3.2 THE TRUSTWORTHY COMPUTING INITIATIVE BY MICROSOFT

3.3 THE SECURITY PILLAR

3.4 THE RELIABILITY PILLAR

3.5 THE PRIVACY PILLAR

3.6 THE BUSINESS INTEGRITY PILLAR

3.7 TOOLS AND SOFTWARE LIFECYCLE MODELS TO SUPPORT TRUSTWORTHY COMPUTING

EXERCISES TO CHAPTER 3

CHAPTER 4: MAKING CLOUD COMPUTING TRUSTWORTHY

4.1 PSYCHOLOGICAL BARRIERS BETWEEN THE CUSTOMERS AND THE CLOUD, AND THE WAYS TO OVERCOME THEM

4.2 USER INTERFACE FOR CLOUD COMPUTING, ITS CONVENIENCE, USABILITY, AND FUNCTIONALITY FOR TRUSTWORTHY CLOUD COMPUTING

4.3 THREATS AND ATTACKS TO CLOUDS

4.4 TRUSTWORTHY CLOUD COMPUTING FROM HARDWARE SIDE: DATACENTER ARCHITECTURE, SERVERS, CLUSTERS, HYPERVISORS

4.5 TRUSTWORTHY CLOUD COMPUTING FROM OPERATING SYSTEM SIDE: DESIRABLE OS FEATURES TO IMPLEMENT CLOUDS AND DATACENTERS

4.6 USING ASPECT-ORIENTED PROGRAMMING FOR REFACTORING CLOUD SERVICES AND MAKING THEM TRUSTWORTHY: THE CONTRIBUTION OF ST. PETERSBURG UNIVERSITY

EXERCISES TO CHAPTER 4

CHAPTER 5: EXAMPLE OF A TRUSTWORTHY CLOUD COMPUTING PLATFORM IN DETAIL: MICROSOFT AZURE

5.1 OVERVIEW OF MICROSOFT AZURE ARCHITECTURE AND ITS EVOLUTION

5.2 USER INTERFACE AND THE MANAGEMENT PORTAL OF MICROSOFT AZURE

5.3 THE COMPUTE COMPONENT: MANAGING AND OPERATING CLOUD SERVICES

5.4 THE STORAGE COMPONENT: MANAGING AND OPERATING CLOUD STORAGE

5.5 THE SQL AZURE COMPONENT: THE CLOUD DATABASE

5.6 NETWORKING IN THE AZURE CLOUD: NETWORK-AS-A-SERVICE (NAAS), CONTENT DELIVERY NETWORK (CDN), VIRTUAL NETWORK, TRAFFIC MANAGER

5.7 ACTIVE DIRECTORY IN THE CLOUD: A WAY OF STRUCTURING USER ACCOUNTS

5.8 DEVELOPMENT OF MICROSOFT AZURE CLOUD SERVICES WITH MICROSOFT VISUAL STUDIO

5.9 VISUAL STUDIO ONLINE AND ITS RELATION TO MICROSOFT AZURE

5.10 DEVELOPING MOBILE SERVICES AND CONNECTED MOBILE APPLICATIONS FOR MICROSOFT AZURE

5.11 MEDIA SERVICES

5.12 THE .NET PLATFORM – THE BASIS OF AZURE IMPLEMENTATION

5.13 AZURE TOOLS

5.14 MACHINE LEARNING IN THE CLOUD: AZURE MACHINE LEARNING STUDIO

5.15 PARALLEL PROCESSING OF BIG DATA IN THE CLOUD: USING APACHE HADOOP IN MICROSOFT AZURE

5.16 PERSPECTIVES OF MICROSOFT AZURE

EXERCISES TO CHAPTER 5

CHAPTER 6: CONCLUSIONS: PERSPECTIVES OF TRUSTWORTHY CLOUD COMPUTING

6.1 INTEGRATION OF CLOUDS. THE INTERCLOUD IEEE STANDARD

6.2 THE TCLOUDS PROJECT BY THE EUROPEAN UNION

6.3 FURTHER DEVELOPMENTS AND TRENDS OF TRUSTWORTHY CLOUD COMPUTING

EXERCISES TO CONCLUSIONS

APPENDIX A: APPENDIX EXAMPLE OF MICROSOFT AZURE CLOUD SERVICE: FILEMANAGER

A.1 MODELS: MyFile.cs

A.2 MODELS: FileManagerBlobAccess.cs

A.3 MODELS: FileManagerDataBase.cs

A.4 CONTROLLERS

A.5 REPRESENTATION AND USER INTERFACE

A.6 THE FRAGMENTS OF THE SOURCE CODE

REFERENCES

INDEX

END USER LICENSE AGREEMENT

Pages

ix

x

xi

xiii

xiv

xv

xvi

xvii

xviii

xix

xx

xxi

xxii

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

309

310

311

312

313

314

315

316

317

318

319

320

321

Guide

Cover

Table of Contents

Preface

Introduction

Begin Reading

List of Illustrations

CHAPTER 1: PRINCIPLES AND CONCEPTS OF CLOUD COMPUTING

Figure 1.1 Multitiered architecture.

Figure 1.2 The general structure of the cloud.

Figure 1.3 Kinds of clouds in cloud computing: public, private, and hybrid clouds.

Figure 1.4 Scheme of architecture of the cloud.

Figure 1.5 Example of cloud architecture.

CHAPTER 2: PLATFORMS OF CLOUD COMPUTING

Figure 2.1 The structure of the Amazon Cloud portal.

Figure 2.2 The Amazon EC2 starting page.

Figure 2.3 The EC2 page to choose an Amazon Machine Image.

Figure 2.4 Reviewing the selected AMI configuration.

Figure 2.5 Information on the running instance of our virtual server in the cloud.

Figure 2.6 Remote login to the virtual server in Amazon AWS cloud.

Figure 2.7 Information on the database instance created in Amazon cloud.

Figure 2.8 DynamoDB cloud database service page.

Figure 2.9 A table created in DynamoDB.

Figure 2.10 General view of the created DynamoDB tables with monitoring information.

Figure 2.11 The result of DynamoDB Query to a table with the index added.

Figure 2.12 Running a sample Node.js Web application using Elastic BeansTalk.

Figure 2.13 The login page of the Bluemix cloud.

Figure 2.14 The starting page of the Bluemix cloud portal.

Figure 2.15 The Virtual Machines page of the Bluemix cloud portal.

Figure 2.16 The catalog of starters for application development in Bluemix.

Figure 2.17 Starting sample Java application in Liberty for Java.

Figure 2.18 The Web page displayed by the sample Java application.

Figure 2.19 Adding a service or API to the application: Call Message Resonance.

Figure 2.20 A sample Python Web application

safpython

in IBM Bluemix cloud.

Figure 2.21 Visualizing the Web page the

safpython

application implements.

Figure 2.22 The

Files and Logs

page for

safpython

application: Way to source code.

Figure 2.23 The server source code in Python for

safpython

application.

Figure 2.24 The Oracle cloud portal.

Figure 2.25 The Oracle cloud page to log in to the user account and to cloud services.

Figure 2.26 The cloud page related to the Oracle Storage service.

Figure 2.27 The Try It page in the Oracle cloud.

Figure 2.28 The Oracle cloud marketplace page.

Figure 2.29 The Oracle cloud marketplace page.

Figure 2.30 A dashboard of all my available cloud services in Oracle cloud.

Figure 2.31 The Google cloud platform portal.

Figure 2.32 The Google developer console with the cloud services used.

Figure 2.33 Logging in to a Windows 2008 R2 virtual machine in the Google cloud.

Figure 2.34 Google App Engine: running the starter Python application and exploring its source code.

Figure 2.35 Logging in to a Windows 2012 R2 virtual machine in Google cloud.

Figure 2.36 Calling Server Manager on the Windows 2012 R2 virtual machine.

Figure 2.37 Logging in to Linux Debian virtual machine in the Google cloud.

Figure 2.38 Using Big Data in the Google cloud: results of a request to a sample big table.

Figure 2.39 Monitoring the user's project in the Google cloud.

Figure 2.40 HP Helion public cloud portal.

Figure 2.41 HP Helion public cloud portal “landing” page.

Figure 2.42 A MySQL database created in the HP cloud.

Figure 2.43 A container created the HP cloud.

Figure 2.44 A file from the client computer uploaded to the container in the cloud.

Figure 2.45 The console of the

safvm

Windows 2008 R2 virtual server in the HP cloud.

Figure 2.46 Information on the running virtual server instance in the HP cloud.

Figure 2.47 The console of the

safvm2

Linux Debian virtual server in the HP cloud.

Figure 2.48 Information on the two (Windows and Linux) virtual servers in the cloud.

Figure 2.49 The Salesforce cloud platform login page.

Figure 2.50 The Salesforce cloud platform starting page.

Figure 2.51 The Company Performance Dashboard in the Salesforce cloud.

Figure 2.52 Salesforce AppExchange marketplace portal.

Figure 2.53 The new main menu item

Positions

in the cloud portal created for my

safapp

Web application.

Figure 2.54 The use of the new Positions item: creating a position of a professor of computer science.

Figure 2.55 The Salesforce developers portal.

Figure 2.56 The Force.com IDE portal.

Figure 2.57 The Salesforce cloud All Tabs page.

Figure 2.58 Quick start of an APEX application in the Salesforce cloud.

Figure 2.59 The new APEX application

safstudents

integrated into the cloud portal.

Figure 2.60 APEX developer console in the Salesforce cloud.

Figure 2.61 The result of my experiments in Salesforce developer console visualized.

CHAPTER 5: EXAMPLE OF A TRUSTWORTHY CLOUD COMPUTING PLATFORM IN DETAIL: MICROSOFT AZURE

Figure 5.1 Architecture of Microsoft Azure.

Figure 5.2 Microsoft Azure management portal.

Figure 5.3 Microsoft Azure preview portal.

Figure 5.4 Login page of the Microsoft Azure management portal.

Figure 5.5 User contextual menu of Microsoft Azure.

Figure 5.6 Main menu of Microsoft Azure.

Figure 5.7 Home page of Microsoft Azure with free trial offer.

Figure 5.8 Documentation page of Microsoft Azure main menu.

Figure 5.9 Downloads page of Microsoft Azure main menu.

Figure 5.10 Azure Marketplace page of Microsoft Azure main menu.

Figure 5.11 Creating a new Web site in Microsoft Azure.

Figure 5.12 New Web site created in Microsoft Azure.

Figure 5.13 Visualizing information an all-cloud Web site we created.

Figure 5.14 Monitoring the site.

Figure 5.15 Configuring the site – choosing the versions of .NET, Java, Python.

Figure 5.16 Page for creating a virtual machine.

Figure 5.17 Parameters of the virtual machine to be created.

Figure 5.18 Creation of a new virtual machine.

Figure 5.19 Calling Server Manager after logging in to the virtual machine.

Figure 5.20 Server Manager is called on the virtual machine.

Figure 5.21 Pressing the Start button on the virtual machine.

Figure 5.22 Executing the PowerShell

ls

command on the virtual machine.

Figure 5.23 Cloud before creating a new cloud service.

Figure 5.24 Cloud page with the parameters of the new cloud service.

Figure 5.25 New cloud service created, and information on it visualized on the dashboard.

Figure 5.26 Page for setting the parameters of the new mobile service.

Figure 5.27 Page for choosing the parameters of the database for the mobile service.

Figure 5.28 Page for setting the parameters of the new SQL database server.

Figure 5.29 New mobile service (with the related database) is created in the cloud.

Figure 5.30 Launching the new mobile service.

Figure 5.31 SQL database created for the mobile service.

Figure 5.32 Managing the new SQL database: logging in to the database server.

Figure 5.33 Managing the new SQL database: the management page.

Figure 5.34 Organization of tables in Microsoft Azure.

Figure 5.35 Organization of binary large objects (blobs) in Microsoft Azure.

Figure 5.36 Example of organizing queues within a Storage account.

Figure 5.37 Creating a Storage account.

Figure 5.38 Parameters of the new Storage account.

Figure 5.39 Creation of a new Storage account.

Figure 5.40 Starting page of the new Storage account.

Figure 5.41 Endpoints for a blob, table, and queue in the new Storage account.

Figure 5.42 Creating a container in the new Storage account.

Figure 5.43 Public blob container created.

Figure 5.44 Creating a new SQL database.

Figure 5.45 Specifying parameters of the new SQL database.

Figure 5.46 Specifying parameters of the SQL database server.

Figure 5.47 Creation of new SQL database.

Figure 5.48 Database server management page.

Figure 5.49 Cloud database management page.

Figure 5.50 Overview of the new database and quick start page.

Figure 5.51 Creating a new table in the database.

Figure 5.52 Designing the structure of the table.

Figure 5.53 The INSERT SQL statement is executed on the table.

Figure 5.54 The SELECT SQL statement executed on the table.

Figure 5.55 Result of monitoring the use of the cloud database.

Figure 5.56 Creating a virtual network: name and region.

Figure 5.57 Creating a virtual network: DNS servers and VPN connectivity.

Figure 5.58 Creating a virtual network: specifying address spaces and subnets.

Figure 5.59 New virtual network created.

Figure 5.60 Creating a storage account to be cached by the CDN.

Figure 5.61 Creating a CDN endpoint for the new storage account.

Figure 5.62 Creating a Traffic Manager profile.

Figure 5.63 New Traffic Manager profile created.

Figure 5.64 Adding a new Active Directory.

Figure 5.65 New Azure Active Directory created.

Figure 5.66 New user added to our Azure Active Directory.

Figure 5.67 Adding a new group of users to our Azure Active Directory.

Figure 5.68 Creating a Microsoft Azure cloud service project in Visual Studio.

Figure 5.69 List of the installed components of the Azure SDK.

Figure 5.70 Calling Visual Studio under the name of the administrator.

Figure 5.71 Window for choosing the kind of role of the cloud service.

Figure 5.72 Structure of the cloud project in Solution Explorer.

Figure 5.73 Adding a new role to the cloud service project.

Figure 5.74 ASP.NET Web project: WebRole1 window.

Figure 5.75 Result of browsing the new cloud service page in Google Chrome.

Figure 5.76 Page to create a Visual Studio Online account.

Figure 5.77 Visual Studio Online account created.

Figure 5.78 First login to Visual Studio Online.

Figure 5.79 Page of the

saf_team_project

.

Figure 5.80 Managing project team members.

Figure 5.81 Working with the Team Room of the project and posting messages.

Figure 5.82 Opening our team project in Visual Studio team explorer.

Figure 5.83 Empty mobile service

saf-mobile

created in the Azure cloud.

Figure 5.84 Azure cloud page to support development of mobile services for Windows Phone platform.

Figure 5.85 Azure cloud page with a reference to the mobile project and recommendations on the text steps of development.

Figure 5.86 Structure of the mobile solution

saf_mobile

with the mobile service project

saf_mobileService

.

Figure 5.87 Window with the options for publishing the mobile service in the cloud.

Figure 5.88 Choosing a profile for publishing the mobile service.

Figure 5.89 Choosing a name of the existing mobile service for publishing.

Figure 5.90 Visualizing detailed information on the mobile service being published.

Figure 5.91 Web Publishing Activity tab in Visual Studio.

Figure 5.92 Web page of the mobile service published in the cloud.

Figure 5.93 Searching and installing the

WindowsAzure.MobileServices

package by the NuGet utility.

Figure 5.94

WindowsAzure.MobileServices

package installed.

Figure 5.95 Visualizing by the mobile service of the structure of the cloud database.

Figure 5.96 Examples of push notifications from the mobile service on the screen of the mobile device.

Figure 5.97 Setting the mobile service in the cloud for sending push notifications to the mobile client.

Figure 5.98 Cloud page for creating media services accounts.

Figure 5.99 Media services account created.

Figure 5.100 Cloud page for starting to work with the media services account.

Figure 5.101 Video file upload window.

Figure 5.102 Information on the uploaded and published media content.

Figure 5.103 .NET Framework BCL architecture.

Figure 5.104 Structure of a distributed Web application in .NET.

Figure 5.105 Infrastructure of a Web service in .NET.

Figure 5.106 Simple example of the code of a .NET Web service.

Figure 5.107 Web and Worker roles.

Figure 5.108 Structure of the file ServiceDefiniton.csdef.

Figure 5.109 Structure of the file ServiceConfiguration.csdef.

Figure 5.110 Windows Azure Role API class diagram.

Figure 5.111 Implementation of roles.

Figure 5.112 Implementation of Web and Worker roles.

Figure 5.113 Interaction between the roles.

Figure 5.114 Interaction between roles based on WCF/TCP: Service.

Figure 5.116 Interaction between roles based on WCF/TCP: Client.

Figure 5.117 Example of code of interaction between instances of roles.

Figure 5.118 Choosing the item in the main menu of Azure for downloading Azure tools.

Figure 5.119 Main Azure page for downloading SDK packages.

Figure 5.120 Part of the Azure page for downloading command-line Azure tools.

Figure 5.121 Azure page for downloading tools for development of iOS mobile services.

Figure 5.122 Architecture of Azure ML Studio.

Figure 5.123 Creating an ML workspace in the Azure cloud.

Figure 5.124 Opening an experiment from the gallery in our ML studio workspace.

Figure 5.125 Example of a Hive query using Azure HDInsight.

Figure 5.126 Importing the result of a Hive query from Azure HDInsight.

Figure 5.127 Example of configuring a HDInsight cluster in the Azure portal.

APPENDIX A: APPENDIX EXAMPLE OF MICROSOFT AZURE CLOUD SERVICE: FILEMANAGER

Figure A.1 The user interface of the FileManager cloud service.

Figure A.2 The UML diagram of the classes of the FileManager cloud service.

TRUSTWORTHY CLOUD COMPUTING

 

VLADIMIR O. SAFONOV

St. Petersburg University

 

 

 

Copyright © 2016 by John Wiley & Sons, Inc. All rights reserved

Published by John Wiley & Sons, Inc., Hoboken, New Jersey

Published simultaneously in Canada

Microsoft Azure™ is a trademark of Microsoft Corporation in the United States and/or other countries. All other trademarks are the property of their respective owners.

No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning, or otherwise, except as permitted under Section 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, Inc., 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 750-4470, or on the web at www.copyright.com. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permission.

Limit of Liability/Disclaimer of Warranty: While the publisher and author have used their best efforts in preparing this book, they make no representations or warranties with respect to the accuracy or completeness of the contents of this book and specifically disclaim any implied warranties of merchantability or fitness for a particular purpose. No warranty may be created or extended by sales representatives or written sales materials. The advice and strategies contained herein may not be suitable for your situation. You should consult with a professional where appropriate. Neither the publisher nor author shall be liable for any loss of profit or any other commercial damages, including but not limited to special, incidental, consequential, or other damages.

For general information on our other products and services or for technical support, please contact our Customer Care Department within the United States at (800) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002.

Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic formats. For more information about Wiley products, visit our web site at www.wiley.com.

Library of Congress Cataloging-in-Publication Data:

Names: Safonov, V. O. (Vladimir Olegovich), author.

Title: Trustworthy cloud computing / Vladimir O. Safonov.

Description: Hoboken, New Jersey : John Wiley & Sons, Inc., [2016] | Includes bibliographical references and index.

Identifiers: LCCN 2015036885 | ISBN 9781119113508 (cloth)

Subjects: LCSH: Cloud computing.

Classification: LCC QA76.585 .S34 2016 | DDC 004.67/82–dc23 LC record available at http://lccn.loc.gov/2015036885

PREFACE

The book I am presenting to the readers now is my third book published with John Wiley & Sons. During all my professional life and work, this has been the best publishing opportunity, and I greatly appreciate it. My first Wiley book [1] published in 2008 is on aspect-oriented programming and its use in trustworthy software development. My second Wiley book published in 2010 is on compilers and on applying the principles of trustworthiness for compilers.

With this new book, I continue my trustworthy computing series with a book on the novel area of cloud computing, which is very attractive for many computer users – both end users and software development professionals.

First, let me explain the meaning of the picture on the front cover. It corresponds to yet another tradition I follow in my Wiley books – the use in the front covers of my personally made photos of my native city of St. Petersburg and its suburbs, such views that can be regarded as having some allegorical meaning related to the book content. This is done to familiarize foreign readers with the beauties of St. Petersburg, in addition to teaching them novel approaches in IT. Please see my two previous Wiley books for the other examples of allegorical St. Petersburg views – the Atlants [1] and the Rostral Columns [2].

On the front cover of this book there is a picture of Urania, the Greek antique muse of astronomy, soaring in the clouds, that can be regarded as a classical style allegory of cloud computing. This beautiful sculpture stands in Pavlovsk, a suburb of St. Petersburg, in its world famous park. The sculpture, as many other beautiful statues in the Pavlovsk park, was cast by French sculptor E. Gastecloux in 1796 from the antique Greek original. Urania is the muse of all precise sciences and their areas, including such a modern area as cloud computing, covered in my book. Urania, as well as the whole Pavlovsk park where she stands, has greatly inspired me and many other scientists to our creative works for many years.

This book is a synthesis of my ideas, experience, and results in two modern fields – trustworthy computing and cloud computing. Actually, the book, either directly or indirectly, summarizes my work in most areas of my competence since the mid-1970s when I started my professional activity as a computer scientist and software engineer: programming languages, compiler development, hardware architecture and operating systems, software architecture and programming technologies (including aspect-oriented programming), Java and .NET platforms, parallel programming, trustworthy computing, and now cloud computing.

In addition, I am one of the originators of active and broad university teaching of cloud computing in Russian universities, for the first turn, in my native St. Petersburg State University where I have been working since 1977. I am the author of two Russian books [3, 4] and three Internet courses in Russian [5–7] on cloud computing and Microsoft Azure cloud platform. All of them are quite popular in Russia; my Internet courses have several hundred online students.

The book can be used as a university textbook as a basis for the one-semester university course I recommend for graduate teaching programs. It contains many practical examples of cloud computing and a number of testing questions and exercises at the end of each chapter, which help acquire the material. In addition, the book companion Web site http://www.vladimirsafonov.org/cloud contains presentations, examples of cloud projects, and many other teaching resources related to the topics of the book. Surely the book can be also used for self-education in cloud computing by software practitioners.

The book covers some results of our advanced research related to cloud computing and application of aspect-oriented programming to refactoring cloud applications. In this respect, the book can be considered as a research monograph.

Now it is time for wide learning, using, and enhancing the area of cloud computing as one of the most prospective IT approaches – not only to software development, but, in general, to a new kind of worldwide use of computing resources, both software and data, via a structured collection of Web interfaces, without the need for extra software installations on client computers. A Web browser and access to the Internet are enough to use the cloud, as this structured collection of Web interfaces is called, which provides access to a huge amount of computing resources, software, and data running on powerful server computers of big data centers. Deep interest among many million people, including me, in cloud computing is one of the reasons why I wrote this book.

As compared to many other cloud computing books that cover mostly the general concepts and the business aspects of cloud computing, my book should be considered as a thorough scientific analysis of cloud computing architectures and the ways to make them trustworthy.

Here is an overview of the book content.

A short introduction covers key ideas, motivations, and concepts of cloud computing and explains its novelty and perspectives of its applications.

Chapter 1 is a detailed description of the principles and concepts of cloud computing and the related concepts of software architecture, such as service-oriented architectures (SOA), multitenancy, and software as a service (SaaS). Cloud computing architecture is very complicated, so its internal logic requires understanding many modern software architectural principles.

Chapter 2 overviews the most widely known cloud computing platforms and gives the readers a feel and understanding of a variety of approaches to cloud by several major companies – Amazon, IBM, Oracle, Google, HP, Salesforce. From this chapter the readers can extract not only ideas and principles but also practical methods of using various cloud platforms.

Chapter 3 is an introduction to trustworthy computing, a paradigm and initiative proposed and implemented by Microsoft since 2002. Now trustworthy computing is one of the foundations of developing modern software, including cloud platforms and cloud applications. The four “pillars” of trustworthy computing are security, reliability, privacy, and business integrity [1].

Chapter 4 is a bridge between trustworthy computing and cloud computing. It explains why it is so important to make cloud computing trustworthy, and describes the principles of how to do it in different aspects: eliminate the psychological barrier between the cloud and the users; develop a friendly user interface for the cloud; analyze and mitigate possible types of attacks on the cloud and cloud applications; develop and use the appropriate hardware to enable fast, scalable, and reliable cloud computing; use the appropriate features of operating systems to make the cloud trustworthy; load balancing the cloud to reasonably distribute its workload between datacenters; use the appropriate principles to develop fault-tolerant cloud services – in particular, use aspect-oriented programming as one of the software paradigms helpful for refactoring cloud applications.

As a major, practical part of the book, Chapter 5 considers in detail, just as an example of implementation of the above cloud computing principles, the cloud computing platform Microsoft Azure. It is not the first cloud platform in the history of IT (the first one was Amazon's EC2, now referred to as Amazon AWS). But now Microsoft Azure is one of the most widely spread cloud computing platforms all over the world. The chapter covers both the principles of the Azure platform and the details of its various features, so the chapter can be considered and studied separately by those readers already familiar with the basic concepts of the cloud and desiring to learn and use Microsoft Azure.

The Conclusions summarizes the perspectives of cloud computing and covers some novel cloud computing projects, such as the InterCloud IEEE Standard and TClouds project by the European Union.

The Appendix contains examples of trustworthy cloud computing services developed for Microsoft Azure.

Vladimir O. SafonovSt. Petersburg, RussiaAugust 2015

ACKNOWLEDGMENTS

Thanks a lot to many people who contributed to the creation of the book.

For the first turn, I would like to thank John Wiley & Sons as the greatest publishing company in the world for the wonderful opportunities to publish and disseminate my books. In particular, many thanks to Brett Kurzman and Alex Castro as my immediate Wiley contacts. Also, thanks a lot to many other Wiley people who helped to create and publish my previous two Wiley books. I consider Wiley as a template of the best publishing quality, working with people, understanding, help, and friendship.

I would like to thank my beloved wife and university colleague Adel Safonova a lot for the deep understanding and great interest to all my works, lots of advice, care, help, and support, and in particular for making excellent photos of St. Petersburg and suburbs I used in all my Wiley books.

I would like to memorialize one of the greatest IT persons I have ever known, Professor Lawrence Bernstein from Stevens University of Technology who passed away in 2012. All my books can be considered as devoted to his holy memory. I consider Larry to be one of my greatest teachers, tutors, supporters, and friends, the person who believed in me and my proposals when I first came to Wiley. Larry was the editor of the Wiley Quantitative Computing Series for years. Two of my previous Wiley books were published as parts of his series. The role of Professor Larry Bernstein in their publication, his great help, attention, advice is invaluable. My book can be regarded as continuation of his Wiley book series.

Thanks very much to Microsoft Research for their support to my works, in particular, to Microsoft Windows Azure in Education team who provided to me and my students a number of grants since 2011 to enable our access to the Microsoft Azure cloud computing platform. Without their help this book and my Russian Azure books and courses could not be created.

Thanks a lot to Alexander Gavrilov who worked at the Microsoft Russia university relations team for many years for his great help in getting access to Microsoft Azure and supporting my activity on the creation of my Azure books and courses.

Thanks a lot to Mark Russinovich from Microsoft, the Azure technical fellow, for his inspiring books and presentations on Windows and Microsoft Azure internals, in particular, at the Microsoft TechEd Europe conferences I visited.

Thanks to my book proposal reviewers who helped me to pay attention to some new cloud computing books.

Thanks a lot to my disciples – former students, students, and doctoral students who expressed keen interest in cloud computing, learned it, and developed a number of interesting Microsoft Azure cloud services as their graduate papers and term papers. Some of them are used as appendices to my book.

Special thanks to Dmitry Grigoriev, my talented disciple who proved his candidate of sciences dissertation on aspect-oriented programming and our Aspect.NET toolkit under my supervision – now an associate professor of our university chair – and to his wife and university colleague Anastasia Grigorieva, for their advanced research work on using Aspect.NET [1] for refactoring cloud applications for Microsoft Azure platform covered in Chapter 4.

INTRODUCTION

To get better acquainted with the subject of the book, let us first understand what the key ideas and motivations of cloud computing are, why it is so attractive, popular, prospective, hot, and fashionable worldwide, what are the issues of the cloud approach and directions of its future development, and what kind of interest and activity relative to cloud computing different categories of people demonstrate right now.

THE CLOUD AS AN INNOVATIVE CHANGE OF COMPUTING PARADIGM

The metaphor of the cloud, depicting a symbol of the Internet or any other network, appeared long ago, probably in the 1960s when the first networks appeared. However, a picture of the cloud itself is not enough to explain the key ideas of cloud computing. To understand the motivation and the essence of cloud computing better, let us consider how the viewpoint on using computers to make computations or to get access to some data has changed over the years. The key questions are as follows: what is the best way to use computer services, what is required from the user (client) to do that, and what is the center of the computation in different approaches to it?

In the 1950s, computers were isolated “monsters,” each occupying a large hall, requiring huge amounts of electric power, water, or air cooling, a brigade of people taking care of the computer hardware and software, and serving as intermediary between the computer and its users. The only way to use a computer was to get full personal access to it for some time, to solve just a single task at each moment; the interfaces between the computer and the user were very poor, such as punched cards or punched tapes as program and data input media and engineering control panels where the content of the computer memory was displayed by hundreds of LEDs, each depicting a bit of information. No networking was used to connect computers and their users to each other.

In the 1960s, the first operating systems appeared, which allowed the users to share the computer resources – CPU, memory, input/output devices – between several users and several tasks. Also, in the late 1960s, the first computer networks appeared, such as ARPANET. Such innovations allowed the clients to use computing resources in the shared mode, and, even more important, to use networking to transfer information from one computer to the other.

In the 1970s, networking technologies, hardware, and protocols developed rapidly. The number of computers connected to networks increased, from several dozens in the 1960s to several thousands in the 1970s. Ethernet and TCP/IP protocols were developed as the basis for the future worldwide network – the Internet whose birth goes back to the early 1980s.

So the computing paradigm has changed from the isolated use of a single computer to solve a single task to the use of the client computer resources, along with the other computing resources available via some network, to solve a set of everyday tasks. It became possible to avoid keeping all computing resources on the client computer. However, much effort was still required from the clients, related to many extra software and/or hardware installations and settings. Even in order to use a set of office applications needed every day for creating, printing, and exchanging documents, such as Microsoft Office, this set of applications needed to get installed on the client computer, which required extra disk space of the client computer and extra working time of the computer user.

THE BASIC IDEA OF THE CLOUD AND ITS ADVANTAGES

Developers and users of computing technologies, over several decades, have come a long way from local computations on isolated machines to the use of local area, regional area, and global area networking and, finally, to the clouds – full virtualization of resources based on the only “window to the world” of computations – a Web browser through which all the cloud resources are available.

The basic idea of cloud computing is as follows: to help the client to avoid any extra installations on his or her computer and to consume a ready-to-use structured set of virtualized computing Web services, both software and data (“the cloud”), via Web browser, without any extra requirements to cloud client computers. Only a computer with an operating system, a Web browser, and access to the Internet are necessary from any client to use the power of cloud computing.

Speaking in more general terms, cloud computing is now a more and more popular innovative approach to virtualization of computing resources, platforms, and infrastructures based on using via the Web a set of powerful computers, and a huge amount of software and databases stored on the computers of the cloud provider's datacenters.

This approach is really innovative, since it radically changes the viewpoint of the software developer on the use of resources. Instead of the time-consuming and effort-consuming approaches of the past, such as, “I'll install these and that programs and data on my computer and will solve this task (the installation may require several days, and a serious upgrade or even a replacement of the computer could be required),” we can now use the modern cloud approach: “I'll subscribe to the cloud services of the XXX company for six months and will solve with the help of cloud resources all my necessary problems, using the cloud when and where it will be comfortable for me, communicating to the cloud from my smartphone or from my laptop.”

Please feel the difference between the above two approaches. Due to the use of the cloud, the user is freed from routine and mundane work and switches to creative activity. When the user becomes the author of useful software cloud applications, he or she will be able to use the cloud for publishing his or her own software.

So the metaphor of the cloud, with cloud computing, now acquires a new sense. Before the cloud era, the center of organizing computations was a client computer or, in some cases, a local area network. The Internet was used just as a source of useful information or useful software applications that should be downloaded from the Internet and installed on the client computer. Now, with cloud computing, the cloud (part of the Internet) becomes itself a powerful tool of organizing and performing computations, and the client computer (via a Web browser) is used as a tool to control the computations and to visualize the results.

The advantages of such approach are obvious: the set of computing resources, referred to as the cloud, can be implemented on powerful server computers located in the datacenters without the clients' participation, and the only thing the cloud clients should do is to consume cloud services via the Web, using their browsers and any kind of computing devices, from desktop or laptop computers to mobile devices such as smartphones, to solve their everyday tasks using the cloud. No installations on client computers and no extra client resources are required.

So, looking from the client side, cloud computing provides just unlimited opportunities. Any client, a specialist in any problem domain (e.g., a doctor, a scientist, or a teacher), can use the cloud in his or her everyday activity, due to the cloud's Web interface being available for use either from a mobile device or from a laptop computer – this is all that is needed from the client. So the following prospective picture of the near future can be imagined: all computing resources are structured and available from the clouds, and everybody is using the appropriate cloud in their everyday activity.

This approach to computing is radically different from the previous ones used in the history of IT: no need to carry a computing center with you every day, no need to learn and perform subtle networking settings typical of client operating systems – just a smartphone and access to the cloud are enough to get all necessary computing resources.

Thus, two very important principles are being implemented, due to cloud computing: pervasive use of computers in everyday activity and user-centric computing. The latter principle means that a comfortable working environment is implemented for any user to work in the cloud, the same working environment, irrespective of the kind of computing device the client is using. More traditional approaches to computing actually require the user to be part of the existing computer system he or she uses and perform specific settings to be able to work under proper conditions. Speaking in a straightforward manner, cloud computing enables the principle of computer for the user, rather than the user for the computer.

ISSUES OF THE CLOUD APPROACH AND OF ITS LEARNING

No matter how attractive the cloud approach is, a number of initial questions arise in a moment when you realize the idea of the cloud. Question number one is security and reliability of the cloud, that is, cloud computing trustworthiness. Please note that it closely relates to the title and the motto of my book. Not only software cloud services are located on server computers in the datacenters implementing the cloud but any kind of the client data (including confidential information) has to be also stored in the cloud. The question arises as to how secure it is. Is there any guarantee that the client's private data will not be somehow stolen from the cloud datacenter computers? Storing private data on a private computer, intuitively, looks more secure. But this intuition is wrong: now every computer is subject to cyber attacks via the Internet or any other network the computer is using [1].

Question number two is performance and scalability of the cloud: How fast will this Web browser interface be to the cloud? How many users will the public cloud handle at each moment without any failures, hangings, or substantial time delays? This set of concerns also relates to the trustworthiness of the cloud: the clients just would not use non-reliable, non-scalable, or too slow a cloud.

From the viewpoint of the developers and the providers of the cloud, there are several problems to solve. First, implementation of a public cloud to be consumed by many million users requires giant computing resources that cost a lot of money, requires a lot of office space (some datacenters occupy large multistoried buildings), and consumes a lot of electric power. Second, the architecture of the cloud should enable its elasticity – adaptability to the fast changing number of users (up to several million). Third, cloud security should be guaranteed, which is a serious problem in the present circumstances of danger of cyber attacks.

From the student viewpoint of those who are eager to quickly learn the cloud architecture and start using the cloud, there is also a serious issue. The cloud architecture is very complicated and requires thorough learning. As we see later on in this book, the architecture of the cloud consists of many layers and tiers of cloud hardware and software, which makes it non-evident (as compared, e.g., to a simple class hierarchy typical of an ordinary object-oriented application).

There is yet another cloud learning issue related to changing the viewpoint to computations in cloud computing. Traditional computations operate with data in memory or external memory in the form of variables, arrays, records, and databases that have evident ways of naming, structuring, and handling. In cloud computing, an elementary unit of data or software is represented not by a variable, array, or database located in virtual or external memory, but by a Web site with its specific URL address whose format is characteristic of the cloud platform being used. Since the elements of the cloud storage are accessible via Web interfaces, they have to be accessed via URL addresses. Most software developers, even experienced ones, are not accustomed to such methods of computing.

ELEMENTS OF THE CLOUD APPROACH ALREADY IN USE

There are several kinds of cloud features we all use every day and it has already become quite traditional for us, so that we often do not realize that we are already using cloud technologies. The first one is cloud disks (cloud memory). Modern operating systems, for example, Windows 8/8.1, provide such features as Dropbox – a cloud disk space that can be used to back up the data stored on your computer. Many other toolkits, such as SkyDrive or Yandex.disk, provide an opportunity to create a named item of cloud disk space to share some piece of information with your colleagues, without the need for sending those data by email, just by sending a Web reference to the cloud disk space item you created. So, in fact, cloud disks are the first step to overall use of cloud technologies and making them ubiquitous. Using cloud disks in everyday practice greatly extends our opportunities to store and share big data over the Internet.

Another opportunity for a modern user is to use free cloud analogs of office applications. For example, to create or read a Microsoft Office file (.docx, .xslx, .pptx, etc.), it is not necessary to buy and install Microsoft Office. It is quite enough to use the Web site http://www.live.com, which provides a free cloud analog of Microsoft Office. Using this cloud office application, which has become quite popular right now, you can create, for example, a Word file, keep it in the cloud, and use it whenever needed, without spending your computer disk space to save it. Yet another set of examples of free cloud services are Web interfaces to email servers, e.g., Google mail (Gmail.com), Hotmail.com, or Mail.ru.

So using free cloud analogs of office applications extends our opportunities of document processing.

These are just a few examples to prove the usability of the cloud computing approach in many everyday situations of using computers.

NEXT STEPS OF CLOUD DEVELOPMENT AND THEIR ISSUES

To briefly formulate the next related set of tasks for cloud and cloud application developers, the next step is to create a comfortable cloud-based working environment for everyday use by any kind of specialists of various problem domains – from doctors to scientists, teachers, or just children or housekeepers. This is a challenging task for software developers, for the first turn, for students eager to learn, use, and enhance the cloud.

The problems of cloud trustworthiness outlined above are yet another set of challenging tasks for cloud developers. The cloud should be simpler, should have intuitively evident user interface, and should have a simple and logical system of naming the elements of the cloud (represented as a set of Web sites).

The first cloud was developed by Amazon in 2008 – Amazon Elastic Cloud 2 (Amazon EC2), now called Amazon AWS. This date can be considered to be the origin of the cloud. Since then, there has been a boom in cloud computing. Many major and even smaller companies who realized the advantages of the cloud approach and have enough resources started to develop their own clouds (see Chapter 2). However, it became clear in practice that developing and supporting a public cloud (which may be available to million users at each moment) is a task only realistic for big companies with huge resources. A more realistic task for a small company is to develop and support a private cloud, the cloud available only to the employees of the cloud owner company, since implementing such a cloud requires only several computers with midlevel computing resources. So, for any company, the first step of cloud development is to create the company's private cloud.

Realizing that the cloud is a method to greatly increase the number of users and their applications, software companies started to port their software products to the cloud, that is, to develop cloud analogs of popular applications. However, they faced many problems, since straightforward porting of any software code to the cloud is impossible because of the radically different paradigm of cloud computing considered above: cloud software should operate Web sites as elementary units of information available in the cloud. So porting software products to the cloud may require dramatic changes in their architecture, up to full redesign and rewriting.

Many cloud software solutions have been developed recently in various problem domains. One of the interesting examples is Windows Intune [6] – a cloud solution for Microsoft Azure cloud for creating a network of personal computers and mobile devices (e.g., belonging to employees of some company) controlled by the cloud.

INTEREST IN CLOUD AMONG DIFFERENT CATEGORIES OF SPECIALISTS AND COMMUNITIES

As for actual or potential cloud users, many of them are in the process of making a decision to start using the cloud in their everyday activity and to choose the amount of resources to spend on using the cloud, and need proper advice on that matter and understanding of the cloud specifics. One of the goals of my book and of many other books on cloud is to provide enough information for such cloud users. For them, the first task is to choose the type of cloud to use – a public cloud, a private cloud, a hybrid cloud – a combination of the above, or a community cloud that unites professionals in some domain, for example, IT specialists.

IT researchers are now trying to tie their research to cloud computing, since this is a way to get more funding in the form of grants. From this viewpoint, the area of cloud computing gives plenty of opportunities: it requires solving many nontrivial problems of software and hardware architecture, resource allocation and management, software trustworthiness, networking, and so on.

Annually, hundreds of conferences are held on cloud computing – both business style, discussing the ways to better apply clouds in business activities, and scientifically oriented. For example, the biggest annual IT conference, Microsoft TechEd, with several thousand participants every year, provides a lot of information on cloud computing. In 2013, the Microsoft TechEd Europe Conference in Madrid (June 2013) I visited had two special sessions on cloud computing, Modern Datacenter and Windows Azure Application Development, with about a hundred talks in each. A number of journals have been recently founded on cloud computing, for example, IEEE Transactions on Cloud Computing. Special scientific communities are created on cloud computing, for example, IEEE Cloud Computing Community, of which I have been a member for a few years. It distributes interesting novel information on the cloud.

As for teaching cloud computing ant its use in education, both in high schools and in universities, I should say that it is just starting. There are not so many universities where courses on cloud computing are taught now. Our St. Petersburg University is one of the pioneers of teaching and using cloud computing in Russia. The interest of students in cloud computing is deep. Each educational year several of my students develop their term projects and graduate projects using cloud computing. The results of our research and teaching activity in this area are covered in this book and in my Russian books and Internet courses [3–7]. At our university, I teach cloud computing as part of the basic course on networking for the second year students, and also as part of yet another bachelor level course on models and architectures of software and knowledge (for the fourth year students), as an example of modern innovative approach to software development and use. This year I am starting my new university course titled “Cloud computing” as a graduate one-semester course for masters degree students majoring in the mathematical foundation of informatics. In any case, I combine my theoretical lectures on cloud computing with practice, based on Microsoft Azure cloud platform. Thanks very much to Microsoft Research who provides free academic access to Microsoft Azure to my students for the whole educational semester, enough to learn everything and develop a term or graduate project in the cloud.

There are many cloud computing books available on the market. For example, among the best ones are the books [8–12]. However, the limitations of most other cloud computing books are their business orientation, brief formulation of basic concepts of cloud computing, lack of scientific analysis, and, therefore, poor suitability for teaching. The authors of some of the cloud computing books prefer to use the following scenario: overview the basic cloud computing paradigms and concepts, emphasize the importance of cloud computing for business, and estimate the cost of using clouds. This is good but not enough, especially for teaching cloud computing.

What is needed for cloud computing literature, especially for university teaching, is detailed and understandable explanation and scientific analysis (using examples and analogies) of very complicated cloud architectures; examples of working cloud services; concrete information on widely spread cloud platforms (Google cloud, IBM Bluemix Cloud, Microsoft Azure cloud, Oracle Cloud, etc.) suitable for practical use, along with an overview of their key concepts. I hope my book will be helpful in this respect.

In addition, I wish for the authors of cloud computing books to make their books more interesting, attractive, and desirable to read, rather than dull and full of structured itemized definitions of basic concepts and technical acronyms that make books difficult to read. My feeling of cloud computing is that it is so attractive, exciting, and innovative that it deserves learnable and reasonably emotional books that inspire young people to their own inventions and developments in this new area.

To complete this short introduction and to proceed to more detailed consideration of cloud computing and their trustworthiness, I wish the readers to feel the advantages and perspectives of the “universe of cloud computing” by practice with some cloud computing platform. Most cloud developer companies (e.g., Oracle and Microsoft) provide complimentary trial access to their clouds for 1 month.

EXERCISES TO INTRODUCTION

EI.1 What are the key ideas of cloud computing and its advantages?

EI.2 Overview the evolution of approaches to computing during the 1950s, from local computing on isolated non-networked machines to cloud computing.

EI.3 What kind of software and connections are required from a client for using the cloud?

EI.4 What kind of software tool enables the interface between the client and the cloud?

EI.5 Please define cloud computing in the most general way you know.

EI.6 What is a datacenter?

EI.7 What kinds of clouds do you know? What is public cloud, private cloud, hybrid cloud, and community cloud?

EI.8 How is an elementary item of information represented and addressed in cloud computing?

EI.9 What was the name of the first cloud computing platform and by which company was it developed?

EI.10 What kind of issues of cloud computing do you know?

EI.11 What kind of cloud tools and applications are already in everyday use right now?

EI.12 What is Windows Intune?

EI.13 Please describe the kind of issues a software developer experiences when he or she is trying to port his or her application to the cloud and why.

EI.14 Please name the journals on cloud computing you know.

CHAPTER 1PRINCIPLES AND CONCEPTS OF CLOUD COMPUTING

1.1 KINDS OF MODERN SOFTWARE ARCHITECTURES

Before diving into cloud computing itself, let us consider some important concepts and kinds of modern software architectures and analyze the place of cloud computing in this scheme.

Here are some typical kinds of modern software:

Client–server systems

Web services and Web applications

Integrated distributed software solutions

Built-in systems

Real-time systems

Software for mobile devices

Software for wearable computers

Middleware (midlevel software)

Software for cloud computing and datacenters

Software for computer clusters

Software for virtualization

Software for information management

Software for knowledge management

Software for scientific computing.

In general, modern software architectures tend to get more and more complicated.

Client–server system paradigm and architecture have become widely spread for decades. A client–server system consists of a server or set of servers and a set of clients, connected to a local area network. The following kinds of servers are used in most local networks: application server, Web server, email server, database server, file server, and so on [13].

Internet (Web) applications are intended for use on the net. Currently the majority of them are developed on .NET [14] or Java [15] platforms, though some software developers still prefer to write Internet applications in older languages such as C. In modern Web programming, languages with dynamic types are widely used – JavaScript, Python, and Ruby. Their characteristic features are the dynamic change and construction of new types at runtime, which is comfortable, since it reflects the dynamic nature of Web applications and Web sites.

Internet applications are classified into client side applications (e.g., Web browsers) and server side applications (e.g., Web services).

Integrated software solutions