Azure API gateway vs nginx - nginx

I am evaluating wep api gateway for my new projects. I used azure api gateway in the past. Reading about nginx as it is new and adopted by many. Can someone help me point out with some facts, pros, cons? Bug matrix will be a best help for me

Azure API Management is a mature and widely-used product, with many customers being very respected enterprises. Take a look at some public case studies.
It offers a very wide range of features, which are typical of an API management platform, and it is still being very actively developed. However, one of its biggest strengths lies in integration with Microsoft Azure services and features - multiregional deployments, virtual networks, monitoring and alerting solutions, native support for Service Fabric, Azure Function Apps and Azure Logic Apps, Azure Active Directory and others.
If you are considering hosting your new projects with Microsoft Azure, Azure API Management is a no-brainier.
The product is also one of the main reasons why Gartner named Microsoft a leader in the enterprise integration space.
Disclaimer: Although all of the above is best to my knowledge, I am affiliated with Azure API Management.

Although I have just started looking into this myself, here's what I can already conclude.
Looking at www.nginx.com/blog/deploying-nginx-plus-as-an-api-gateway-part-1/, Nginx requires a lot of manual configuration washed over many text files. That doesn't look flexible or effective, but I may have gotten a wrong impression.
Judging by how you're supposed to define your API keys using the map directive, Nginx API Gateway also looks like a new idea stretched on top of the existing product, while Azure API was designed for that exact purpose from the ground up.
Azure APIs, when published, come with auto-generated documentation and an interactive console that are in sync with all your updates.
With Azure API, you're putting all your eggs into one basket and completely depending on it's pricing and availability. At any moment Microsoft can increase their prices, or discontinue the product, and you cannot migrate elsewhere, at least not easily/quickly. At the same time, you can do your Nginx work once and run it on pretty much any server, starting with a low-end VPS or a Raspberry PI, if you'd like. It's pretty much yours.

Related

Anyone know the future of Azure Blueprints?

Anyone know the future of Azure Blueprints? Is Microsoft embracing Terraform as a replacement? I don't mind ARM templates just trying to get a sense of the future for managing infrastructure.
I currently use ARM and Blueprints to manage our Azure subscriptions and infrastructure but I have been seeing a lot of posts around Terraform in relation to Microsoft and Azure.
I have also looked into other tools such as Bicep and Pulumi but right now I more interest in what the planned future for Blueprints is.
Future or roadmap of Azure Blueprints:
Most of the Blueprint resourcing is going towards Template Specs (video overview) and Deployment Stacks, which is what Blueprints are eventually going to use under the covers. For authoring improvements, focus is bicep. The GA (General Availability) ETA is set for March/April when the new underlying resource types (template specs and deployment stacks) are ready and we can migrate everything over.
More info in this talk:
Blueprints migration plan
Deployment stacks overview
Most of the Blueprint UserVoice asks are either already implemented in Templates/Template Specs, or they are something we will address with above mentioned future improvements to templates/bicep and stacks.
Lastly, even though the Blueprint service is listed as “Preview”, we treat the service as GA, which means even once a migration path is made available, we will continue to support the current Blueprint APIs for 1-3 years or until everyone has been migrated.
Source of above information: https://learn.microsoft.com/en-us/answers/questions/177308/index.html

On-premises usages of LUIS.ai

Can LUIS.ai be run on the edge (on-premises)? We have issues with consistent internet connectivity within our specific use-case and can't provide high QOS without an on-premises model.
Unfortunately Luis relies on several APIs and a published web app in Azure, Internet connectivity could be an issue in implementing it. A suggestion i'd provide would be to create a bot ran locally, then use the programmatic API:
LUIS provides a programmatic API that does everything that the UI at https://www.luis.ai does. This can save time when you might have a lot of preexisting data and it'd be faster to create a LUIS app programmatically than by entering information by hand.
More Documentation can be found here

How to log hardware information from azure web roles/web worker?

I need to get hardware information from azure web roles / web worker to monitor it for critical conditionals like high memory/cpu usage.
I tried to use some addons which are provided in the azure gallery like the one from "logentries", but the gallery doesn't support my country yet...
Is there an other way to get the log information directly?
Last option would be Azure Diagnostics, but it stores everything in blob storages and I would have to pull everything out there on my own and send it to "manually" to logentries, geckoboard or whatever.
Three good options:
Windows Azure Diagnostics. Yes, it puts everything in table/blob storage which is painful, but there are tools such as Cerebrata's Azure Management Studio that can help gather and visualize the data.
Application Insights. This is still in preview, but it provides a very rich application monitoring and alerting platform.
The built in Azure monitoring. This is not quite as feature rich as Application Insights, but it is very easy to setup and use and includes monitoring and alerting.
I'm surprised that no one mentioned New Relic.
It has a comparable feature set to Application Insights but should be way more stable since it's not in preview like Insights. (although I am following the development of Insights closely, give it a while and it will be an awesome alternative)

