Created a web app for live streaming a company meeting. The web app is trivial - just a banner & an Azure media player. Trying to figure out a reasonable level & scale out value for my web app and also, the # of streaming units I should add to the Live Streaming endpoint.
Is there a formula anywhere for this kind of thing? I'll have 6-10,000 users in 4-5 (mostly U.S.) general locations on all kinds of devices.
We need consider a lot of things to scale our web app. This is more related with your requirement. We can set schedule based auto scaling or metrics based auto scaling in Azure web app. We can even define custom scale via use Azure Web APP API.
Related
I am building an ASP.NET Web API service that receives orders from restaurants.
At certain times it will be busy, thousands of times more busy than at other times.
I haven't begun developing this yet but I was wondering what Azure services are appropriate to host the service such that it automatically scales when necessary without me worrying about its performance and hosting costs are minimised?
You can create Azure Functions to handle this and auto scale or use an Azure App Service and set it up to auto scale.
Azure functions can be setup to be triggered on HTTP events. These can be configured to scale to multiple instances to handle heavier load. You will need multiple Azure Functions to handle multiple API endpoints.
An azure app service will be will have an app service plan which can be configured to scale horizontally or vertically when the traffic load increases. An app service will be more like a traditional api instead of a small piece of an API like an Azure Function.
There's an awful lot of disjointed documentation on monitoring network/resources in Azure. What I'm looking for is which pieces are needed to get information from VMs, NVA firewalls, azure load balancers, and other network resources and network connectivity into a single pain of glass in Azure. Only concerned about Azure, not on-prem for now.
I've come across azure monitor, log analytics work spaces, event hub, vm extensions, network watcher, insights, etc...but I'm not sure which are required and which are not. One doc leads to the next and I end up with 30 tabs open. I'll also need to be able to push logs to other security devices such as a SIEM.
Does anyone know of a deployment guide that wraps this all up in a more logical fashion? Does anyone have any feedback on which pieces from azure (not 3rd parties) are required at a minimum to accomplish a single pane of glass to view my Azure environment holistically?
General overview of observability in Azure
Likely, the thing you're looking for is Azure Monitor. It's an umbrella term for everything observability related inside Azure.
To store Metrics and Logs you need Log Analytics: it can query data with kusto query language, visualize results, define Alerts on queries.
Alerts is quite a complex beast, as it is spread across the entire cloud. Two types that I use the most:
log-analytics alert (which I mentioned above)
Alerts tab, which is available at every Azure component view. for example, open resource group, and scroll down to Monitoring section
Each component also has a subset of built-in metrics. Likely, you noticed that many azure components on the Overview view display some charts. For example, Azure Storage Account displays Total egress, Total ingress, and other line-charts. When you click on these charts you can customize them. These metrics and charts are free to use.
Microsoft also has all-in-one observability solution for Azure Functions and Web Apps: Application Insights
Dashboards allows to join multiple charts into a single view and share it with others.
If you care about security, Azure proposes Azure Security Center
Deployment/management strategy
I suggest to start with:
Create Log Analytics Workspace, which is the storage for metrics and logs. The azure docs article explains how to design it: how many instances to use, how to rate-limit ingestion (it might be expensive if goes out of control), how to access it and so on.
To get Azure components logs, look for Diagnostic Settings tab at a component page at Azure portal, but not all components has it (sic!). I suggest
sending the most critical data to Log Analytics workspace to store them in a queryable format for 30 days (it's in free tier). This is needed for investigating current issues with your infrastructure
if you might need logs later than 30 days - send them to Storage Account
you mentioned SIEM integration - route required events to Event Hub and then process the stream according to your requirements
So, if you need long-term storage - you need to create Azure Storage Account.
If you need real-time analysis - you need to build a pipeline based on Azure Event Hub.
If you have Azure Functions and Web Apps - add Application Insights. According to my experience, I would suggest starting with a separate instance per each Azure Function resource or Service.
Create Alerts for each component separately. If you do it through UI - open component page at the portal and look for Alerts tab there. If you're automating the process (please do so as soon as possible), do not expect easy trip: I used ARM templates and terraform - in both cases, there are dozens of barely documented features.
Join related components core-metrics into Dashboards and share it with the team. This guide is a good starting point. Note, when you share the dashboard, it's also persisted as an azure resource in the subscription.
I am new to Microsoft Azure / Google Cloud and I am currently comparing these two different cloud solution providers, before starting a new project. I am planning to write a web application using either Google Cloud App Engine or Azure App Service.
I want to start with a very basic service instance, which I want to call via HTTPS. To reduce charges it would be nice to only pay for used service minutes resp. that the instance only runs, when needed.
Google Cloud offers dynamic instances, where compute instances are shutdown, when idle and started for incoming requests. Which seems way cheaper for a seldom used prototype and first usage of cloud services.
Instances are resident or dynamic. A dynamic instance starts up and shuts down automatically based on the current needs. [...] When an application is not being used at all, App Engine turns off its associated dynamic instances, but readily reloads them as soon as they are needed.
Unfortunately, I found in the Azure documentation only an Overview of autoscale in Microsoft Azure Virtual Machines, Cloud Services, and Web Apps, which does not cover my question of an automatic instance shutdown in idle state. Also Start/Stop VMs during off-hours solution in Azure Automation does not satisfy my information need, because I am looking only for a compute instance and not a full VM.
Is there an equivalent in the Azure domain, that allows to automatically start up and shut down app service instances, based on the usage resp. incoming requests?
Depending on the functionality of the two cloud service provider, I am deciding which one to use. Has anybody experience with this matter in the Azure domain? Thank you.
You can't do that with Azure App Service alone as of now (24-Feb-2019). But you could combine an Azure function to fire up a App Service instance and then forward all incoming traffic to an app hosted in this App Service via an Azure function proxy, see this description on learn.microsoft.com. I was planning to try this for while now too. In theory it should work... From experience, App Service instances fire up quickly, so the warm up time should be acceptable. Even better, you could keep free or shared App Service plan instance with your app running and forward the Azure function calls to it by default. On increasing load, move the app to a pre-configured plan which supports auto scaling.
Of course you could try to implement the entire app via a set of Azure functions which are fully "dynamic" using your terminology. Depending on the architecture of your application, this might actually be the best choice.
The Autoscale feature of Azure offers you to scale out/scale in based on configurable criterias, take a look here. You are limited by your pricing tier. Maybe this example will help you get an insight.
If I was to use Azure Media Services to consume encoding of small video files and then playing back on a web app and mobile app, do i need to turn on the 'Streaming Endpoint' option? I am getting charged ~$65 a month just to have streaming endpoint, not sure if i need it.
The pricing doesn't quite make sense because I can get the same basic features from Vimeo for $7 a month.
Am I consuming this correctly?
If I was to use Azure Media Services to consume encoding of small video files and then playing back on a web app and mobile app, do i need to turn on the 'Streaming Endpoint' option?
Yes, the official documentation explains that a streaming endpoint is the service that delivers content directly to the client application for live-streaming, video on demand, or progressive download.
So this means that you would need at least one streaming endpoint to be able to serve your videos to a client. A Media Services account already includes a default standard streaming endpoint. According to the documentation, this default streaming endpoint would be enough for the vast majority of workloads.
Take a look at the pricing page for more info: https://azure.microsoft.com/en-us/pricing/details/media-services/
According to the pricing page, the default streaming endpoint does cost ~$65/mo.
In regards to your comparison with Vimeo, the service that you end up using really depends on your particular case. While I understand pricing is a big factor when building an application, you should still consider the security of your videos at rest and in transit, scalability, availability of services, support, etc.
I am planning to use Azure Mobile Services for the mobile app I am planning to develop. Its a bit of social kind of app. (I am expecting a lot of data - relations and storage(pics etc. ). For the app, I wish to use Azure Mobile Services for easily adding oAuth authentication for my app, Mobile services also provide other useful features like granular control to data access, push notifications etc.
I plan to use Azure SQL for hierarchical data and Azure Storage for images etc. So for my data service API, writing custom API in Mobile service seem to be the natural way.
But I am bit apprehensive about developing my data service API in Mobile Services; when I think what if my data grows huge, somehow I have doubts will Mobile services API be able to handle huge data, thick and fast flying data requests.
(The size of data I am looking at is - on an average each user may add 'one' post of lets say 1000 words and 3 picture files on an average, not sure how many users, but users will be worldwide)
Does someone has any experience with performance/scalability- elasticity of Custom WepAPI? If you can kindly share your experiences/knowledge in this regard, I'll really appreciate
Azure Mobile Services does provide scaling... This means getting into the paid services, for example: http://www.windowsazure.com/en-us/pricing/details/mobile-services/
You can also scale out the SQL database used in your mobile services. For some detail: http://msdn.microsoft.com/en-us/library/windowsazure/jj193178.aspx
If you think even that might be an issue, I'd recommend wrapping the use of the services so you can swap them out easily.