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

推荐订阅源

Jina AI
Jina AI
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
H
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
L
LINUX DO - 最新话题
A
Arctic Wolf
博客园_首页
S
Securelist
S
Secure Thoughts
Google DeepMind News
Google DeepMind News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Cyberwarzone
Cyberwarzone
小众软件
小众软件
T
Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Blog — PlanetScale
Blog — PlanetScale
N
News and Events Feed by Topic
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
博客园 - 聂微东
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
H
Heimdal Security Blog
罗磊的独立博客
S
Security @ Cisco Blogs
B
Blog
T
Troy Hunt's Blog
Engineering at Meta
Engineering at Meta
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
The Cloudflare Blog
S
Schneier on Security
月光博客
月光博客
L
LINUX DO - 热门话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
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