Try our new research platform with insights from 80,000+ expert users
it_user8502 - PeerSpot reviewer
Head of IT with 51-200 employees
Vendor
(Some) Best Practices for Building Windows Azure Cloud Applications

In this blog post, I will talk about some of the best practices for building cloud applications. I started working on it as a presentation for a conference however that didn’t work out thus this blog post. Please note that these are some of the best practices I think one can follow while building cloud applications running in Windows Azure. There’re many-many more available out there. This blog post will be focused on building Stateless PaaS Cloud Services (you know that Web/Worker role thingie :) utilizing Windows Azure Storage (Blobs/Queues/Tables) and Windows Azure SQL Databases (SQL Azure).

So let’s start!

Things To Consider

Before jumping into building cloud applications, there’re certain things one must take into consideration:

  • Cloud infrastructure is shared.
  • Cloud infrastructure is built on commodity hardware to achieve best bang-for-buck and it is generally assumed that eventually it will fail.
  • A typical cloud application consist of many sub-systemswhere:
    • Each sub-system is a shared system on its own e.g. Windows Azure Storage.
    • Each sub-system has its limits and thresholds.
  • Sometimes individual nodes fail in a datacenter and though very rarely, but sometimes entire datacenter fails.
  • You don’t get physical access to the datacenter.
  • Understanding latency is very important.

With these things in mind, let’s talk about some of the best practices.

Best Practices – Protection Against Hardware Issues

These are some of the best practices to protect your application against hardware issues:

  • Deploy multiple instances of your application.
  • Scale out instead of scale up or in other words favor horizontal scaling over vertical scaling. It is generally recommended that you go with more smaller sized Virtual Machines (VM) instead of few larger sized VMs unless you have a specific need for larger sized VMs.
  • Don’t rely on VM’s local storage as it is transient and not fail-safe. Use persistent storage like Windows Azure Blob Storage instead.
  • Build decoupled applications to safeguard your application against hardware failures.

Best Practices – Cloud Services Development

Now let’s talk about some of the best practices for building cloud services:

  • It is important to understand what web role and worker role are and what benefit they offer. Choose wisely to distribute functionality between a web role and worker role.
  • Decouple your application logic between web role and worker role.
  • Build stateless applications. For state management, it is recommended that you make use of distributed cache.
  • Identify static assets in your application (e.g. images, CSS, and JavaScript files) and use blob storage for that instead of including them with your application package file.
  • Make proper use of service configuration / app.config / web.config files. While you can dynamically change the values in a service configuration file without redeploying, the same is not true with app.config or web.config file.
  • To achieve best value for money, ensure that your application is making proper use of all VM instances in which it is deployed.

Best Practices – Windows Azure Storage/SQL Database

Now let’s talk about some of the best practices for using Windows Azure Storage (Blobs, Tables and Queues) and SQL Database.

Some General Recommendations

Here’re some recommendations I could think of:

  • Blob/Table/SQL Database – Understand what they can do for you. For example, one might be tempted to save images in a SQL database whereas blob storage is the most ideal place for it. Likewise one could consider Table storage over SQL database if transaction/relational features are not required.
  • It is important to understand that these are shared resources with limits and thresholds which are not in your control i.e. you don’t get to set these limits and thresholds.
  • It is important to understand the scalability targets of each of the storage component and design your application to stay within those scalability targets.
  • Be prepared that you’ll encounter “transient errors” and have your application handle (and recover from) these transient errors.
    • It is recommended that your application uses retry logic to recover from these transient errors.
    • You can use TOPAZ or Storage Client Library’s built-in retry mechanism to handle transient errors. If you don’t know, TOPAZ is Microsoft’s Transient Fault Handling Application Block which is part of Enterprise Library 5.0 for Windows Azure. You can read more about TOPAZ here: http://entlib.codeplex.com/wikipage?title=EntLib5Azure.
  • For best performance, co-locate your application and storage. With storage accounts, the cloud service should be in the same affinity group while with WASD, the cloud service should be in the same datacenter for best performance.
  • From disaster recovery point of view, please enable geo-replication on your storage accounts.

Best Practices – Windows Azure SQL Database (WASD)

