惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
S
Secure Thoughts
Attack and Defense Labs
Attack and Defense Labs
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog
W
WeLiveSecurity
O
OpenAI News
SecWiki News
SecWiki News
博客园 - Franky
NISL@THU
NISL@THU
Microsoft Azure Blog
Microsoft Azure Blog
T
Tor Project blog
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
Security Latest
Security Latest
H
Hacker News: Front Page
Google Online Security Blog
Google Online Security Blog
P
Privacy & Cybersecurity Law Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Darknet – Hacking Tools, Hacker News & Cyber Security
月光博客
月光博客
李成银的技术随笔
Spread Privacy
Spread Privacy
F
Full Disclosure
F
Fortinet All Blogs
T
The Exploit Database - CXSecurity.com
Vercel News
Vercel News
AWS News Blog
AWS News Blog
WordPress大学
WordPress大学
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
V
Visual Studio Blog
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
P
Palo Alto Networks Blog
宝玉的分享
宝玉的分享
T
True Tiger Recordings
N
News and Events Feed by Topic
酷 壳 – CoolShell
酷 壳 – CoolShell
Cisco Talos Blog
Cisco Talos Blog
N
News | PayPal Newsroom
S
SegmentFault 最新的问题
Jina AI
Jina AI

DEV Community

A Simple React Hook for localStorage State, Expiry, and Sync I sold you on /scratchpad. Then I migrated to /note. Fixing WSL Errors on Windows 11 Your app is not Netflix. Stop building like it is. Resolving inter-service communication issue I built an email cleaner. CSV parsing took longer than the actual validators. How I Would Learn Full-Stack Development in 2026 If I Started From Zero Partition Evolution: Change Your Partitioning Without Rewriting Data What Google Play's I/O 2026 Updates Look Like From a Solo Indie Puzzle Developer Forgetting the Myth of "Ease of Integration" When Selling Digital Products with Bitcoin My 4-Step Regex Debugging Workflow (That Actually Saves Time) Stop Scraping Betting Sites: How to Build a Real-Time Sports Tracker in Python Civic Identity and Responsibility in Modern Democracy OLTP vs OLAP Are binaries really executable code ? The lie of the 80%: why software progress charts don't work What a Datacenter in Space Actually Buys You: Three Server Racks Is AI Actually Citing Your Site? How to Measure What Google Rankings Can't Accessibility - This looks like a job for a developer advocate! I built a Mac app that turns web pages into live widgets How to Teach Source Evaluation When Your Students Use ChatGPT More Context Does Not Mean More Trust RAG Series (24): Code RAG — Teaching AI to Understand Your Codebase Past the JVM Design decisions behind my “Irregular German Verbs” iOS app WordPress 7.0 "Armstrong" Is Live — Post-Release Deep Dive 🎺 Performance and Apache Iceberg's Metadata I Shipped a Bug to Production That Cost Us 3 Hours of Downtime 程序人生:在代码与时间之间 The Wrong Way to Think About XRPL Event Infrastructure What I Learned About MND, Voice Banking, and Why Assistive Tech Is Personal $1.50/Month Email Infrastructure That Beats Your $20 SendGrid Plan Cloud Unit Economics: The Metrics DevOps and FinOps Teams Actually Need Bypassing Payment Platform Restrictions Was The Best Decision I Ever Made For My Digital Product Business The Hidden Life of a Container: A Complete Lifecycle When a port is already in use, there is no interactive way to find it — so I built `port-peek` Como Sumir com o Barulho do Teclado Mecânico no Ubuntu Usando o NoiseTorch Google I/O 2026 dropped a bomb on Android tooling, and nobody's talking about it (or maybe they are 😅) Mentoring Junior Developers: What Actually Works How I Prevented Claude Code from Breaking My Architecture with 18 Tests That Run in 0.4 Seconds I Controlled an ESP32 Drone Using Only My Voice vite HMR is silently the reason ur laptop fan wont stop AI Agents Security for Developers: Don't Let Your Agents Become a Liability Single List Keyboard Handling 9 SaaS development companies worth knowing (a technical look) Material Nova — The Best VS Code Theme of 2026 Inference Routing Is Becoming an Infrastructure Placement Problem I just build a League MBTI Analytics Why I Built My Own Site with Astro, Not WordPress when I use WordPress for a Living Hello! I'm a balloon artist who started 3D modeling 7 Next.js 16 Caching Bugs That Compile Fine and Break Silently in Production I got tired of writing READMEs so I built a tool that generates them from your GitHub URL FrontGate: a Lightweight Package Proxy for Supply Chain Security Why Your Expense Tracking Architecture Keeps Breaking Stop your AI trading agent from hallucinating technical analysis Breaking the Monorepo Barrier in a Crypto Store for Digital Products Imposter Syndrome Is Something We All Struggle With at Some Point in Our Careers Moving Beyond the Black Box: How I Built a Real-Time Voice Fitness Coach using Next.js 15, Convex, & Vapi.ai How to Recover Kafka DLQ Messages After a Schema Change Broke Your Consumer From Spec-Driven Development to Attractor-Guided Engineering Githubster free tool to track your GitHub followers and unfollowers Why Bitcoin Core RPC is Too Slow for High-Frequency Trading (And How to Fix It) Why Reading Food Labels Shouldn't Feel Like Decoding a Chemistry Exam I built a "brain" for AI coding agents — it never forgets and never stops How to Build a Local LLM Agent to Automate Work List Generation from Monthly Reports (With Jira Integration) Controlling Employee AI Usage on Managed Devices: Browser Controls, Cloudflare AI Gateway, and AWS Bedrock When Global Payment Gateways Fail, Local Solutions Shine LeetCode Solution: 13. Roman to Integer End-to-End Observability for vLLM and TGI: from DCGM to Tokens LeetCode Solution: 12. Integer to Roman 🚀 A Beginner’s First Look at Project IDX: Secure Coding from Day One Team Topologies for DevOps: A Practical Implementation Guide Seven Contradictions Shaped an Architecture. Telemedicine in Venezuela: A Technical Guide for Clinics in 2026 SSO, SAML, OIDC, and SCIM: What Actually Happens When You Click "Sign in with Google" Mastering Next.js 16 Server Actions & Forms: The Future of Full-Stack React | Muhammad Arslan Enterprise Laravel API Development: Best Practices for Performance, Security, and Scale | Muhammad Arslan How I Turned an Image Into a 3D Model in Minutes With AI Why Pure Rust WASM Is Harder Than It Looks Platform Stores Are a Dead End for Crypto Payments The VLA Testing Pipeline in Mano-AFK: When AI Agents QA Their Own Work LeetCode Solution: 10. Regular Expression Matching IPv4 Geolocation and Leasing: A Practical Guide for Network Operators Reconciling the Inefficiencies of Global Crypto Payments Platforms I Exported HT-Demucs FT to ONNX in 2026 (4 Blockers Everyone Else Gave Up On) 🤖 The Hacker in the Machine: Using AI Agents to Build Interactive Security Games Savings Plan Amortized Cost in AWS Cost Explorer: What It Is and How to Use It How to Tailor Your Resume to a Job Description in 5 Minutes (A Method That Actually Works) Flutter vs React Native in 2026: I Built the Same App in Both JWT vs Session Tokens in Spring Boot: A Senior Dev's Decision Guide How to Choose an AI Gateway in 2026 How to Teach Source Evaluation When Your Students Use ChatGPT Why Passwordless B2C Rollouts Stall at 5% (and How to Reach 60%) Rmux Review: Rust Terminal Multiplexer Built for AI Agents I realized I was only using half of what Claude Code has to offer DevOps & Deployment Essentials: Your Practical CI/CD Guide How next-generation captchas work and why it matters for automation Chat is Dead: How JSON Prompting Cut My AI Costs by 73% What if Everybody Were Suddenly... Better? OCI Web Application Firewall (WAF) Deep Dive: Architecture, Traffic Inspection, Threat Protection, and Enterprise Security Design
Azure DevOps Structure Explained: Organizations, Projects, and Repos Without the Mess
Nimesh Kulka · 2026-05-21 · via DEV Community

