Cloud Ready Apps

Cloud Ready Apps Key concerns Chatura de Silva

Transcript of Cloud Ready Apps

Page 1: Cloud Ready Apps

Cloud Ready AppsKey concerns

Chatura de Silva

Page 2: Cloud Ready Apps


• Intro

• Comparison on traditional hosting and Cloud environments

• Think Cloud, general concerns for design

• Aren’t you locked-in with specific platforms?

• Demo

Page 3: Cloud Ready Apps

Cloud Computing?

Remote Hosting


On premise

Page 4: Cloud Ready Apps

Key differences in Cloud Computing

Software on a Traditional Hosted Server Cloud based Software Service

Virtualization Virtualization with scale units

Fixed price for a spec Elastic Resource Management

Uses Distributed Computing

Limited scalability (scale up) Pay by use

Self Service

Resources are exposed via APIs (IaaS, PaaS, SaaS)

Page 5: Cloud Ready Apps

Typical Web Application Design


Business Logic

Service API


Client App

Web Server

Db Server

Page 6: Cloud Ready Apps

Today’s Business Requirements

• Serve the masses, including Long Tail

• On demand supply and consumption – (resources / cost)

• Better cost management / Economies of scale

• High availability

Page 7: Cloud Ready Apps

Limitations on general web application designs

• Serve the masses, including Long Tail• Infrastructure is rigid for scalability, need lot of effort to make it scalable

• On demand supply and consumption• Underlying infrastructure virtualization is not based on scale units which are not

elastic• Due to hosting pricing structure you will have to pay more than what you need, lot of

fixed overheads

• Better cost management • End customers of the product demand low prices on higher volumes and this cannot

be sustained with hosting provider• Unable to gain economies of scale, ultimately increasing cost of acquiring new

customers and forced to live with medium sized few customers.

Page 8: Cloud Ready Apps

Does SaaS == Cloud ?

1. On-Demand

2. Broad Network Access

3. Resource Pooling

4. Rapid Elasticity

5. Pay-as-you-Go

Page 9: Cloud Ready Apps
Page 10: Cloud Ready Apps

Typical PaaS services (Windows Azure)

Page 11: Cloud Ready Apps

Cloud relies on Distributed Systems

• Therefore Inherently Cloud systems has 3 aspects to manage• Consistency – all nodes are up to date with state of data

• Availability – all times requests can be served

• Partition Tolerance - tolerance to network partitions

When a network partition happens one must decide the degree of Consistency and Availability that can be given as its not possible to achieve 100% of both.

Page 12: Cloud Ready Apps

Design Aspects - Availability


• How to maintain high availability amid system errors, infrastructure problems, malicious attacks, system over load

Page 13: Cloud Ready Apps

Design Aspects - Availability

Possible Solutions

• Load leveling between tasks and a service by using a Queue

• Controlling resource usage with soft limits while achieving end user SLAs

• Geo replications

Page 14: Cloud Ready Apps

Design Aspects – Data Consistency

• Concern:

For scalability and availability multiple nodes are used and how do you make sure consistency

Page 15: Cloud Ready Apps

Design Aspects – Data Consistency

Possible Solutions:

• Partitioning

• Cache

• Event based updates

Page 16: Cloud Ready Apps

Design Aspects – Performance


• When data is distributed need some mechanism to over come delays and maintain throughput

Page 17: Cloud Ready Apps

Design Aspects – Performance


• Distributed Cache

• Command and Query Responsibility Segregation

Page 18: Cloud Ready Apps

Design Aspects – Monitoring

Concern: Apps are running on remote data centers and this leads to challenges in monitoring all the component of their health.

Page 19: Cloud Ready Apps

Design Aspects – Monitoring


• Deploy monitoring agents

• Instrumentation

• Take action appropriately according to state of health

Page 20: Cloud Ready Apps

Design Aspects – Responsive Scalability


Ability of a request to maintain its performance under increasing load

Page 21: Cloud Ready Apps

Design Aspects – Responsive Scalability


• Load balancing with multiple nodes for each component

• Competing consumers

• Decoupling with message queues

Web Role InstanceWeb Role InstanceWeb Role InstanceWeb Role Instance

Service BusQueue

Request Message

Matching ServiceInstance

Matching ServiceInstance

Matching ServiceInstance

Page 22: Cloud Ready Apps

Design Aspects – Resiliency


Due to distributed nature of Cloud platforms and that services are delivered over internet, temporary or permanent failures in next work can happen

Page 23: Cloud Ready Apps

Design Aspects – Resilience


• Retry strategies

• Go into partition mode with high availability

Page 24: Cloud Ready Apps

Design Aspects – Asynchronous UI updates


With distributed nature of the Cloud apps and strategies used to handle failures (e.g Retry) end users could feel delayed responses

Page 25: Cloud Ready Apps

Design Aspects – Asynchronous UI updates


• Responsive rich web clients

• Client caching

• Notification panels

Page 26: Cloud Ready Apps

Design Aspects – Multi-Tenancy


While sharing much of resources (reduce cost) across many tenants how can we guarantee data isolation

Page 27: Cloud Ready Apps

Design Aspects – Multi-Tenancy


• Use partitioning at every level

• Use encryption

• Use multiple storage accounts

• Use multiple datacenters

• Traffic management

Page 28: Cloud Ready Apps

Move Between Cloud and non Cloud Infrastructure

Technical Product Platform

Module 1 Module N

Deployment Abstraction

Component configurations


• Get the native service advantage on Cloud

• Write technical product platform

• Based on run time you can append adapters and configure components

Page 29: Cloud Ready Apps

Azure Service BUS

Import Web Role

Web Client

Distributed Cache


Import Data Transform


Import Blob Store (Text)

Import Transform Workflow

Transformed /Open Data

(Table - NoSql)

Reconcile Web Role

Auto Matching Worker

Business Reporting Store (Sql)

Reporting Web Role

Usage Store (Sql)

Usage Data Collection


Solution Architecture

Data Sync Worker