-
What the Module Covers
- Cloud Computing
- Service and deployment models
- Microsoft PaaS Azure App Services as a “vehicle to test the concepts”
- Fundamentals of XML and JSON
- Cloud Storage
- Non-relational and Relational databases
- Web Services
- REST:- Web API
- Security
- Security, authentication and authorisation in web services and the cloud
NIST definition of Cloud Computing
- Cloud Computing is a (pay-per-use) model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g. networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
- NIST = National Institute of Standards and Technology (US Government body)
- Sep 2011
The Prime Motivators
- 1.It’s cheaper.
- It is cheaper to use computing resource as a utility rather than investing in it physically yourself.
- You don’t get involved in installations/faults/OS upgrades/patches.
- You employ no (less?) server people – a big cost reduction.
- 2.It can be done.
- Much of the technology is not new so it is not revolutionary. It is however an evolution of distributed systems which has now become possible due to sufficient advances in computational speed/ unit cost reduction together with network speed and infrastructure investment.
- Although scalable distributed applications remain hard to develop, how to do it is already largely understood.
- Proper data scalability is now possible with non-relational data
On-Premises Data-Centres
Need lots of electric power (1.5% of all US electricity, EPA 2007).
Long lead time to build.
Inflexible investment of capital.
Need specialized skills (security, failover, load balancing, etc.) .
Takes time away from core competencies.
Private and secure.
Hard for all but largest companies to own/run.
-
Cloud Data-Centres
Can reap economies of scale.
Because of scale can afford specialized skills.
Web developers can concentrate on their core competencies that give them market advantage.
Shorter lead times.
Lower capital requirements.
Multi-tenanted.
Computing power becomes a commodity as did electric power in early 20th century.
- Shared pool of compute resources.
- compute, storage and network
- cheap commodity hardware
- i.e. readily available cheap identical servers/routers etc.
- easily replaced when faults occur
- may be optimised for cloud and purchased in bulk by cloud vendor
Multi-tenancy: shared subsets allocated to customers as needed and subsequently returned.
Workload Patterns suitable for Cloud Computing
- On & off workloads (e.g. batch job)
- e.g. scientists running modeling software for new drug
- installed capacity is wasted when not being used, but:
- users idle while waiting for jobs to finish…
- Growing fast
- successful services need to grow and scale e.g. new Internet game that catches on
- deployment and scaling lags stunts market growth at key critical moment
- need capital for software development or marketing instead of building data centre
- Predictable bursting
- many services have seasonal trends, either macro (festivals) or micro (sports events) or peak hours
- peak load can exceed average load by factor 2x-10x
- but: few users deliberately provision for less than the peak
- result: server utilization in existing data centers ~5%-20%!!
- dilemma: waste resources or lose customers!
- Unpredictable bursting
- Unexpected/unplanned peak in demand e.g. important breaking news events
- can’t afford to provision for extreme case, but failure to handle it well can destroy business
- important that service level agreement for such business areas e.g. the press, are previously agreed
-
When Cloud may not be useful
- Control over Server
- CPU, memory, other specs
- Latency Concerns
- Slower
- Legislative Issues
- Access to data
- Geopolitical Concerns
- Cloud out of UK
Main Principles of Cloud Computing
Pooled Resources
Virtualisation
Elasticity
Automation
Metered Billing
- Pooled Resources
- commodity computing
- pay as you go
- available to anyone
- exploits economics of volume
- massive replication of identical hardware units
- multi-tenanted
- potential security/legal issues
- shift from capital expenditure to operational expenditure
- lowered barrier for project starts
- Virtualisation
- facilitates consolidation i.e. the need to get maximum utilisation of physical cloud servers by hosting multiple virtualised servers on each
- to efficiently use space/power/cooling...
- the large pool of virtualised servers is the primary unit to be allocated to consumers as needed
- applications must be able to exploit this
- sandboxing aids multi-tenanting
- each virtual server becomes a (system) virtual machine
- technical details in future lecture
- Elasticity
- dynamic scaling i.e. change how much of a resource is consumed in response to how much is needed
- normally need a base set of resources but much more under peak conditions
- scale out rather than scale up
- we add more identical virtual servers
- we do not add more hardware to underpin a single virtualised server
- Automation
- infrastructure is required to:
- for the user and system admin to create and delete virtual servers both manually automatically
- and to pick how many resources they have, where they are located etc.
- automatically monitor performance metrics (CPU loads, queue lengths...) and scale accordingly
- or scale at set times e.g. a peak time of the day
- Metered Billing
- typically have startup and annual contract fees
- beyond that pay as you go
- based on CPU, no. virtual server instances, storage used, I/O...
- entry barriers much lower than for traditional projects
- easier for entrepreneurs as no capital investment
- cost associativity: 1,000 computers for 1 hour same price as 1 computer for 1,000 hours
- access to huge computing resource
- universities, R&D companies
- access to Big Data and its processing
- Hadoop/Map-reduce
- IBM’s Watson
-
Service Level Agreements (SLAs)
- For commercial success, cloud data-centres need to provide customers with strict Quality of Service (QoS) guarantees
- documented as Service Level Agreements
- only then can customers be confident in outsourcing their jobs to a cloud infrastructure
- may differ in application type and workload e.g.
- transactional applications require response time and throughput guarantees
- non-interactive batch job concerns performance (i.e. completion times)
- web applications tend to be highly unpredictable and bursty in nature
- may be complex to supply an infrastructure that can satisfy these competing goals whilst at the same time using the data-centre hardware efficiently
- basic discussion of cloud SLAs at:
🔗 Service Level Agreements in the Cloud: Who cares?
Data in the Cloud
- Relational Data
- there’s lots of it and people want their existing database in the cloud...
- basically the relations between tables limit its scalability
- however there are some ways round this and relational data will need to be accommodated for the foreseeable future...
- Non-Relational Data
- scalable
- NoSQL
- blobs, block storage, key-value stores, queues...
- available as native cloud vendor features e.g. Azure Storage or Amazon DynamoDB or Amazon S3 or by installing MongoDB etc.
More about this in a later lecture.
Distributed Systems
- Notice that the cloud is implicitly a distributed system.
- what we have are a set of multiple virtual servers
- these are going to have to communicate to get the work done
- and/or access shared data in a safe manner
- developing distributed applications is hard
- however many of the problems are well understood and their solutions can be leveraged in the cloud
- However a cloud deployment probably has many more (virtualised) servers than a traditional distributed system.
- many more points of failure
- faults are likely and have to be managed, include:
- disk failures
- network partitioning
- bugs
- human factors....
- on a large scale, faults will be commonplace
Elasticity and Automation in AWS
Monitor the performance => autoscale as appropriate.
Note the load balancing – what are the issues with this?
Distributed Systems
- Web applications are generally (but not always) multi-tier.
- ... and thus distributed applications...
- but the tiers and technologies are generally familiar and not new...
- web, business logic, relational and non-relational data, message passing...
- much of what came before still used but may be tweaked: software design and development, patterns, SOA, web services, OSs, TCP/IP, distributed computing, databases....
- A key issue is data-consistency
- i.e. how to keep data across servers consistent
- imagine sending money between servers– what happens if one side fails but the other works ok?
- in traditional systems we use transaction processing
- this can still work within single data-centres well to a limited degree
- but it will not scale
- also if the data is geo-distributed then transactions don’t work either
- to describe this we need the CAP theorem
- weaker consistency is needed in the cloud (see later)
Topology of Cloud Computing
- A good example is AWS which is 3 tier:-
- 11 high level regions, close to users and in different legal jurisdictions – so both geographically and in network terms distant around world
- regions split into availability zones (AZs) – logical subdivision
- AZs contain data-centres (>=2 data-centres)
- very fast private connections – data-centres in AZ close in network terms but a few km apart in case of a big disaster (e.g. aeroplane strike)
- bespoke hardware design of servers and networking purchased at massive scale
- 46000 servers in a data-centre
- above may already be out of date (from 2014)...
Note that the issues for writing distributed applications are different if they are close or distant – with the distant one they are very hard (again transactions vs. BASE...)
-
Web Services
Cloud applications are often characterised by having front facing web service APIs.
These might be provided as part of the infrastructure e.g. blob storage through REST.
- REST: REpresentational State Transfer
- Resource Oriented Architecture
- use all of HTTP interface methods as originally intended
- lightweight
- SOAP:-
- SOA/RPC type paradigm using HTTP POST
- lots of proven security technologies available
- older, heavyweight, now less popular but an important paradigm to know about
Both these technologies are built on HTTP and so ultimately on TCP/IP.
Service-Oriented Architecture (SOA)
A service-oriented architecture is essentially a collection of services. These services communicate with each other. The communication can involve either simple data passing or it could involve two or more services coordinating some activity.
- a higher level than classes – here we are talking about the whole self –contained service (application) which is a black box, can be used by consumers from a different ownership domain, is loosely coupled from the user and can be discovered at run-time.
SOA is a principle adopted in modern enterprise distributed system design and is also applicable to cloud computing.
- we will also discuss microservices
Data Representation
Web services communicate using structured data represented as text.
- everything understands text...
HTTP can carry basically anything as a payload but Web services use:-
XML
JSON
XML has many other uses including machine readable specification of web services and cloud deployments.
Security in Cloud Computing
- Top Threats to Cloud Computing (CSA 2016)
- Threat #1: Data Breaches
- Threat #2: Weak Identity, Credential and Access Management
- Threat #3: Insecure APIs
- Threat #4: System and Application Vulnerabilities
- Threat #5: Account Hijacking
- Threat #6: Malicious Insiders
- …
Security in Web Services
Message and Transport Security
- Technology
- encryption
- digital signatures
- certification
TLS/SSL & HTTPS
OAuth 2.0 for RESTful Web Services
Identity with OpenID Connect
OAuth and OpenID in the cloud
Security in SOAP with WS-Security
📷 Gartner 2016 - Cloud IaaS Players
XMagic Quadrant for Cloud Infrastructure as a Service Worldwide - Source: Gartner (August 2016) -
Books
Web Services, Service-Oriented Architectures, and Cloud Computing
🔗 https://www.sciencedirect.com/book/9780123983572/web-services-service-oriented-architectures-and-cloud-computingThe basics of cloud computing : understanding the fundamentals of cloud computing in theory and practice, Rountree, Derrick.; Castrillo, Ileana.; 2014
🔗 https://www.sciencedirect.com/book/9780124059320/the-basics-of-cloud-computingMastering cloud computing : foundations and applications programming
Buyya, Rajkumar; Vecchiola, Christian.; Selvi, S. Thamarai.; 2013
🔗 https://www.sciencedirect.com/book/9780124114548/mastering-cloud-computingPractical Azure Application Development A Step-by-Step Approach to Build Feature-Rich Cloud-Ready Solutions
Vijayakumar, Thurupathan. author.; SpringerLink (Online service)2017. Online version in GCU Library.Free ebook: Microsoft Azure Essentials: Fundamentals of Azure, Second Edition
🔗 https://blogs.msdn.microsoft.com/microsoft_press/2016/09/01/free-ebook-microsoft-azure-essentials-fundamentals-of-azure-second-edition/