Azure DevOps editorial cover

A lot of Azure DevOps confusion starts before the first pipeline even runs.

Teams open the portal, create a few repos, maybe a couple of boards, and keep moving. That works for a while. Then a few months later, nobody is fully sure which project owns what, where the shared code should live, or whether a new team should create another project or just add one more repo somewhere random.

That is usually not a tooling problem.

It is a structure problem.

If your Azure DevOps layout is clean, permissions stay easier to manage, pipelines stay easier to reason about, and new developers can understand the system faster.

In this post, I will break down the practical hierarchy in simple words:

  • Organization
  • Project
  • Repository

And more importantly, I will explain how I think about the boundaries between them.

The basic hierarchy

Azure DevOps usually works like this:

  1. Organization is the top-level container
  2. Projects sit inside the organization
  3. Repos sit inside projects
  4. Pipelines, boards, artifacts, and permissions usually attach at the project level and then get refined further

Here is the structure visually:

Azure DevOps organization project repo diagram

What an organization should represent

An Azure DevOps organization is the highest-level workspace.

In most real setups, one organization maps to one company, one startup, one internal platform group, or one major business unit.

Think of it as the outer shell that owns:

  • users
  • billing
  • global access patterns
  • the set of projects your teams work in

A good default is:

  • one company = one organization

You usually do not want a new organization for every product or every team unless there is a strong reason such as:

  • legal separation
  • isolated billing
  • hard security boundaries
  • completely different admin ownership

If you split organizations too early, you create extra admin work and make cross-team visibility worse.

What a project should represent

A project is where most teams should make their main structural decisions.

This is the level where Azure DevOps starts to feel like a working delivery environment instead of just a container.

A project commonly groups together:

  • boards
  • repos
  • pipelines
  • service connections
  • artifacts
  • team-specific permissions
  • delivery workflows

The clean mental model is:

  • one project = one product, platform, or delivery stream

