J.D. Meier's Blog

Software Engineering, Project Management, and Effectiveness

Windows Azure Scenarios Map

Windows Azure Scenarios Map

Rate This
  • Comments 9

image

The Windows Azure scenarios map is a consolidated and shared view of the common scenarios and tasks developing applications for the Windows Azure platform. You will find Getting Started and Architecture scenarios first, followed by other common areas. Scenarios in each group should represent common tasks developers for this platform would face.

Your call to action here is simply scan the Windows Azure Scenarios Map below and either share your scenarios in the comments or email your scenarios to me at feedbackandthoughts at live.com.  Be sure to share your scenarios in the form of “how to blah, blah, blah …” – this makes it much easier to act on and update the map.

For a quick review of what a good Scenarios Map looks like, see my related post, 5 Keys to Effective Scenario Maps.

Categories

  • Getting Started
  • Architecture and Design
  • Administration
  • ALM
  • ASP.NET Applications
  • Authentication / Authorization
  • Caching
  • Configuration
  • Data Access / Storage
  • DataMarket (“Dallas”)
  • Deployment
  • General
  • Logging / Health Monitoring
  • Performance
  • Security
  • Service Bus
  • SQL Azure
  • Transactions
  • WCF
  • WIF (Windows Identity Foundation)
  • Windows Azure VM (Virtual Machine) Role
  • Worker Role
  • Workflow

Windows Azure Scenarios Map

Category

Items

Getting Started

  • How to set up your development environment for Windows Azure development.
  • How to build a web site in a web role.
  • How to deploy an application to Windows Azure.
  • How to debug deployed applications.
  • How to build a worker process in a worker role.

Architecture and Design

  • How to implemented layered architecture in the cloud.
  • How to run an on-premise app in the cloud.
  • How to design an application to scale across multiple data centers.
  • How to design a loosely coupled system.
  • How to design around latency issues.
  • How to dynamically increase or decrease the number of role instances based on load.
  • How to use Azure diagnostics to troubleshoot production issues.
  • How to provide incremental progress feedback from a worker role (for ex: progress bar).
  • How to design for integration (custom cloud applications / finished services (BPOS) / on premise / ESB)
  • How to call on-premise data stores from Windows Azure.
  • How to decide if your application is right for Windows Azure (on-premise vs. cloud, advantages/disadvantages).
  • How to scale horizontally.
  • How to scale vertically.
  • How to manage state in the cloud.
  • How to manage logs.
  • How to cache data.
  • How to design for asynchronous work.
  • How to design a tightly bound system.
  • How to segregate application logic between Azure roles.
  • How to create a small-to-medium Web app.
  • How to create a large Web application.
  • How to manage separation of responsibilities in functional roles.
  • How to build a system using both hosted data and on-premises data.
  • How to coordinate multiple worker roles.
  • How to create a parallel processing application.
  • How to use a distributed cache.
  • How to implement multi-tenancy in Azure.
Administration
  • How to manage your subscription(s) when you've got a team of developers.
ALM
  • How to manage both environment and application upgrades.

ASP.NET Applications

  • How to connect to SQL Azure.
  • How to connect to Windows Azure Storage.
  • How to authenticate users using Live ID.
  • How to implement a RESTful interface in an ASP.NET application.
  • How to access certificates.
  • How to manage state in an application.
  • How to connect to a WCF service with an internal endpoint.
  • How to encrypt a value using RSA encryption.
  • How to monitor health of other VM instances.
  • How to access performance counters from code.
Authentication / Authorization
  • How to perform single sign on (Federation).
  • How to turn your application into a claims aware application.
  • How to authenticate callers.
  • How to identify callers.
  • How to manage personally identifying information / sensitive data in the cloud.
  • How to build an STS.
  • How to integrate with Active Directory.
  • How to integrate with my Membership Provider.
  • How to leverage roles (Membership).
  • How to leverage claims.
  • How to turn claims into roles. How to authorize access to a REST interface.
  • How to implement complex logic in claims mapping.
  • How to configure my application for multiple authentication methods?
  • How to perform sign-out from my claims aware application?
  • How to Enable Tracing
  • How to use Windows Azure platform AppFabric Access Control to obtain a Simple Web Token (SWT) after providing a SAML token.
  • How to integrate Windows Azure platform AppFabric Access Control with ADFS.
  • How To: Configure Facebook as an Identity Provider for Azure AppFabric Access Control Service (ACS)
  • How To: Configure Google as an Identity Provider for Azure AppFabric Access Control Service (ACS)
  • How To: Configure Yahoo! as an Identity Provider for Azure AppFabric Access Control Service (ACS)

Caching

  • How to leverage a distributed cache (e.g. Velocity)
  • How to swap out cache providers.
  • How to cache data effectively.
  • How to expire the cache.
  • How to use Azure's VM local storage.
  • How to implement the Azure AppFabric Cache session provider.

Configuration

  • How to configure a web role.
  • How to configure a worker role.
  • How to cache configuration data.
  • How to decide what settings should go in ServiceConfiguration vs. Web/App Configs.
  • How to programmatically change configuration settings.
  • How to set up DNS for Azure applications.

Data Access / Storage

  • How to access Azure Storage tables.
  • How to access Azure Storage queues.
  • How to connect to SQL Azure.
  • How to decide whether to use Azure Table Storage vs. SQL Azure
  • How to access Windows Azure Storage from Silverlight
  • How to upload files to BLOB storage.
  • How to handle connection timeouts with Azure Storage.
  • How to design an extensible schema that will never need to be updated.
  • How to choose a partition key for different entities.
  • How not to get too much data into one partition.
  • How to load initial/domain data (ETL)
  • How to do BI in the cloud.
  • How to store BLOB data for an on premise application.
  • How to organize your containers and blobs efficiently.
  • How to track/retrieve additional information/properties about blobs
  • How to authorize access to containers/blobs
  • How to name storage containers in WAS (what are the restrictions for naming?)
  • How to design a scalable partitioning strategy for WAS.
  • How to authorize access to BLOBs using Shared Access Signatures
  • How to persist a VM drive to Azure Drives.
  • How to organize your containers and blobs efficiently.
  • How to track/retrieve additional BLOB properties.
  • How to use queues for IPC.
  • How to deploy data to an Azure Drive.
  • How to create a WCF Data Services interface for Windows Azure Storage.
  • How to expose SQL Azure through a WCF Data Services interface.
  • How to support transactional data in Azure Storage.
  • How to repartition your live data.
  • How to repartition data.
  • How to programmatically reset and obtain storage access keys.
  • How and when to leverage Azure Local Storage.
  • How to change Azure Storage partitioning of existing services (should scaling needs require a change).
  • How to create idempotent transactions.

DataMarket (“Dallas”)

  • How to use DataMarket from my application
  • How to address security, billing, auditing, and authenticating

Deployment

  • How to install an SSL certificate for an Azure ASP.NET app.
  • How to determine number of instances of roles to deploy.
  • How to roll out a deployment.
  • How to roll back a deployment.
  • How to create and install a deployment certificate.
  • How to deploy applications programmatically through the portal API’s.

General

  • How to push peak loads to the cloud to reduce the size of an on premise data center.
  • How to decide if you application is right for Windows Azure (on-premise vs. cloud, advantages/disadvantages)
  • How to run your own VM in the cloud.
  • How to develop with a team of developers.

Logging / Health / Monitoring

  • How to determine your log destination (EventLog, TableStorage, Flatfile, etc)
  • How to view logs
  • How to monitor the health of a deployed application
  • How to log information from IIS (until IIS Logs are available).
  • How to monitor web roles.
  • How to monitor worker roles.
  • How to alert/alarm if needs are beyond Windows Live Alerts (currently what Azure provides)
  • How to throttle your logging.

Performance

  • How to design around Azure throttling.
  • How to simulate load.
  • How to access/view performance counters.
  • How to do capacity planning.
  • How to compare BLOB storage against VM drives.
  • How to measure performance against CRUD.

Security

  • How to encrypt values stored in configuration files.
  • How to sanitize logging events for sensitive data.
  • How to prevent CSRF attacks.
  • How to protect configuration settings.
  • How to encrypt persisted data.
  • How to secure any sensitive data that is sent between cloud applications.
  • How to store sensitive data in the cloud.
  • How to secure sensitive data sent to a cloud app.

Service Bus

  • How to use the service bus to expose on-premise services to Windows Azure hosted applications.
  • How to use the service bus from a Silverlight client.
  • How to expose “discoverable” services via the service bus.
  • How to authenticate service bus access with AppFabric Access Control.

SQL Azure

  • How to decide between Windows Azure Storage and SQL Azure.
  • How to implement separation of privileges in SQL Azure.
  • How to avoid SQL Azure throttling.
  • How to deploy SQL Azure TSQL or DB schemas as part of application deployment process.
  • How to backup SQL Azure databases.
  • How to restore SQL Azure databases.
  • How to use SQL roles and accounts in conjunction with claims based authentication mechanisms.

Transactions

  • How to implement 2-phase commit.
  • How to roll back.
  • How to update multiple pieces of data at the same time.
  • How to lock effectively.

