Cloud Ready Apps

Post on 18-Jul-2015

83 views 3 download

Tags:

Transcript of Cloud Ready Apps

Cloud Ready AppsKey concerns

Chatura de Silva

Agenda

• Intro

• Comparison on traditional hosting and Cloud environments

• Think Cloud, general concerns for design

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

• Demo

Cloud Computing?

Remote Hosting

App

On premise

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)

Typical Web Application Design

DAL

Business Logic

Service API

Db

Client App

Web Server

Db Server

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

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.

Does SaaS == Cloud ?

1. On-Demand

2. Broad Network Access

3. Resource Pooling

4. Rapid Elasticity

5. Pay-as-you-Go

Typical PaaS services (Windows Azure)

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.

Design Aspects - Availability

Concern

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

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

Design Aspects – Data Consistency

• Concern:

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

Design Aspects – Data Consistency

Possible Solutions:

• Partitioning

• Cache

• Event based updates

Design Aspects – Performance

Concern:

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

Design Aspects – Performance

Solution:

• Distributed Cache

• Command and Query Responsibility Segregation

Design Aspects – Monitoring

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

Design Aspects – Monitoring

Solution:

• Deploy monitoring agents

• Instrumentation

• Take action appropriately according to state of health

Design Aspects – Responsive Scalability

Concern:

Ability of a request to maintain its performance under increasing load

Design Aspects – Responsive Scalability

Solution:

• 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

Design Aspects – Resiliency

Concern:

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

Design Aspects – Resilience

Solution:

• Retry strategies

• Go into partition mode with high availability

Design Aspects – Asynchronous UI updates

Concern:

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

Design Aspects – Asynchronous UI updates

Solution:

• Responsive rich web clients

• Client caching

• Notification panels

Design Aspects – Multi-Tenancy

Concern:

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

Design Aspects – Multi-Tenancy

solution:

• Use partitioning at every level

• Use encryption

• Use multiple storage accounts

• Use multiple datacenters

• Traffic management

Move Between Cloud and non Cloud Infrastructure

Technical Product Platform

Module 1 Module N

Deployment Abstraction

Component configurations

PaaS

• Get the native service advantage on Cloud

• Write technical product platform

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

Azure Service BUS

Import Web Role

Web Client

Distributed Cache

Queues

Import Data Transform

Worker

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

Worker

Solution Architecture

Data Sync Worker