Best practises for modules

I’m introducing IAC to a large Azure environment and a lot of the resource types have a number of instances.

There was some Bicep, but it had a lot of issues. This had a module for each resource type and a params file with each instance of that resource type in it. There’s also build and release pipelines for each resource type which makes for a lot of modules and even more pipelines.

Should I keep this pattern and have a module for each resource type? Does it make sense to try and translate this to Terraform?

When I’ve worked with Terraform previously there’s been one pipeline to push out everything at once, how well does this approach scale on larger, more complex environments?

I’d be interested in people’s opinions on the above and what’s worked for them.