WCF

  • How to set up transport security for WCF on Windows Azure.
  • How to use client certs with a WCF service on Windows Azure.
  • How to use on-premise user stores for authentication and authorization.
  • How to use internal endpoints with a WCF service.
  • How to expose an on-premise WCF service to a Windows Azure hosted client.
  • How to build a WCF service in a worker role.

WIF (Windows Identity Foundation)

  • How to set up ADFS as an STS for Active Directory.
  • How to create a custom STS.
  • How to create a federation provider STS.
  • How to use a custom claims repository.
  • How to: Using the FederatedPassiveSignIn ASP.NET User Control
  • How to use WSTrustChannelFactory and WSTrustChannel
  • How to identify from Windows Phone to ASP.NET web site?
  • How to identify from Windows Phone to WCF service?
  • How to identify from iPad/iPhone to WCF service?
  • How to identify from droid to WCF service?
  • How to identitfy from Silverlight to WCF service?
  • How to Enable Tracing
  • How to log WCF and WIF traces to different tracing sources
  • How to use svctraceviewer.exe for troubleshoting
  • How to use svctraceviewer.exe to inspect WIF traces
  • How to: Establishing Trust from an ASP.NET Relying Party Application to an STS using FedUtil
  • How to package and deploy claims aware application on-prem?
  • How to package and deploy claims aware application to Azure?
  • How to request an ActAs token.

Windows Azure VM (Virtual Machine) Role

  • How to choose between VM Role and designing for a Web or Worker Role
  • How to design for the VM Role

Worker Role

  • How to communicate between different types of worker roles.
  • How to schedule work.
  • How to group different types of work.
  • How to determine the number of worker roles.
  • How to determine if multiple threads should be used

Workflow

  • How to design for asynchronous work.
  • How to design for integration (custom cloud applications / finished services (BPOS) / on premise / ESB)

Contributors and Reviewers

  • External Contributors / Reviewers – Adam Grocholski; Andy Eunson, Bill Collette; Brent Stineman; Kevin Lam, Rainer Stropek, Terrance Snyder, Will Clevenger
  • Microsoft Contributors / Reviewers – Alik Levin, Carlos Farre, Julian Gonzalez, Mohit Srivastava, Rob Boucher

My Related Posts

  • How to implement the Azure AppFabric Cache session provider.

    How/When to leverage Azure Local Storage.

    Would also like see patterns tailored to non .NET language support and altering Azure Storage partitioning of existing services (should scaling needs require a change).

  • @ Brent -- Thank you.  I updated the scenarios map with your feedback.

  • I have a cold so you'll need to forgive me for not bringing this up yesterday. There's likely an entire category (or two) missing from the list. Namely ongoing ALM as well as subscription management when doing development (shared vs. sandboxed environments). ALM in Azure (how to manage both environment and application upgrades) will present some new challenges to deployed applications. Knowing how to mitigate service outtages will be important info. So too will how to manage your subscription(s) when you've got a team of developers all trying to deploy and test changes.

  • @ Brent -- Good additions.  I added an ALM and Administration bucket, and I consolidated the identity related scenarios to an Authentication/Authorization bucket.

  • It would be nice to see what is a duplicate of what's in ASP.NET (or other) guidance.   That way I can quickly focus on the added scenarios of the Azure offering.

  • yet another late addition. :P How to create idempotent transactions. Direct application to Azure Storage, but also implications to SQL Azure and WCF transactions.

  • Thank you J.D., nice work.

    Two additional ideas:

    Architecture and Design: How to implement multi-tenancy in Azure

    Configuration: How to set up DNS for Azure apps

  • Thanks for providing comprehensive list of technical scenarios. Kudos to the whole team. It would also be nice to have similar consolidated list of various business scenarios where Windows Azure platform fits well. This can help Business Decision Makers to assess their existing environments and make decisions accordingly.

  • @ Chris -- Good point.  I tried to keep the categories narrow where possible, so this makes it easier to see deltas.  I also tried to add key buckets like ASP.NET to help show intersections.  It's an interesting problem, and I'm not sure how to solve it other than adding another lens ... a simplified and pure view of Windows Azure (but it's tough to be pure in the app dev space where it's putting together legos.)

    @ Brent -- Perfect addition.  I added to the storage bucket.

    @ Rainer -- Very nice additions.  I added them to the respective areas and added you to the list.

    @ Rajesh -- Thank you.  Beautiful suggestion.  I think having a clean scenarios map for business scenarios will truly go a long way.  Not only would it help bring folks around a shared map, but it would also help with connecting the dots between the technical scenarios (the map above) along with the business scenarios.  At the same time, it makes it easy to bring in the right audience for each map, and have a dialogue.

Page 1 of 1 (9 items)