We, as consultants of Azure, have used the SQL storage accounts, Databricks for computing models, and Data Factory for ETLs.
President and Founder with 51-200 employees
It has long-term value when you consider cost-benefit analyses (with Microsoft's pricing calculator), but it's difficult to know exactly what the costs would be for services running on Azure.
Originally posted at http://jimwilsonblog.com/?p=250
A recent article of an interview with the Red Hat CEO touts the benefits of private cloud implementation. See it here.
This debate is usually short sited and doesn’t include all CAPEX & OPEX cost associated with the “Free OS” type of cloud operations. Also, the reusable components from more sophisticated partner communities afford both AWS & AZURE much greater long term valuations when responsible enterprise accounting methods are used to drive the cost-benefits analyses. The proper engineering of a cloud infrastructure which includes smart VMs well orchestrated by business-demand-level-driven auto scaling will always push the TCO/ROI argument to a public solution for large scale systems.
Microsoft actually has a TCO tool that they can use to estimate TCO of on-premises vs. Azure. There are many considerations when comparing costs of running an on-premises datacenter with full infrastructure, servers, cooling, power, etc. to a cloud-based service like Azure where you pay a cost based on the services consumed such as storage, compute and network egress. It can be difficult to know exactly what typical costs are for your datacenter and what the costs would be for services running in Azure. Microsoft has a pricing calculator available at http://azure.microsoft.com/en-us/pricing/calculator/ which can help assess costs for Azure services and a VM specific calculator at http://azure.microsoft.com/en-us/pricing/calculator/virtual-machines/.
When running on-premises, you own the servers. They are available all the time which means you typically leave workloads running constantly even though they may actually only be needed during the work week. There is really no additional cost to leave them running (apart from power, cooling, etc.). In the cloud you pay based on consumption which means organizations go through a paradigm shift. Rather than leaving VMs and services running all the time, companies focus on running services when needed to optimize their public cloud spend. Some ways that can help optimize services running are:
- Auto-scale – The ability to group multiple instances of a VM/service and instances are started and stopped based on various usage metrics such as CPU and queue depth. With PaaS instances can even be created/destroyed as required
- Azure Automation – The ability to run PowerShell Workflows in Azure and templates are provided to start and stop services at certain times of day making it easy to stop services at the end of the day then start them again at the start of day
- Local Automation – Use an on-premises solution such as PowerShell or System Center Orchestrator to connect to Azure via REST to stop/start services
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Head of IT with 51-200 employees
(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.
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.
831,265 professionals have used our research since 2012.
Project Manager at a consultancy with 11-50 employees
Advantageous UX that could use an enhanced integration pipeline
Pros and Cons
- "The Azure Portal has an advantage in terms of UX making buying resources or downgrading is really easier to understand. AWS has micro, smaller functionalities whereas Azure has more end-to-end focus which makes it easier saving you time and money."
- "The integration pipeline could be a bit more broad in terms of applications."
What is our primary use case?
What is most valuable?
The Azure Portal has an advantage in terms of UX making buying resources or downgrading is really easier to understand. AWS has micro, smaller functionalities whereas Azure has more end-to-end focus which makes it easier saving you time and money.
What needs improvement?
The integration pipeline could be a bit more broad in terms of applications.
Additionally, some companies require third parties to develop on their cloud. it would be interesting to see if it would be possible to provide another company with restricted access to their analytical tech stack.
For how long have I used the solution?
I have used the solution for the past three 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?
There is potential for scalability but that becomes more complex the more packaged the product is.
How are customer service and support?
I have never used support personally but I have heard that it is good.
How was the initial setup?
The initial setup was straightforward - one fifth of the work in comparison to AWS. It took about three months in total.
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Chief Financial Officer & Chief Operations Officer at a energy/utilities company with 1-10 employees
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.
Vice President of Delivery & Deployment at TekFriday Inc
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.
IT Architect at a transportation company with 10,001+ employees
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.
Management Executive at a security firm with 11-50 employees
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.
RPA Developer
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?
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.
Buyer's Guide
Download our free Microsoft Azure Report and get advice and tips from experienced pros
sharing their opinions.
Updated: December 2024
Popular Comparisons
Amazon AWS
Oracle Cloud Infrastructure (OCI)
Akamai Connected Cloud (Linode)
Google Cloud
Alibaba Cloud
Google Firebase
SAP S4HANA on AWS
VMware Cloud Foundation
Nutanix Cloud Clusters (NC2)
DigitalOcean
SAP HANA Enterprise Cloud
Equinix Metal
Google Compute Engine
NTT Cloud
Skytap Cloud
Buyer's Guide
Download our free Microsoft Azure Report and get advice and tips from experienced pros
sharing their opinions.
Quick Links
Learn More: Questions:
- Gartner's Magic Quadrant for IaaS maintains Amazon Web Service at the top of the Leaders quadrant. Do you agree?
- PaaS solutions: Areas for improvement?
- Rackspace, Dimension Data, and others that were in last year's Challenger quadrant became Niche Players: Agree/ Disagree
- What Is The Biggest Difference Between Microsoft Azure and Oracle Cloud Platform?
- Which backup and recovery solution can backup Azure machines to its own (dedicated) cloud?
- Which is better - SAP Cloud Platform or Microsoft Azure?
- Which solution do you prefer: Alibaba Cloud or Microsoft Azure?
- How does Microsoft MDS (vs Informatica MDM) fit with Azure architecture?
- SAP HANA Enterprise Cloud (HEC): how to migrate to Microsoft Azure?
- Does F5 Advanced WAF work with Azure App Service?
"Free OS". Please check Jim's pricelist. RHEL, RedHat's openstack etc: It is certainly not for free.
Statements like :
short sited (I assume that should read short sighted),
more sophisticated,
much greater longer term valuation,
responsible enterprise accounting methods......
are not documented in any way. I think the author should have a deepdive in things like cloudfoundry, openshift, WSO2, openstack and the likes before using these kind of terms. Or not write about this matter at all. Or at least try to launch a VM named "testwin" in Azure. ;-)