Azure / Azure-Verified-Modules

Azure Verified Modules (AVM) is an initiative to consolidate and set the standards for what a good Infrastructure-as-Code module looks like. Modules will then align to these standards, across languages (Bicep, Terraform etc.) and will then be classified as AVMs and available from their respective language specific registries.
https://aka.ms/AVM
MIT License
281 stars 61 forks source link

[Question&Feedback]: Web/Function/Logic App Modules #897

Open frasermolyneux opened 2 months ago

frasermolyneux commented 2 months ago

Check for previous/existing GitHub issues

Description

I wanted to start a discussion on the current web/function app Terraform module and the proposed Logic App Standard module.

All services are built upon App Service architecture; with Logic App Standard being built on Functions runtime. However they have key differences.

ARM does have a common API for them all; azurerm did have a converged resource in the past but now has separate resources for them:

All depend on the https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/app_service_plan resource for the hosting platform.

647 - This issue proposed a Logic App Standard resource but question has arisen with extending the web (+function) module standalone.

When you start to look at adding Logic App to it there is an overlap with the Function App variables as well as the likely introduction of new ones.

On a single-responsibility and usability aspect there is a complexity consideration for a single module for what is in effect three distinct Azure services with different use cases.

I would favour three modules; one for each for discoverability, usability and maintainability. The counter-challenge would be duplication of code for the common properties - is there the ability for a common/base module there? Regardless I think the pros outweigh the cons.

What are your thoughts? Happy to discuss internally.

microsoft-github-policy-service[bot] commented 2 months ago

[!IMPORTANT] The "Needs: Triage :mag:" label must be removed once the triage process is complete!

[!TIP] For additional guidance on how to triage this issue/PR, see the AVM Issue Triage documentation.

[!NOTE] This label was added as per ITA06.