cloud ready apps

Download Cloud Ready Apps

Post on 18-Jul-2015




3 download

Embed Size (px)


  • Cloud Ready AppsKey concerns

    Chatura de Silva

  • Agenda


    Comparison on traditional hosting and Cloud environments

    Think Cloud, general concerns for design

    Arent you locked-in with specific platforms?


  • Cloud Computing?

    Remote Hosting


    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


    Business Logic

    Service API


    Client App

    Web Server

    Db Server

  • Todays 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


    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


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

  • Design Aspects Data Consistency

    Possible Solutions:



    Event based updates

  • Design Aspects Performance


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

  • Design Aspects Performance


    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


    Deploy monitoring agents


    Take action appropriately according to state of health

  • Design Aspects Responsive Scalability


    Ability of a request to maintain its performance under increasing load

  • 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

  • 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

  • Design Aspects Resilience


    Retry strategies

    Go into partition mode with high availability

  • 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

  • Design Aspects Asynchronous UI updates


    Responsive rich web clients

    Client caching

    Notification panels

  • Design Aspects Multi-Tenancy


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

  • Design Aspects Multi-Tenancy


    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


    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


    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