Mutli-tenancy Vs Single tenancy

I want to know the difference between multi-tenancy and single tenancy.
Is tomcat supporting mutli-tenancy .Can you explain both with an example.
I am asking this question in context to http-servers.
Definition
From Wiki definition
In a multitenancy environment, multiple customers share the same application, running on the same operating system, on the same hardware, with the same data-storage mechanism. The distinction between the customers is achieved during application design, thus customers do not share or see each other's data.
So you can imagine that single tenancy is the other way around.
Example
Let's take JIRA as an example,
If you use OnDemand JIRA Service, it is multi-tenant, cloud-based service.
If you download JIRA Standalone and install it for you organisation. It is single tenancy case.
Designing multi-tenancy software
Designing multi-tenancy software is nothing to do with the hosting technology. It's actually about the way you architect the software.
Tomcat in your case, is absolutely suitable for multi-tenancy software.

ASP.NET Cloud application Vs Ordinary ASP.NET

I was reading this article Build Your First Cloud Application Using Visual Studio 2010 when It hit me:
Why would I switch from my normal
hosting (shared account, VPS, or
whatever) to host it on cloud
servers ?
Do I have to build my website with
ASP.NET Cloud Application to be able
to host it with any cloud providing
service company ?
How can I edit my ASP.NET Web
Application to be an ASP.NET Cloud
Application ?
Those are the questions I thought would help to gather a full picture about this new technology and it's own application template! but please feel free to add more points to consider in the answers.
Edit
so beside the difference in implementing a website between Azure and other cloud server
is there is a performance difference or any other differences between Azure and the other cloud servers ?
I didn't quite get what you meant by "bringing your app on site with your own staff may become more economical"
the Azure pricing are high and requires a whole new dedicated project to work with it restrictions. so both the hosting and the development are costy
I hope if there's any article about the good cloud hosting out there and perhaps any articles about the user experience (a legitimate review and maybe yours if you have any)
First, I believe "cloud" in the context of the blog article you read should really be more granularly defined as Azure. There are several cloud solution offerings and Azure is only one although it is gaining immense popularity in the MS community space. The Azure cloud is fairly unique compared to products like Amazon's cloud in that it requires applications that use it to comply to a specific set of APIs. To build an application for azure requires you to embrace certain architectural principles from the beginning and to build your app using its web and worker roles. To "fit in" to these roles, your app must be built within a special VS project that references the Azure SDK.
If you were to use another cloud solution like Amazon, it is more similar to firing up a VM or group of VMs that can host your app as is without the constraints of specific APIs. You simplu would fire up a windows server instance, install what you need on it like any other server you would use in a hosted or or leased data center environment.
I am not implying that the azure solution is flawed or overly restrictive. Rather, I think it supports some architectural constraints that will allow you to "fall into the pit of success." However, it may be difficult to effortlessly migrate many brown field apps to azure without making significant changes.
As far as why host a application in the cloud as opposed to a normal hosted environment. It really depends on your app, your business/budget constraints and your traffic level. For many small, hobby sites, you may be better off keeping your app on a traditional hosted environment. For larger scale apps, the cloud begins to make more sense. The cloud is really supporting a "pay per use" model. If you need to have the ability to scale out quickly without the funds or the ability to wait on a purchase of lots of additional hardware, the cloud is a good option. Cloud providers have deep pockets and plenty of server resources and bandwidth to send your way at a moments notice that you can rent instead of buy.
Also, because cloud providers are large and typically highly reputable, they can afford to hire expert staff and follow best practices that you may not be able to afford on your own. They can and will handle a lot of the day to day ops administration enabling you as a developer to not have to think of things like security and redundancy.
So as I see it, cloud solutions are ideal for apps that are beginning to see a fair amount of traffic, need guaranteed up time, and do not want to pay or bother themselves with their own admin staff, server purchasing and data center management. I think they are not practical for many small hobby sites and once you become really big, bringing your app on site with your own staff may become more economical.
That all said. it has become "cool" in the .net space for any site to run on azure. I'll admit that some of the architectural models are interesting and seem fun to work with. However, if you take a close look at the pricing model, you may find you are better off with your hosted plan.
Moving your .NET application to a cloud or hybrid infrastructure allows you to start evolving to a Microservices Architecture, with the ability to phase in Containers and a Serverless architecture.
You mentioned that Azure costs are high and maybe cumbersome in your situation.
Maybe consider other popular cloud providers like AWS. They have a ton of vendors and services all readily available to help make the adoption easy, in fact over 57% of Windows workloads currently run on AWS.
Here is an eBook we recently published about this exact topic.

Resources