cloud ready apps
TRANSCRIPT
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