107,99 €
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.
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:
Seitenzahl: 566
Veröffentlichungsjahr: 2016
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
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
Cover
Table of Contents
Preface
Introduction
Begin Reading
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.
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
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
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.
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 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.
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.
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.
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.
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.
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.
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.
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
