1
votes

I plan to have a number of Azure App Service API Apps, some of which should be accessible publicly (two client apps), through a single root URL and these are to connect to internal services that are not publicly accessible.

enter image description here

I have investigated a whole range of options on Azure including:

Azure API Management

Azure Application Gateway

Azure Service Fabric Mesh

Azure App Service Environments

Ocelot

Azure Function Proxies

I just cannot seem to find a solution that clearly meets my requirements (I find it really confusing):

  1. Single URL root for external client(s)
  2. Connectivity between internal services (REST)
  3. Based on serverless architecture
  4. Supports App Service API Apps and potentially Azure Functions
  5. Secure
  6. Scalable

Any help or advice really appreciated!

Thanks

2

2 Answers

1
votes

Your question is too broad, and is hard to give a good answer covering all these items. I will add my 2 cents and guide to the following information to elaborate you to the right question:

I can see 3 main challenges for your decision:

  • Application Platform
  • Load Balancing and Access Management
  • Service to Service Communication

You can't have a single decision that covers all these topics, because a decision to one topic will impact the others:

First I recommend you to decide which Application Platform will be better to your services, deciding between Functions, AppService, Service Fabric Mesh is a hard decision and one single answer here would not be enough to give the right information.

In your options you are missing containers, that is the foundation of the Service Fabric Mesh, if containers is an option, you will have also to increase you list with many other platforms.

Your decision will be tough:

  • Functions
  • AppService APIs
  • Service Fabric Mesh
  • Azure Container Instances
  • Web App for Containers
  • Kubernetes (AKS)

Scalability is relative to each application, one solution might scalable in one platform but others doesn't, you have to evaluate your application design against each one.

Once you pick the right one, the service to service communication will be the next step and each platform has an approach that works better than others.

Once you have the answer for these two, you can then decide which Proxy\Gateway you chose to handle the Load Balancing and Access Management, and depending on your choice above, Azure API Management or Azure Application Gateway could not be a good option but you would have other options available.

1
votes

Azure API Management is a great option for aggregating and managing your APIs from multiple backends in one service. You can watch this recording to understand it better.

It supports import from Azure Function Apps and works natively with Service Fabric. You can protect your backend services with auth or use a virtual network setup to hide them from the Internet.