Microsoft's Azure Application Gateway is a platform-managed, scalable, and highly available application delivery controller as a service with integrated web application firewall.
The best practice for a cloud environment is to use the tools provided by the cloud provider. That's why for Azure cloud, Azure Application Gateway is the most cost-effective solution that you can use. You can use a single Azure Application Gateway instance for load balancing WAF, URL-based routing, and more.
Uploading images by multiple end-users from several applications like web, mobile, etc.
When there is a high volume of data requests, it helps to queue them based on the type of request. So it's easy to serve and reduce the loading time from the application layer.
An application gateway is useful when it can identify the type of details the user is requesting.
Most of the Application Gateway's features and services can be managed and re-configured via either the Azure Portal GUI or via the Azure Cloud Shell, thus allowing both CLI modes, i.e. Azure CLI (Bash) and Azure Powershell. The v2 version of Application Gateway has significantly improved performance during initial configuration or during re-configuration changes, thus making it much more usable for IT admins, as compared to v1.
HAProxy is an excellent load balancer that can also be used in cloud environments (and we do!), and is relied by hyper-large enterprises globally as well. However, HAProxy is a little bit more rudimentary in feature space, it does the core job well and securely, but doesn't provide any fancy additional features. Also, it takes more effort to deploy HAProxy than simply using an in-built feature in the Azure stack.