Designing for Cloud


Published on

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Delivering hosted services over the InternetIt is sold on demand, by the minute or the hourConsumable as much as neededService is fully managed by the provider
  • Value chain of each layer moving to SaaSIaaS provide middleware vendors and traditional applications or for developers who uses SaaS maturity level 0PaaS prodivde services for SaaS product buildersSaaStargetted for the end users, applicatoin integrator
  • what are their strengths
  • Cloud ServicesHow much specializedSupport for Multi-tenancy (IaaS / PaaS)ALM options (development to hosting)Languages and APIs providedSubscription basedElasticity and ScalabilitySupport and SLAs
  • Your application and storage may be scattered within one data center Carefully select the regions for your distributed components
  • Not bigger hardware, scale in and out using scale units that are easily duplicated
  • Work producers and consumers are decoupledWork produce and they continue on workThroughput is controlled by number of web and worker role instancesService bus queues with or without topics, publisher and subscriber
  • Transient errors and throttling are normal in distributed systemsInstead of simply failing have retry mechanisms to manage transient conditionsCheck out Transient application block
  • Durability of roles not quaranteedDon’t use file systemsDon’t use in memoryUse external storage to keep sessions and states, so that recovered roles can pick them anywhere
  • Network calls make overhead for packet framing, serialization, processing.Batch in chunks and communicatePossibility of loosing data and increased latency
  • Throughput and latency are normally bound by how quickly data and context can be retrieved, shared, and updatedDistributed cache in azure, this also visible to all scaled nodes
  • Horizontal partitioningDuplicate tables in across diferent databases according to a key
  • Platform is provides time to market re-usable technical components for product business modulesHave PaaS specific dependencies and configure them at deployment timeAt the same time make sure to use native services for greater performance and reliabilityResilliant against PaaS API changes, If there’s business sense you should be able to move in out from cloud to onpremise by using component configurations only.Sometimes you may choose another PaaS provider as you might have some issues with current provider
  • Instrument the application to monitor potential bottlenecksMonitoring inside application allow us to know when to scale out Monitoring from outside allow us to check whether service performance within acceptable range
  • Designing for Cloud

    1. 1. {Designing for CloudWindows Azure
    2. 2. What is Cloud Computing?
    3. 3. Broad CategoriesApplicationDevelopment /DeploymentEnvironmentCompute Resources /Managed Resources
    4. 4. Few Providers
    5. 5. Who’s the best Cloud provider?Azure Amazon AWSVs
    6. 6. IaaS uses VirtualizationData Center 1ResourcePool 1Network scaleunitCompute scaleunitStoragescaleunitResourcePool nNetwork scaleunitCompute scaleunitStoragescaleunitData Center nResourcePool 1Network scaleunitCompute scaleunitStoragescaleunitResourcePool nNetwork scaleunitCompute scaleunitStoragescaleunitPaaS
    7. 7. Designing a product for a SaaSProviderTargeting Windows Azure
    8. 8. Current Product Vs Company GoalsBusiness• Unable to reach small and large customers• Inflexible product subscription vs Modulersubscription• Time-to-marketTechnical• Many product code bases• Tedious deployments• Scalability• Extensibility and maintainability
    9. 9. Goal for new productdevelopmentMake use of PaaS as mechanism to deliver product toend-usersTest the high level structure of new product on Cloudplatform before invest on the full-fledged systemdevelopment
    10. 10. Identifying the Technical Product
    11. 11. Architectural Release• Early Performance testing• Early Reliability testing – e.g transient conditions• Early Scalability testing• Adapt Best Cloud practices• Once the component structure is ready we caniteratively evolve the solution
    12. 12. Design Techniques
    13. 13. Scale UnitsWeb Role Worker RoleSupport Services
    14. 14. Decoupled IntegrationsWeb Roles Worker Roles
    15. 15. Transient ConditionsWorker Db
    16. 16. State ManagementWeb RoleWorkerWebStore
    17. 17. Message frequency and sizeWorker WorkerWorker Worker
    18. 18. CachingWeb RoleWorker RoleCacheDb
    19. 19. Database ShardingRoot201>101-2000-100Partitions
    20. 20. PortabilityTechnical Product PlatformModule 1 Module NDeploymentAbstractionComponentconfigurationsPaaS
    21. 21. Monitoring
    22. 22. Azure Service BUSImport WebRoleSign-in andSign-up WebRoleSSO &User Profiles(NoSql)Web ClientDistributed CacheQueuesImport DataTransformWorkerImportBlob Store(Text)ImportTransformWorkflowTransformed/Open Data(Table - NoSql)Reconcile WebRoleAutoMatchingWorkerBusinessReportingStore (Sql)Reporting WebRoleUsageStore (Sql)Usage DataCollectionWorkerLevel 0 SolutionComponent View
    23. 23. Why a Service Bus?• Enable us to build loosely coupled integrated systemthat is more resilient to network failure• Easily scale out based on demand and support loadbalancing• Eliminates direct dependencies between differentcomponents.
    24. 24. ScalabilityWeb RoleInstanceWeb RoleInstanceWeb RoleInstanceWeb RoleInstanceService BusQueueRequestMessageMatchingServiceInstanceMatchingServiceInstanceMatchingServiceInstance
    25. 25. Azure Service BUSWeb ClientQueuesTransformed/Open Data(Table - NoSql)Reconcile WebRole Instance 1AutoMatchingWorkerBusinessReportingStore (Sql)Runtime ViewReconcile WebRole Instance2Reconcile WebRole InstanceNAutoMatchingWorkerAutoMatchingWorker NSubscription SubscriptionSubscription
    26. 26. Implementation View• Technical product components• Business product components• Cloud framework• Runtime platform dependency by configuration
    27. 27. Migrating Existing apps• Check for file system dependencies• Compatibility of Database (ANSI / Sql 2008)• Resource Throttling• Refactor to take advantage of shared storages
    28. 28. Thank you!