I'm interested in using Azure as a PaaS solution to host a Node Js app that I'll be developing in the few coming months. I've done a fair bit of research on the pricing models and tiers so I sort of have a grasp on that, however, I'm not sure how to accurately spec my server requirements. When looking at pure CPU, Memory and Storage specifications between the Basic, Standard and Premium plans they all look similar, with the exception of storage I suppose.
The application I intend to build will primarily perform CRUD based actions. It will not host large images/videos and static files will be used in JS libraries or small images for theming (icons, logos etc I'm hoping there's a CDN). I anticipate no more than 1000 web page requests per day and the AppService is only intended to serve as a WebApi and Web Server, I intend to host the DB on Mlab.
I'm looking for an option that will give me reasonable page load and server response times (1-2secs). The app service also needs support for SSL, is that something I need to get from Microsoft or I can purchase and apply elsewhere.
Finally, I'd love to be able to test and dev on Azure, as from my experience it is better to do so on an architecture that matches your production. Is there any low cost Dev/Test server options that I can use instead of using the production service (which I anticipate will exceed my test performance requirements and would also cost more)?
While the CPU, memory, and storage options may look similar between the plans, the VM underneath and the additional features are not.
For plans:
Shared/Free are plans where you share a VM with other users. You have
quotas for how much of the VMs resources you are allowed to use, and
if you go over them the site will be shut down until the quota
resets. This is fine for dev/test environments, but can be risky for
production as a traffic spike can cause your site to be turned off
temporarily.
Basic plans give you a dedicated VM for your app, so there are no
quotas and thus removes the risk of having your site shut off it gets
too popular.
Standard adds autoscaling (the ability to increase and decrease resources based on usage metrics) and SSL.
Premium is similar to Standard, but the underlying VM is running on better hardware.
The Shared plan and higher (basically anything but free) offers load balancing and custom domains. You can purchase a domain within your Azure account or bring your own.
The default yourwebsite.azurewebsites.net is protected by the azurewebsites.net SSL cert. However, if you use a custom domain and need SSL support, then you need to be on a Standard plan or higher. As with domains, you can purchase one through Azure or bring your own.
You can put a CDN of your own choosing in front of your Azure App Service, or you can use Azure's CDN. It is not included in the App Service plan.
For production with a custom domain and SSL, you are looking at one of the Standard plans.
For dev/test there are a couple ways you could go. If your dev server doesn't use any of the extra features like custom domains, you can scale the plan up and down as you please. That means you can scale up to the matching plan for final testing of a release, but leave it in a lower tier the majority of the time.
The second option is to use deployment slots to create your dev site on the same VM as your prod site. You need to be on a Standard plan or higher to use this feature, and it comes with some added benefits. Particularly that you can swap which code is in production or funnel some of your traffic to a staging slot before swapping new code into production.
Related
I'm new to azure and I have a trial account, but the credits are only available for 30 days. I think their previous offer with monthly credits was much better, it gives you more chance to get up and running efficiently and see what works best.
Anyway I have 4 websites, three of which require SQL Server dB. I'm trying to figure out if I can use Azure in a cheap and cost effective way.
All require custom domain and SSL, which means the B1 App Service plan is a minimum requirement, costing about £40-£50 per site. This is already completely unaffordable for me, for small, basic sites. I think it's ridiculous that a website with custom domain and SSL is so expensive on Azure. Maybe Azure is not for me.
I read about using Clouflare on the Shared App Service plan, but I'm not too keen on this solution. I've tried Clouflare in the past and had some issues with performance. Also the free version SSL only encrypts users to Cloudflare. So I'm looking for a solution without Clouflare.
I'm thinking to use an Azure VM but need some suggestions.
Which VM would be a good option for 4 websites ranging from a couple hundred to a couple thousand visits per month?
Can a B1S VM handle a website with dB?
Do I have SQL Server installed on the VM or do I connect to a managed SQL database?
Do I require a SSL certificate for each site or only one certificate for the VM?
Do I require any paid service link CI or anything to deploy my asp.net core sites to the VM?
Is it worth the effort managing the VM?
Any advice appreciated. Thanks
Firstly, you are charged with Azure App Service Plan, which is a platform for hosting your apps. You can deploy many web apps in one App Service Plan, for example: B1. But, be careful with the workloads. If your application is a big one, the B1 plan would be exhausted to host 4.
Secondly, you can try to use VM. Since the visit amount is small, I think the B series VM can handle the requests. And if there is not many db operations, you can install SQl server in the VM.
Thirdly, if all your website are under one domain. For example: web1.domain.com , web2.domain.com, web3.domain.com, web4.domain.com. Then you need to apply for a wildcard certificate *.domain.com. Or you can apply for 4 separate certificate.
Another solution for certificate is to deploy your web apps under a domain: www.domain.com/web1....Then you just need one certificate.
Finally, you can change the VM size if the performance is not good.
We have a new requirement, summary follows,
Around 30 sites to be developed.
Should use Umbraco.
All the sites should need have a common Umbraco backend.
Single SQL DB.
Some of the sites will be bilingual.
Load balancing architecture required.
We did the POC for the same with 3 sites in a single instance of umbraco by adding root nodes and assigning proper host name, permissions etc and it worked fine.
But in the real case, will it work smoothly ?
We checked the following article regarding flexible load balancing in Umbraco and planned to move with Azure as it is mentioned as the first choice in the article here.
Is anyone has any similar kind of experience ?
Please share, your help would be greatly appreciated.
AFAIK, Azure Web Apps support Built-in autoscale and load balancing. I assumed that web apps leverage Application Request Routing. ARR Affinity is enabled on your Azure App Service by default. This means that if you are running multiple instance of your App Service, clients will be directed to the same instance for each request. For more details, you could refer to here.
Also, you could leverage Traffic Manager with your azure web app for load balancing, which could distribute the traffic to your web app endpoints in different datacenters (global route traffic).
Here are some tutorials, you could refer to them:
Create a Traffic Manager profile
Scale up your app by changing the pricing tier, then you could get more CPU, memory, disk space, etc. For more details, you could refer to Scale up your pricing tier.
Scale out your app to multiple instances manually or automatically based on your configured performance peaks. For more details, you could refer to Scale instance count manually or automatically.
I have multiple App Services hosted on a single App Service plan (Basic Small), which is basically a fully managed VM with all it's resources reserved for me. These are all Asp.Net apps.
As I have plenty of resources still available I'm considering moving my WordPress applications to Azure (each to a new App Service within the same App Service plan.
WordPress unfortunately, has a tendency to get infected every now and then. Also the infection can spread to other websites if they are not properly isolated (infected website may change files of the other websites).
So my question is:
If one of my WordPress websites gets infected are other websites from different App Services, but the same App Service plan also in danger?
The answer to this greatly depends on how you trust Microsoft and their claims.
All Azure Web Apps (as well as Mobile App/Services, WebJobs and
Functions) run in a secure environment called a sandbox. Each app runs
inside its own sandbox, isolating its execution from other instances
on the same machine as well as providing an additional degree of
security and privacy which would otherwise not be available. The
sandbox mechanism aims to ensure that each app running on a machine
will have a minimum guaranteed level of service; furthermore, the
runtime limits enforced by the sandbox protects apps from being
adversely affected by other resource-intensive apps which may be
running on the same machine.
So it should be secure.
https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox
I have my website (abc.azurewebsites.net) hosted to Azure Web Apps using Visual Studio.
Now after 1 month I am facing problems with traffic management. My CPU is always 90 - 95% as the number of requests is too high.
Does anyone know how to add Traffic Management in this web app without changing the domain abc.azurewebsites.net? Is it hard coded in my application?
I thought of changing the web app to a Virtual Machine but now as it's already deployed I am scared of domain loss.
When you Scale your Web App you add instances of your current pricing tier and Azure deploys your Web App package to each of them.
There's a Load Balancer over all your instances, so, traffic is automatically load balanced between them. You shouldn't need a Virtual Machine for this and you don't need to configure any extra Traffic Manager.
I can vouch that my company is using Azure Web Apps to manage more than 1000 concurrent users making thousands of requests with just 2-3 instances. It all depends on what your application does and what other resources does it access too, if you implemented or not a caching strategy and what kind of data storage you are using.
High CPU does not always mean high traffic, it's a mix of CPU and Http Queue Length that gives you an idea of how well your instances are handling traffic.
Your solution might implementing a group of things:
Performance tweak your application
Add caching strategies (distributed cache like Azure Redis is a good option)
Increase Web App instances by configuring Auto-Scaling based on HTTP Queue Length / CPU.
You should not have to change your domain to autoscale a Web App, but you may have to change your pricing tier. Scaling to multiple instance is available at Basic pricing tier, and autoscaling starts at Standard tier. Custom domains are allowed at these levels but you don't have to change your domain if you don't want to.
Here is the overview of scaling a web app https://azure.microsoft.com/en-us/documentation/articles/web-sites-scale/
Adding a Virtual Machine (VM) is very costly as compared to adding instance. On top of it, Redundancy (recommended) for the VMs, adding NIC etc will blow up the cost. Maintenance is another challenge. PAAS (webApp etc) is always a better option than IAAS.
Serverless offerings like Azure Functions can also be thought of. They support http trigger and scale up really well.
I'm developing a Web API and will host it at Windows Azure. What should I take into consideration to decide where to deploy it? As far as I know it can be deployed as a Website or as a Cloud Service. Would love to know the pros and cons you guys see.
Thanks!
Both Cloud Services and Windows Azure Web Sites are fine hosts for an ASP.NET Web API.
I agree with #SLaks - depends on how much control you want.
Use Cloud Service for maximum control (including control over performance characteristics and (for APIs that need this) ability to scale out). Web Sites for speed of deployment (seconds rather than minutes) and cost (might be free, depending on your scaling needs).
With a Web Site, your largest VM size is Large. With a Cloud Service, it can go to XL (twice the specs of a Large).
With a Web Site, you can have up to three VM instances in Reserved Mode. With a Cloud Service, there is no hard limit (though you may need to call support to exceed 20 cores in a standard account).
With a Web Site, you have no control over IIS. With a Cloud Service, you do, so you can do things like use the Warm-up Module in IIS and tweak the recycle settings (these both help improve latency in certain scenarios).
More on Scaling Web Sites: http://www.windowsazure.com/en-us/manage/services/web-sites/how-to-scale-websites/
In summary, from least-to-most control, you really have: Web Sites Shared Instances (high density mode, little control, limited scale, free) => Reserved Mode (little control, better scale, more predictable (b/c no tenants you don't know about), costs money, low knowledge) => Cloud Service (max control over IIS, costs money, more knowledge needed around Cloud Services).