Here’re some recommendations I could think of as far as working with WASD:

  • It is important to understand (and mentioned above and will be mentioned many more times in this post :)) that it’s a shared resource. So expect your requests to get throttled or timed out.
  • It is important to understand that WASD != On Premise SQL Server. You may have to make some changes in your data access layer.
  • It is important to understand that you don’t get access to data/log files. You will have to rely on alternate mechanisms like “Copy Database” or “BACPAC” functionality for backup purposes.
  • Prepare your application to handle transient errors with WASD. Use TOPAZ for implementing retry logic in your application.
  • Co-locate your application and SQL Database in same data center for best performance.

Best Practices – Windows Azure Storage (Blobs, Tables & Queues)

Here’re some recommendations I could think of as far as working with Windows Azure Storage:

  • (Again :)) It is important to understand that it’s a shared resource. So expect your requests to get throttled or timed out.
  • Understand the scalability targets of Storage components and design your applications accordingly.
  • Prepare your application to handle transient errors with WASD. Use TOPAZ or Storage Client library’s Retry Policies for implementing retry logic in your application.
  • Co-locate your application and storage account in same affinity group (best option) or same data center (next best option) for best performance.
  • Table Storage does not support relationships so you may need to de-normalize the data.
  • Table Storage does not support secondary indexes so pay special attention to querying data as it may result in full table scan. Always ensure that you’re using PartitionKey or PartitionKey/RowKey in your query for best performance.
  • Table Storage has limited transaction support. For full transaction support, consider using Windows Azure SQL Database.
  • With Table Storage, pay very special attention to “PartitionKey” as this is how data in a table is organized and managed.

Best Practices – Managing Latency

Here’re some recommendations I could think of as far as managing latency is concerned:

  • Co-locate your application and data stores. For best performance, co-locate your cloud services and storage accounts in the same affinity group and co-locate your cloud services and SQL database in the same data center.
  • Make appropriate use of Windows Azure CDN.
  • Load balance your application using Windows Azure Traffic Manager when deploying a single application in different data centers.

Some Recommended Reading

Though you’ll find a lot of material online, a few books/blogs/sites I can recommend are:

Cloud Architecture Patterns – Bill Wilder: http://shop.oreilly.com/product/0636920023777.do

CALM (Cloud ALM) – Simon Munro: https://github.com/projectcalm/Azure-EN

Windows Azure Storage Team Blog: http://blogs.msdn.com/b/windowsazurestorage/

Patterns & Practices Windows Azure Guidance: http://wag.codeplex.com/

Summary

What I presented above are only a few of the best practices one could follow while building cloud services. On purpose I kept this blog post rather short. In fact one could write a blog post for each item. I hope you’ve found this information useful. I’m pretty sure that there’re more. Please do share them by providing comments. If I have made some mistakes in this post, please let me know and I will fix them ASAP. If you have any questions, feel free to ask them by providing comments.

http://gauravmantri.com/2013/01/11/some-best-practices-for-building-windows-azure-cloud-applications/
Disclosure: I am a real user, and this review is based on my own experience and opinions.
PeerSpot user
reviewer937401 - PeerSpot reviewer
Chief Financial Officer & Chief Operations Officer at a energy/utilities company with 1-10 employees
Real User
Stable, scalable, and easy to set up
Pros and Cons
  • "It is stable and scalable."
  • "Price could always be better. The features come in quickly, so we're comfortable with the feature set that is available to us."

What is our primary use case?

It is the backend system to support our SaaS products.

We have its cloud-based latest version.

What is most valuable?

It is stable and scalable.

What needs improvement?

Price could always be better. The features come in quickly, so we're comfortable with the feature set that is available to us.

For how long have I used the solution?

I have been using this solution for three years.

What do I think about the stability of the solution?

It is stable.

What do I think about the scalability of the solution?

It is scalable. Currently, we have 10 users.

How are customer service and support?

They are fine with regard to service and support. 

How was the initial setup?

Its initial setup is straightforward. It took about two weeks.

What about the implementation team?

We had an internal team. We had two people do the initial install. They were developers and
system engineers.

What's my experience with pricing, setup cost, and licensing?

Price could always be cheaper. Its licensing and usage aren't always cheap.

We pay monthly.

What other advice do I have?

I would recommend this solution to other users who are looking into implementing such a solution. I would rate Microsoft Azure a nine out of 10.