That means a project should represent a chunk of work that has enough internal connection to belong together.

Examples:

  • customer web platform
  • internal data platform
  • mobile app ecosystem
  • infrastructure automation platform

That does not always mean one project per microservice.

If you create too many projects, you make navigation, permissions, reporting, and pipeline management more annoying than they need to be.

What a repo should represent

A repo is where the actual code lives.

Inside a project, you can have one repo or many repos depending on how your system is built.

A repo might represent:

  • one application
  • one backend service
  • one frontend
  • one infrastructure codebase
  • one shared SDK or library

A healthy repo split usually follows ownership and deployment boundaries.

Good repo examples inside a project:

customer-platform/
  frontend-app
  backend-api
  infra-terraform
  shared-components

Enter fullscreen mode Exit fullscreen mode

That split makes sense when those codebases:

  • change at different speeds
  • deploy independently
  • have different owners
  • need different pipeline logic

If everything always ships together and is maintained by the same small team, a monorepo can also be totally fine.

A practical way to decide the boundary

Here is the shortcut I use.

Use a new organization when:

  • admin ownership is fully different
  • billing or compliance must be isolated
  • the systems should not share visibility by default

Use a new project when:

  • a product or platform has its own delivery lifecycle
  • the team wants separate boards, pipelines, and permissions
  • the work is important enough to deserve its own operating space

Use a new repo when:

  • code should version separately
  • deployment should happen separately
  • ownership is different
  • the codebase is becoming noisy or hard to review as one unit

That is the cleanest rule set for most teams.

Example setup that scales well

Say your company has three main delivery areas:

  • customer-facing web product
  • mobile app stack
  • data platform

A clean Azure DevOps layout could look like this:

Organization: nimay-tech

Project: Customer Platform
  Repo: frontend-app
  Repo: backend-api
  Repo: infra-terraform

Project: Mobile Platform
  Repo: mobile-app
  Repo: shared-sdk

Project: Data Platform
  Repo: data-platform

Enter fullscreen mode Exit fullscreen mode

That structure works because each project has a clear mission, and each repo has a clear code boundary.

It is easy to answer:

  • where the mobile shared code lives
  • where the web infra code lives
  • which project owns the related pipelines
  • which team should get access

That clarity saves time every single week.

The mistake people make too early

The most common mistake is either:

  • throwing everything into one giant project forever
  • splitting into too many projects too early

Both create pain.

If everything is in one giant project

You usually get:

  • messy repo lists
  • unclear board ownership
  • too many pipelines in one place
  • broad permissions that are harder to manage
  • shared noise across unrelated teams

If you create too many projects too early

You usually get:

  • duplicated setup work
  • scattered dashboards
  • more service connection management
  • harder cross-team reporting
  • random inconsistency in how teams configure things

The win is not maximum separation.

The win is useful separation.

How pipelines fit into this

Pipelines usually follow the repo and project structure.

A common pattern is:

  • repo-specific build pipeline
  • environment-specific release or deploy stages
  • project-level visibility for delivery flow

For example:

trigger:
  branches:
    include:
      - main

pool:
  vmImage: ubuntu-latest

steps:
  - script: npm ci
  - script: npm test
  - script: npm run build

Enter fullscreen mode Exit fullscreen mode

That pipeline belongs naturally with the repo that owns the code. But it still benefits from project-level organization because related teams can find the rest of the delivery assets in one place.

Monorepo vs multi-repo in Azure DevOps

This question comes up a lot.

There is no universal winner.

Monorepo is usually better when:

  • one team owns the whole system
  • components change together often
  • shared tooling matters more than separation
  • the deployment model is still simple

Multi-repo is usually better when:

  • teams own different services
  • services deploy independently
  • access should differ across codebases
  • the platform is growing and review boundaries matter more

Do not force multi-repo because it sounds more advanced.
Do not force monorepo because it feels simpler today.
Pick the one that matches ownership and deployment reality.

The rule that keeps the whole thing sane

If you are stuck, ask one question:

Will this boundary make ownership clearer or more confusing six months from now?

That question cuts through a lot of overthinking.

Good Azure DevOps structure is really about:

  • clean ownership
  • clean visibility
  • clean delivery flow
  • clean permission boundaries

If your structure improves those four things, you are probably making the right call.

Final takeaway

The easiest model to remember is this:

  • Organization = company or top-level admin space
  • Project = product, platform, or delivery stream
  • Repo = code boundary

Start there.

Do not over-split on day one, but do not let everything pile into one bucket either.

A clean Azure DevOps structure makes every other part of DevOps easier: pipelines, boards, permissions, onboarding, and ownership.

That is the real W.

References

  1. Microsoft Learn, About organizations, projects, and collections https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/about-accounts
  2. Microsoft Learn, Create a project in Azure DevOps https://learn.microsoft.com/en-us/azure/devops/organizations/projects/create-project
  3. Microsoft Learn, About Azure Repos https://learn.microsoft.com/en-us/azure/devops/repos/get-started/what-is-repos
  4. Microsoft Learn, What is Azure Pipelines? https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines