Cloud Application Patterns

Welcome to the Microsoft patterns & practices Cloud Guidance. This is a public forum for you to suggest/vote on the ideas for design patterns on Windows Azure. Please note that some of the ideas here may not design patterns but generic guidance. Each pattern comes with short description and code snippets when it makes sense.

I suggest you ...

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can vote and comment on it.

If it doesn't exist, you can post your idea so others can vote on it.

Enter your idea and we'll search to see if someone has already suggested it.

  1. Hosting Single-Tenant Applications as Multi-Tenant Applications (guidance and services)

    To fully take advantage of PaaS, a Cloud Service needs to be designed for multi-tenancy. However, migrating an existing application to a multitenant architecture is very difficult. By a combination of automation scripts and additional services such as tenant-based routing and session affinity, existing single-tenant applications can be hosted on Azure as if they were multi-tenant applications. More on this idea here: http://haishibai.blogspot.com/2013/07/hosting-single-tenant-application-as.html

    22 votes
    Vote
    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      You have left! (?) (thinking…)
    • Deploying your own Identity Provider

      There is an anti-pattern lurking here. Let's add Facebook, Google, Yahoo! and Microsoft Account login to our application. But we also need username/password login! First of all NO you don't - you just think you do! Second if you absolutely insist then - please - externalize authentication from your application by setting up your own STS (Security Token Service) which will be your own IP.

      19 votes
      Vote
      Sign in
      Check!
      (thinking…)
      Reset
      or sign in with
      • facebook
      • google
        Password icon
        I agree to the terms of service
        Signed in as (Sign out)
        You have left! (?) (thinking…)
      • Work out disaster recovery and high availability guidance

        It would be great to have guidance to clearly state how one can build solutions so that these solutions (and their data) are available, even in case certain services in data centers stop functioning.
        Thinking about combination of Traffic manager, backup/recovery across datacenters, service bus scripting...

        20 votes
        Vote
        Sign in
        Check!
        (thinking…)
        Reset
        or sign in with
        • facebook
        • google
          Password icon
          I agree to the terms of service
          Signed in as (Sign out)
          You have left! (?) (thinking…)
        • High throughput data ingestion (guidance, libraries and services)

          Data ingestion is a very important aspect of Big Data scenario. Best practices, enforced by related libraries and services, should be provided for customers to collect large amount of ingress data. Viable techniques include aggregations such as moving averages, deltas, compression, streaming, buffering, circular buffer, and batches, etc.

          14 votes
          Vote
          Sign in
          Check!
          (thinking…)
          Reset
          or sign in with
          • facebook
          • google
            Password icon
            I agree to the terms of service
            Signed in as (Sign out)
            You have left! (?) (thinking…)
          • Web Storage

            Use "BLOB storage" to publish static contents(html, javascript, css, images) without compute resources. And we are no longer need to consinder load by use of BLOB storage

            7 votes
            Vote
            Sign in
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              I agree to the terms of service
              Signed in as (Sign out)
              You have left! (?) (thinking…)
              1 comment  ·  Admin →
            • Auto-Scaling

              The elastic nature of the cloud makes it much more feasible to automate the scaling of a solution based on a defined set of conditions. This allows the user to decrease the number of resources necessary during slower times to reduce costs and increase the number of instances during higher demand to maintain performance. This works well with solution experiencing variable load. Applications need to be designed and built to take advantage of this and considerations in design for autoscaling as well as what to scale on. How to build a solution to leverage elastic/auto scale.

              79 votes
              Vote
              Sign in
              Check!
              (thinking…)
              Reset
              or sign in with
              • facebook
              • google
                Password icon
                I agree to the terms of service
                Signed in as (Sign out)
                You have left! (?) (thinking…)
              • Data Partitioning (Guidance)

                Data partitioning is a common approach to achieve scale in the cloud. As the requirement to scale out increases beyond the capacity or throughput of an individual service additional scale can be achieved through the use of multiple instances of the resource. In addiont to partitioning for scale there are are a number of other reasons to parition data with isolation being a popular one as well as security, maintenance, cost, availability, and metering. Although partitioning data can provide a number of benefits to a solution there are som challenges as result and determining a boundy to parition on is…

                88 votes
                Vote
                Sign in
                Check!
                (thinking…)
                Reset
                or sign in with
                • facebook
                • google
                  Password icon
                  I agree to the terms of service
                  Signed in as (Sign out)
                  You have left! (?) (thinking…)
                • Portable Application (Guidance)

                  Application portability is not only about avoiding platform provider lock in, but sometimes necessary with application that have a requirement to be deployed on premises and in the cloud. Portability can be achieved through careful design and implementation of a solution. When portability is a requirement platform dependencies need to be carefully considered and compared with alternatives on other target environments. Considerations to feature parify, API, and protocol is important, and with services where this is not possible layers of abstraction are necessary.

                  55 votes
                  Vote
                  Sign in
                  Check!
                  (thinking…)
                  Reset
                  or sign in with
                  • facebook
                  • google
                    Password icon
                    I agree to the terms of service
                    Signed in as (Sign out)
                    You have left! (?) (thinking…)
                  • Federated Authentication (Guidance)

                    Overview on federated authentication

                    52 votes
                    Vote
                    Sign in
                    Check!
                    (thinking…)
                    Reset
                    or sign in with
                    • facebook
                    • google
                      Password icon
                      I agree to the terms of service
                      Signed in as (Sign out)
                      You have left! (?) (thinking…)
                      0 comments  ·  Security  ·  Admin →
                    • Instrumentation / Telemetry (Guidance)

                      Monitoring application health through analysis of key metrics. Collectiong and analyzing health and performance metrics in a cloud solution. Use of semantic logging to improve log consistency and simplify the consumption of log data for improved processing and analysis. Well instrumented code becomes a crucial part of a monitoring and troubleshooting distributed applications in the cloud.

                      57 votes
                      Vote
                      Sign in
                      Check!
                      (thinking…)
                      Reset
                      or sign in with
                      • facebook
                      • google
                        Password icon
                        I agree to the terms of service
                        Signed in as (Sign out)
                        You have left! (?) (thinking…)
                      • Compensation Pattern

                        Undo a failed transaction with a compensating transaction to bring a system back to its initial state. One must also consider what to do when the compensating transaction also fails.

                        61 votes
                        Vote
                        Sign in
                        Check!
                        (thinking…)
                        Reset
                        or sign in with
                        • facebook
                        • google
                          Password icon
                          I agree to the terms of service
                          Signed in as (Sign out)
                          You have left! (?) (thinking…)
                          0 comments  ·  Resilience  ·  Admin →
                        • Time based job scheduling (CRON Jobs)

                          A time based trigger either based on an interval or time of day, week, etc... Commonly used to schedule maintenance tasks, batch processes, etc...

                          33 votes
                          Vote
                          Sign in
                          Check!
                          (thinking…)
                          Reset
                          or sign in with
                          • facebook
                          • google
                            Password icon
                            I agree to the terms of service
                            Signed in as (Sign out)
                            You have left! (?) (thinking…)
                          • Multi-DC Deployment (Guidance)

                            Deploying a solution in to multiple data centers. This is commonly used to handle failover, improve availability, and increased user exerience through reducing latency between the client and the application. There are some challenges and considerations that will be covered in the guide.

                            47 votes
                            Vote
                            Sign in
                            Check!
                            (thinking…)
                            Reset
                            or sign in with
                            • facebook
                            • google
                              Password icon
                              I agree to the terms of service
                              Signed in as (Sign out)
                              You have left! (?) (thinking…)
                            • Async Task Progress Tracking

                              Tracking the progress of a long running task.

                              25 votes
                              Vote
                              Sign in
                              Check!
                              (thinking…)
                              Reset
                              or sign in with
                              • facebook
                              • google
                                Password icon
                                I agree to the terms of service
                                Signed in as (Sign out)
                                You have left! (?) (thinking…)
                                0 comments  ·  Messaging  ·  Admin →
                              • Sharding (Partitioning)

                                Sharding is the partitioning and storage of data records across multiple locations. This becomes more common in cloud architectures due to requirements for higher scale with a shared set of services that have performance/scale limits or due to the use of 'commodity' hardware that is much more cost effective to scale out as opposed to up. What are we going to deliver here?

                                40 votes
                                Vote
                                Sign in
                                Check!
                                (thinking…)
                                Reset
                                or sign in with
                                • facebook
                                • google
                                  Password icon
                                  I agree to the terms of service
                                  Signed in as (Sign out)
                                  You have left! (?) (thinking…)
                                • Cache - Performance/Scale (Guidance)

                                  Are we talking about private, shared, or both? [Caching in general and would refer to both co-located/dedicated when discussing partitioning of cache in the partitioning section. I don't know if shared cache or cache service is even an option anymore] Also, does this include caching results (calculated or generated data that takes time to compute), and HTML output? IMHO this is a set of patterns (cache-aside [as mentioned in notes], compute cache, HTML output cache) [Possibly, worth a discussion].

                                  31 votes
                                  Vote
                                  Sign in
                                  Check!
                                  (thinking…)
                                  Reset
                                  or sign in with
                                  • facebook
                                  • google
                                    Password icon
                                    I agree to the terms of service
                                    Signed in as (Sign out)
                                    You have left! (?) (thinking…)
                                  • Service Process Host

                                    Consolidate multiple tasks in to fewer worker roles or even a single worker role. Quite often it makes sense to colocate tasks in to the same worker or web role for various reasons; cost savings, managmentent, deployment, versioning, etc... This is often accomplished by creating multiple threads or spawning multiple processes from the role entry points onstart or run event. Implementations range from simple ones creating and starting a new task/thread to service host frameworks for managing each individual service/task allowing for features like starting/stoping services, configuration, loading/unloading, and monitoring. Instead of implmenting a complicated project to handle all of…

                                    38 votes
                                    Vote
                                    Sign in
                                    Check!
                                    (thinking…)
                                    Reset
                                    or sign in with
                                    • facebook
                                    • google
                                      Password icon
                                      I agree to the terms of service
                                      Signed in as (Sign out)
                                      You have left! (?) (thinking…)
                                      0 comments  ·  Deployment  ·  Admin →
                                    • Multiple Web Sites in a Web Role (Guidance)

                                      Deploying and managing multiple web sites in a single web role or virtual machine

                                      15 votes
                                      Vote
                                      Sign in
                                      Check!
                                      (thinking…)
                                      Reset
                                      or sign in with
                                      • facebook
                                      • google
                                        Password icon
                                        I agree to the terms of service
                                        Signed in as (Sign out)
                                        You have left! (?) (thinking…)
                                        0 comments  ·  Deployment  ·  Admin →
                                      • Data Encryption & Key management (Guidance)

                                        Overview of the challenges and some options for the encryption of operational and configuration data at rest.

                                        31 votes
                                        Vote
                                        Sign in
                                        Check!
                                        (thinking…)
                                        Reset
                                        or sign in with
                                        • facebook
                                        • google
                                          Password icon
                                          I agree to the terms of service
                                          Signed in as (Sign out)
                                          You have left! (?) (thinking…)
                                          0 comments  ·  Security  ·  Admin →
                                        • Cloud Migration considerations (Guidance)

                                          When migrating a solution to the cloud the need for some refactoring is not that uncommon. The amount of refactoring necessary, if any, can vary quite a bit, and in order to leverage more of the value in a cloud environment has to offer more refactoring may be necessary. There are some very common items that need to be refactored in order to get the most value out of deploying to a cloud platform; State, Transient Fault Handling, Configuration, Network Limitations (Configuration, Latency, etc..), Security, Auditing, Monitoring.

                                          39 votes
                                          Vote
                                          Sign in
                                          Check!
                                          (thinking…)
                                          Reset
                                          or sign in with
                                          • facebook
                                          • google
                                            Password icon
                                            I agree to the terms of service
                                            Signed in as (Sign out)
                                            You have left! (?) (thinking…)
                                          ← Previous 1 3 4 5
                                          • Don't see your idea?

                                          Feedback and Knowledge Base