Which deployment model are you using for this solution?

Public Cloud
Disclosure: I am a real user, and this review is based on my own experience and opinions.
PeerSpot user
Buyer's Guide
Microsoft Azure
December 2024
Learn what your peers think about Microsoft Azure. Get advice and tips from experienced pros sharing their opinions. Updated: December 2024.
838,713 professionals have used our research since 2012.
Vice President of Delivery & Deployment at TekFriday Inc
Real User
Good cost management and billing, simple UI, but needs better alerts management and VPN
Pros and Cons
  • "The management part of it is good. Its UI is simple to use. The cost management and billing part is also good. These are the top things that I like in Azure."
  • "The alerts management should be improved. Alerts management is very complicated to configure. You have to go through a lot of tests and config action groups to set up those things. It is very complicated, and it can be simplified."

What is our primary use case?

I am a Microsoft-certified Azure Admin. I manage Azure infrastructure as well as AWS infrastructure.

What is most valuable?

The management part of it is good. Its UI is simple to use. The cost management and billing part is also good. These are the top things that I like in Azure.

What needs improvement?

The alerts management should be improved. Alerts management is very complicated to configure. You have to go through a lot of tests and config action groups to set up those things. It is very complicated, and it can be simplified.

It is good to start with, but as the complexity increases, the usability needs to improve. We are managing only 40 virtual machines, so we are able to make use of the portal.

The VPN part can also be improved. If you want to set up multi-factor authentication for VPN clients, it is not so easy. The documentation is not so simple for multi-factor authentication.

I would like to see Azure Data Factory simplified. It is very complex. If they can simplify the data integration part inside Azure, it would be great. They should design simpler integration. They can also have a new service and keep Data Factory as it is. 

For how long have I used the solution?

I have been using Microsoft Azure for close to five years.

What do I think about the stability of the solution?

A few years ago, it was unstable, but I've not seen any issues off late. A lot of new features are being added to Microsoft Azure, but I have not seen any stability issues.

The old services are stable. We recently saw a security issue published online. So, the new services might be less stable, but I wouldn't say it is not stable.

How are customer service and technical support?

I manage that part. Getting support is very painful because tickets get assigned to different countries. People are in different time zones, which is clearly complicated. Each service is managed by different teams situated in different countries, and synchronizing with them is pretty complicated.

How was the initial setup?

It was straightforward. 

What other advice do I have?

It is good for a person who is trying it for the first time. There are some solutions, such as CSP, for which they provide direct support. There are some ways to minimize the complexity. You should go through a party that can provide this kind of knowledge before you decide on it.

I would rate Microsoft Azure a seven out of 10.

Disclosure: I am a real user, and this review is based on my own experience and opinions.
PeerSpot user
reviewer1620747 - PeerSpot reviewer
IT Architect at a transportation company with 10,001+ employees
Real User
A stable and scalable solution
Pros and Cons
  • "The initial setup is simple."
  • "The diagnostics should have more logs."

What is our primary use case?

The information is confidential, so I cannot discuss what we use Microsoft Azure for. 

What needs improvement?

The diagnostics should have more logs. We must pay a surcharge for our dependence on the Azure monitor. Each platform comes with its own logs. 

For how long have I used the solution?



What do I think about the stability of the solution?

The stability is good. There is compliance with the SLAs and we have not encountered any issues in this domain. 

What do I think about the scalability of the solution?

The scalability is fine and this option exists with many of our products. 

How are customer service and technical support?

I have not had occasion to make use of technical support. 

How was the initial setup?

The initial setup is simple. It's not a big deal.

What's my experience with pricing, setup cost, and licensing?

There are added costs to the company or for scaling for most premium products. 

Which other solutions did I evaluate?

I did not really evaluate other solutions before going with Microsoft Azure. 

What other advice do I have?

We work off an app service environment. We are end-users of Microsoft, although my specific role is in IT architecture. 

I rate Microsoft Azure as an eight out of ten. 

Which deployment model are you using for this solution?

Public Cloud
Disclosure: I am a real user, and this review is based on my own experience and opinions.
PeerSpot user
reviewer1598412 - PeerSpot reviewer
Management Executive at a security firm with 11-50 employees
Real User
Great tool for analytics, storage and retention, but carries excessive licensing costs
Pros and Cons
  • "It is stable and collaborative."
  • "The biggest area needing improvement involves the licensing cost."

