Skip to content
CAMPUX
Field notes · Fundamentals
Resource groups

What is a resource group, really?

By 6 min read

Not a folder, not a billing bucket, not a security boundary — although it brushes against all three. A resource group is a lifecycle boundary, and once that clicks, half of Azure's organizational rules stop feeling arbitrary.

New to cloud? CAMPUX is a free, build-first course. Start here →

Almost everyone meets resource groups the same way: you go to create your first VM, Azure demands a resource group before it will let you continue, so you type my-rg, shrug, and move on. That shrug is the problem. The resource group is one of the few organizing ideas you cannot opt out of in Azure — every resource must live in exactly one — so it pays to actually understand what it is for rather than treating it as a required text box.

The definition, and the word that matters

Microsoft defines it plainly: "A resource group is a container that holds related resources for an Azure solution." True, but "container" is where people stop, and stopping there makes it sound like a folder. Keep reading to the sentence that carries the real meaning: "Generally, add resources sharing the same lifecycle to the same resource group so you can easily deploy, update, and delete them as a group."

There it is — lifecycle. The right question when deciding where a resource goes is not "what type of thing is this?" but "does this get created and destroyed together with those other things?" A web app, its App Service plan, its database, and its storage account are one application; they are born together and they should die together. That shared fate is what a resource group expresses.

Group by what dies together, not by what looks alike.

A resource group holds the resources of one workload so they deploy, are governed, and are deleted as a unit.Resource group · app-prodVMDiskNICPublic IPNSGone lifecycle — deploy, manage, and delete as a unit · shares region-agnostic RBAC & tags
Figure — A resource group is a container for resources that share a lifecycle. The pieces of one workload — VM, disk, NIC, public IP, NSG — live together so you can deploy them from one template, apply RBAC and tags at the group level, and tear the whole thing down with a single delete. It is a management boundary, not a network or security one: resources in a group can sit in different regions, and the group's region only stores its metadata.

Why lifecycle is the whole point: delete

The clearest way to feel this is the delete button. Deleting a resource group deletes everything inside it, in the right order, in one action. That is not a footnote — it is the feature. Spin up an entire environment for a demo, a test, or a short-lived experiment, put it all in one resource group, and when you are done, delete the group and the whole thing evaporates with no orphaned disks quietly billing you for months.

This is also why "group by lifecycle" is not just tidiness advice. If you dump a long-lived production database into the same resource group as throwaway test resources, you have wired a permanent thing and a disposable thing to the same kill switch. The day someone cleans up the test junk by deleting the group, the database goes with it. Group by what dies together, and that accident becomes impossible.

What it is not

Half of understanding resource groups is clearing away what they are commonly mistaken for:

The rules that now make sense

A resource belongs to exactly one resource group at a time. You can move resources between groups, but not all resource types support it, and a move is a real operation rather than a rename. Both rules feel less arbitrary once you see the group as a lifecycle unit: a thing can only share one "born and die together" story at a time.

A practical way to draw the lines

You do not need a grand taxonomy. A few honest questions do the job:

Do that and your groups start reading like sentences: this app, this environment, this lifecycle. The console stops looking like a junk drawer, your infrastructure-as-code maps cleanly onto real boundaries, and the scary delete button becomes a precise tool instead of a landmine. Not bad for the text box everyone used to shrug past.

Questions people also ask

What is a resource group used for in Azure?

A resource group holds the resources that share a lifecycle — the pieces you deploy, update, and delete together. It is not a folder for organizing by type; it is a lifecycle unit. When you tear down a project, you delete the resource group and everything inside goes with it in one action.

Can resources in a resource group span multiple regions?

Yes. The resource group's own location only records where its metadata is stored, not where its resources run. A virtual machine can sit in West Europe while its resource group's metadata sits in East US. Region choice for the group is independent of the regions its resources are deployed to.

What happens when you delete an Azure resource group?

Every resource inside is deleted with it, in the correct dependency order, in a single action. That is the point of the group, not a side effect. Put long-lived production resources in the same group as disposable test resources, and a cleanup delete takes the production data down too.

Can a resource belong to more than one resource group?

No. A resource lives in exactly one resource group at a time. You can move it to a different group later, but a move is a real operation, not a rename, and not every resource type supports it. That single-membership rule follows directly from the group being a lifecycle boundary.

Is an Azure resource group a security boundary?

Not a hard one. You can assign RBAC roles at the resource-group scope and they inherit down to everything inside, which is useful. But the real isolation boundary in Azure is the subscription. Treat the resource group as a convenient place to apply access, not a wall between tenants or environments.

Further reading — the Microsoft docs
Your next class · free
You've read the idea. Class 7 — Entra ID, Subscriptions, Groups is where you build it, hands-on — no account needed.Start Class 7 →
Captain O
Founder & instructor · CAMPUX Cloud Engineering Bootcamp
LinkedIn
Drilled in Class 7 — Entra, Subscriptions & Groups. Next note: Bicep vs Terraform →