Hopefully my question is in the right forum here. I've just checked out the pricing model of windows azure and checked out the different configuration options:
http://www.windowsazure.com/de-de/pricing/calculator/
I have been working as a developer for almost two years now and worked a lot with IIS and the WPF technology. As a little private project I checked out HTML 5 and JS with MVC4 Web API and wondered what azure configuration I'd need to host a MVC 4 Web API project. Would it be rather a virtual machine or a full calculator? What benefits grants one over another?
I am going to start my studies soon, so I'd like the cheapest I can possibly get. I won't use it a lot (mainly for testing reasons), as well I think there won't be too much traffic either. Would a virtual machine also include the possibility of using IIS?
Could I also run a MVC project with something else than VM/full calculator?
And what would happen if for some reason my traffic just explodes? Would my services just be shut down until I increase the power of my machine? Or would I just get a huge bill and be surprised quite a lot?
Use websites.
You can start with 10 Web Sites absolutely free! So this is the cheapest. And it certainly supports MVC4 Web API.
For starter you can get a 3 month trial with enough credits to start. By default you'll have a spending limit on your account. This mean if you start to get too much traffic your services will shut down and you won't have to pay any extra. I think you can configure how much you are willing to pay but I never tried, it is still the default which is 0$.
You should start with Shared Web Sites and move to reserved instance, VM or web role later if you ever need to scale up or out.
Related
We currently self-host our website, but we've had a few downtime incidents outside of our control and we're looking at moving it into Azure. It's an ASP.NET website using Umbraco as the CMS.
Yesterday I signed up for an Azure trial, migrated a copy of our database onto an Azure SQL Server instance, spun up a new Web App and used Web Deploy to upload the app. This was my first experience with Azure, and I was pleasantly surprised at how easy it was. There were a few issues working out how to hook up my new app to my new database but overall it was a simple process.
But the performance is awful. The database is a Standard S2 and I initially created the web app on the Free tier. I was experiencing both poor download speed and latency. The first thing I tried was bumping up the Web App's scale, so I took it to Standard Medium. This seems to have fixed the download speed, but the latency is still impressively bad.
I'm using Google Chrome's network panel to test the speed. Here's what I get downloading an image from our server:
Obviously this is going to be fast as it's going over our local network, but this does at least show that the application is not the issue.
Here's what I get with Standard S2 hosted on Australia East:
The speed once the download has started is not too bad, but having a 41.92s TTFB is insane! It's not consistent, sometimes I get as low as 8s, but that's still unacceptable.
I don't have this issue when visiting other sites, so my internet is not the issue. I've tried using Small S2 and Large S2 with no change in results.
Am I doing something wrong? I find it difficult to believe that every Azure customer experiences this level of performance.
EDIT: Here's what we've learned in the comments so far:
Setting Always On does not help.
Using the Azure CDN is just as slow.
I also had enormous performance problems within the Azure environment. The cause was the activation of Applications Insights. After I deactivated it, the response times were again in the millisecond range and no longer 2-3 seconds.
This was an issue with my own network's configuration. I'm not sure how to resolve it, but I can't reproduce this issue when using my phone's internet so it's clearly not an Azure problem.
How many instances do I need to configure to ensure that my site stays available during planned maintenance performed on the underlying OS/VM.
I understand the availability model for web roles, but I am not clear if it is the same for web sites on Azure.
With web roles, you have to configure at least 2 instances in separate upgrade domains to get the SLA from Microsoft and to ensure that your site is routinely available. This ensures that your site will stay available as Microsoft performs maintenance on the underlying OS (updating to a newer version of the OS image, etc).
What's the equivalent story for web sites? Do I need to have two instances of my web site or does Microsoft proactively move my site to a new VM before they perform maintenance (since web sites are more "managed" than web roles, that seems like it may be possible that they do this)?
Does the answer change between Free, Shared, and Reserved web sites?
Note, I understand that during sudden, unplanned downtime, having a single instance means my site will be unavailable until it is restarted on a new node. I am not worried about that for my low-volume hobby site. What I am more interested in is the routine, planned maintenance activities that are much more common than unplanned failures of the VM or host hardware.
Edit for clarification: Clearly, having 2 (or more) reserved instances is going to be the best option for high availability, but that is cost prohibitive for a hobby site at just short of $120 per month. My question really is if a single Shared or Reserved instance is going to have routine downtime for planned maintenance. I'm specifically wondering if anyone has concrete information on this (from a blog post I may have missed or from a phone call with the Microsoft support guys, etc). Maybe the answer is "no one knows because Microsoft hasn't clarified how things will work outside of the preview yet".
I also don't want to get hung up on the term "High Availability". I guess I am just looking for "Not Low Availability". It's just a hobby site, after all.
Please note that Azure Web Sites are still in preview. That means that there is no SLA what so ever. When the Web Sites come out of preview, I would suggest having at least 2 reserved instances for high-availability.
Both Free and Shared instance imply usage quotas - CPU/Memory/Bandwitdth (Shared has no quota on the bandwidth, but still apply quota on CPU and Memory).
Having usage quotas in place is controversial to High Availability in my understanding for that term. That's why I suggest Reserved. It is same for the number of instances.
There is no SLA since Web Sites are still in preview, but I also wondered about downtime during updates and found an explanation on twitter from a member of the Azure team:
https://twitter.com/nirmsk/status/342087643779198977
Apparently they keep a "buffer" of machines that are used if the current machine needs to be rebooted, crashes, or you change the scaling options (between Shared and Reserved).
Having multiple instances won't solve the problem since any change you make on one instance is automatically propagated to all other instances.
However Azure websites now supports having a staging version of your website and swapping between staging and production versions of the site. That would be ideal for your scenario. See here for more info: http://azure.microsoft.com/en-us/documentation/articles/web-sites-staged-publishing/
I have started work on a game project which is expected to have a very high load on the servers.
My original plan was going with a general main server which hosts general game data and using a collection of servers hosting a node (or game world) server, being balanced with more CPU/network intensive worlds being hosted in less numbers on the machine.
Now I was wondering how it's best for me to set up the actual servers. Should I go with a cloud like Microsoft Azure, should I host it all myself on own bought hardware or should I use dedicated hosting from some hosting company?
Windows Azure actually has a Toolkit for Social Games which might provide some good guidance.
https://github.com/WindowsAzure-Toolkits/wa-toolkit-games
On Github the architecture section might also help you think about an Azure Solution
https://github.com/WindowsAzure-Toolkits/wa-toolkit-games/wiki/architecture
Re: Servers, the cloud is a perfect match for this workload/use case, you can grow quickly or fail fast depending on how successful you are and only ever pay for what you use. Azure has a IaaS and PasS offering which should meet all your needs (inc Windows and Linux on IaaS)
Well I believe now days people are engaged in social games; I believe you would be doing the same.
unsure about the development environment I suggest you to look at the Game Hosting by amazon.. It could be somewhat costlier but better then to have your own provided it meet all your needs.
You can also check gamersisle who allows you to rent game server based on your wish so you can rent more when you feel you are hitting client counts.
Happy game development.
P.S :- I always wonder how people build game.. just learning how? ;)
What is the limit of IIS 6.0? like for example if i need to host 100,000 or 200,000 websites on IIS 6.0, how many machines would i need? or is IIS7 would be a better choice in this case for some reason?
As mentioned in the comments above the scale isn't so much the number of websites you create in IIS, but how complex and how busy those sites are.
In IIS6 one website does not necessarily equate to one executing process on the server. Application pools can group multiple websites into a single executing process to group and/or isolate applications. Alternately a single app pool can spawn multiple executing processes to make better use of server hardware.
It might help if you were to provide more detail in your question about what exactly you're trying to accomplish. If you're going to be serving hundreds of thousands of sites it would probably be a good idea to partner with a hosting company, or get some assistance from someone who knows the ins and outs of IIS, or another platform in detail and has operational experience with working through large-scale hosting scenarios.
IIS7 is not radically different from IIS6 in any performance-related way; with one exception: you can run ASP.NET in a "native" pipeline mode that bypasses some processing steps. I prefer IIS7 (if I can choose) because of its manageability advantages. But like everyone else said here: the question is impossible to answer without more information.
Hosting that many websites with IIS will be cost-prohibitive in licensing fees. Most large scale web hosting is done on Linux using Apache.
I'd like to start a free budget/personal finance site and will need plenty of horsepower and storage. I'm definitely a nubee, so how does one get started in terms of hardware infrastructure? Do I need to get a dedicated IP from my ISP and obtain my own servers? Do I go with amazon or Sql Server Data Services/Azure or something like that? Is the latter services free or a discount offering available to non-profit/free services such as the budget/personal finance site I'm looking to start?
If you don't mind writing your web application in python, then I's suggest using Google App Engine. See: What Is Google App Engine?
What I like to do when I have new ideas for a site is to find an inexpensive hosting solution ($10 per month). This allows me to test the idea and see if the site is going to be successful. If it is a flop, I haven't wasted much money and if it is successful I can upgrade to better hosting (dedicated server).
There are many hosting options available and several of them have great tools such as an online SQL Server management studio. Your other option would be to host it yourself if you are prepared to deal with firewall issues, backups, storage, etc.
Whether it is feasible to DIY varies a lot by country...if you have a decent broadband connection with a fixed IP this can be the cheapest route to play around with first, especially if you need an awful lot of storage.
Note however that many fast broadband connections are only fast for downloads - when you're running a server, the speed your users will see is the upload speed, which is usually a lot less. Also, you'll need to do your own admin and backup etc.
Apart from this most hosting options have a price tag on top, varying from virtual hosts (sharing a real machine), to colocation (your machine in somebody's data center), to cloud services like amazon et al (which have a good scaling ability)- and you will need to shop around for the software stack and hardware features you really need.
There's really two ways to answer this question, what differentiates them is budget.
One is to properly design this solution, prototype it, benchmark the prototype, extrapolate anticipated user load, add overhead and scale accordingly. This takes time, costs but gives you a supportable solution that serves your customers well.
The other is to just give something, anything a go and fix the problems as they come along. This is quicker and cheaper but might be a headache for a while and might p*** off your customers.
Basically it comes down to budget.
Best of luck.