What is our primary use case?

We use the solution for analytics, storage and retention, for just about everything.

What is most valuable?

The solution is fantastic, with Teams, the works. It's just an amazing product.

It is stable and collaborative. It also helps that every person has Microsoft. So, the ease of use and the compatibility between users is fantastic for collaboration.

What needs improvement?

The biggest area needing improvement involves the licensing cost. The cost of actually acquiring the solution is of much significance to small to medium enterprises, especially in countries that have a negative currency. The biggest challenge we face in Africa is the lack of awareness among overseas, European and American vendors of the massive impact that the exchange rate has in the South African market. A cost of $20 for you can equal 300 rand for us. This is what most vendors neglect to realize, that a price affixed to something for the European or American market cannot be applied to the rest of the world or to a continent like Africa. The disregarding by vendors of the importance of the exchange rate amounts to ignorance or arrogance.

My issues are not with the product itself, which I think is great, including Microsoft's strategy concerning respecting it and the consolidation. The pricing, in terms of what can be referred to as traditional third world countries, needs to be addressed. 

The main takeaway that vendors should leave with is that they should not neglect the market in South Africa or in Africa. It is not enough for them to want to have a presence or sell a license. They should also show a desire to sell a value proposition.

For how long have I used the solution?

I have been using Microsoft Azure for the last two years.

What do I think about the stability of the solution?

The solution is stable. 

What do I think about the scalability of the solution?

The solution is very scalable.

I have clients who use it and there are plans to increase its usage.

How are customer service and technical support?

In respect of technical support, Microsoft's skill level in the African market is great. There has been swinging about in terms of Microsoft's skill-set over the last three years and I think this boils down to the company having undertaken much training and education. McAfee can learn from Microsoft. 

How was the initial setup?

As it is a cloud-based solution, there is no installation involved. It is more about configuration.

What's my experience with pricing, setup cost, and licensing?

We pay for the license on a monthly basis. 

What other advice do I have?

The solution is cloud-based.

I utilize it both for my personal use as well as that of my organization.

We have a group company and I think this amounts to around a thousand users.

I would absolutely recommend the solution to others.

Taking into account the usability of Microsoft Azure, I would rate it as a seven out of ten. 

Disclosure: I am a real user, and this review is based on my own experience and opinions.
PeerSpot user
reviewer1578912 - PeerSpot reviewer
RPA Developer
Real User
A cloud computing platform that is stable, reliable, and easy to set up
Pros and Cons
  • "It is a reliable solution that is easy to set up."
  • "They can improve the number of requests. Maybe they can increase it from 5,000 requests to 10,000 requests a month. Sometimes when you try to connect, it is quite unresponsive. When you want to communicate using the API, you get an internal error."

What is our primary use case?

We have an internal system we are currently building. We use machine learning, where we are training models for extraction. You send a document or an invoice and move it to Azure using an endpoint, and then you get the extracted information. That is what we are currently doing. 

What is most valuable?

It is a reliable solution that is easy to set up. 

What needs improvement?

1.One is not able to upload custom images in azure and not able to access windows client images. This can be improved

2. It moves your business’ compute power from your data center or office to the cloud. As with most cloud service providers, Azure needs to be expertly managed and maintained, which includes patching and server monitoring.

For how long have I used the solution?

I have used Microsoft Azure within the last 12 months.

What do I think about the stability of the solution?

Microsoft Azure is a stable and reliable solution.

Which solution did I use previously and why did I switch?

AWS- It was trusted at the time since it was the longest serving

How was the initial setup?

The initial setup was excellent.

What about the implementation team?

In-House

What's my experience with pricing, setup cost, and licensing?

It is affordable compared to other vendors

Which other solutions did I evaluate?

Before choosing Microsoft Azure, we evaluated AWS and GoDaddy.

What other advice do I have?

I would recommend this solution to new users. If you want to get a free subscription or trial, it is quite good. Even for an organization, it is good because of the number of requests they offer in the free version. There are many.

On a scale from one to ten, I would give Microsoft Azure an eight.

Which deployment model are you using for this solution?

Public Cloud

If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?

Microsoft Azure
Disclosure: I am a real user, and this review is based on my own experience and opinions.
PeerSpot user
reviewer1553589 - PeerSpot reviewer
Junior Mobile Network Engineer at a comms service provider with 51-200 employees
Real User
A user-friendly cloud computing service that's highly scalable
Pros and Cons
  • "It's easy to use, and it's scalable. If we want to grow our product more, we can do it."
  • "Security could be better. Once there was an attack, and we couldn't get to the cloud to see the reports for about five hours."

What is our primary use case?

We have a project with a company that needs support for their IoT devices. We're setting up some databases for them. That's all I can say about it because it's confidential. But we're using the HSM and the Key Vault for security purposes. A wider area or a wider group can connect to this public cloud for security and storage. We also have our own application implemented on that cloud.

What is most valuable?

It's easy to use, and it's scalable. If we want to grow our product more, we can do it. Because of the availability of different geographic zones, we can also have many places and regions.

What needs improvement?

Security could be better. Once there was an attack, and we couldn't get to the cloud to see the reports for about five hours. If we want to back up the application in storage, we can't have a firewall. For now, it's secure. I think the main problem was the configuration.

For how long have I used the solution?

I have been using Microsoft Azure for three or four months.

What do I think about the stability of the solution?

Access to the virtual machine on Azure wasn't always available, but the application was always up and running.

What do I think about the scalability of the solution?

The product is super scalable.

How was the initial setup?

The initial setup was straightforward. 

What's my experience with pricing, setup cost, and licensing?

The pricing is better than AWS.

What other advice do I have?

I would recommend this cloud computing solution. When configured and planned well, I think it's a very good product. 

On a scale from one to ten, I would give Microsoft Azure an eight.

Which deployment model are you using for this solution?

Public Cloud

If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?

Microsoft Azure
Disclosure: I am a real user, and this review is based on my own experience and opinions.
PeerSpot user
reviewer1386936 - PeerSpot reviewer
DevOps Lead at a computer software company with 1,001-5,000 employees
Real User
Stable and flexible with an easy initial setup
Pros and Cons
  • "We've found the solution to be extremely flexible."
  • "It would be helpful if it offered more integration with other platforms."

What is our primary use case?

We are primarily using the solution for DevOps purposes.

What is most valuable?

The installation of the product is very straightforward. It's quite easy in general.

The product is very stable. The performance has always been reliable.

We've found the solution to be extremely flexible.

What needs improvement?

I cannot recall anything really specific that needs to be addressed within the solution. There aren't any features that are missing as far as I can tell.

It would be helpful if it offered more integration with other platforms.

For how long have I used the solution?

I've been using the solution for a couple of years at this point. It's been a while.

What do I think about the stability of the solution?

The solution is very stable. It doesn't crash or freeze. There are no bugs or glitches. It is reliable and the performance is good.

What do I think about the scalability of the solution?

The scalability overall has been fine. We have about 500 users in the solution currently.

If a company needs to expand it, or scale it, it can do so. It shouldn't be that hard to accomplish.

We do plan to continue to use the solution into the future.

How are customer service and technical support?

I rarely have any issues with the solution itself and therefore don't have too much experience with technical support. We don't have any complaints, to be honest.

Which solution did I use previously and why did I switch?

We did not previously use a different solution before implementing Azure. This is our first tool in this area.

How was the initial setup?

The initial setup is not complex at all. It's very easy and very straightforward. The process shouldn't give a company any trouble.

I can't recall the exact length of time it took to deploy the product.

What's my experience with pricing, setup cost, and licensing?

The pricing is likely reasonable. If you compare it to other cloud providers, there isn't too much of a difference. It likely is competitive in the market.

What other advice do I have?

We are customers and end-users.

I'm not sure which version of the solution we are using at this time.

I'd recommend the solution to other organizations. Our experience so far has been mostly positive.

Overall, I would rate the product at an eight out of ten.

Which deployment model are you using for this solution?

Public Cloud
Disclosure: I am a real user, and this review is based on my own experience and opinions.
PeerSpot user
Buyer's Guide
Download our free Microsoft Azure Report and get advice and tips from experienced pros sharing their opinions.
Updated: December 2024
Buyer's Guide
Download our free Microsoft Azure Report and get advice and tips from experienced pros sharing their opinions.