Organization은 GitHub에서 제공하는 조직 계정입니다. 개인 계정과 별도로 존재하며, 여러 사람이 함께 소유하고 관리할 수 있습니다. Organization은 저장소와 팀, 권한을 담는 공동 작업용 공간에 가깝습니다.
Organization을 만든 사람은 자동으로 Owner 권한을 갖습니다. 개인 저장소에서는 Owner가 저장소를 만든 한 명으로 고정되지만, Organization에서는 Owner 역할을 여러 명에게 부여할 수 있어 소유권이 특정 한 사람에게 묶이지 않습니다.
GitHub Organization: "awesome-team"
├── 저장소 1: awesome-team/frontend
├── 저장소 2: awesome-team/backend
├── 저장소 3: awesome-team/docs
│
├── Team: frontend-devs (저장소 1에 write 권한)
├── Team: backend-devs (저장소 2에 write 권한)
└── Team: everyone (모든 저장소에 read 권한)
저장소가 특정 개인이 아닌 조직에 귀속되므로, 팀원이 바뀌어도 저장소 소유권에는 영향이 없습니다.
| 역할 | 설명 |
|---|---|
| Owner | Organization의 최고 관리자. 모든 저장소와 설정에 접근 가능 |
| Member | Organization에 속한 일반 구성원. 기본 권한은 Organization 설정에 따라 다름 |
Team은 구성원을 그룹으로 묶는 단위입니다. Team별로 저장소에 대한 권한을 다르게 부여할 수 있습니다.
| Team 권한 | 설명 |
|---|---|
| Read | 코드 열람, issue/PR 작성 가능 |
| Triage(이슈 분류 및 관리) | Read + issue/PR 관리 |
| Write | 코드 push, PR merge 가능 |
| Maintain | Write + 저장소 설정 일부 관리 |
| Admin | 저장소의 모든 설정 관리 |
먼저 Team에 권한을 부여해서 기본 협업 구조를 만들 수 있습니다. 예를 들어 frontend-devs 팀에는 Write, everyone 팀에는 Read를 줄 수 있습니다.
필요하다면 특정 멤버 한 명에게만 예외적으로 더 높은 권한을 직접 부여할 수도 있습니다. 예를 들어 팀 전체는 Read인데, 그중 한 명만 해당 저장소에서 Write를 갖게 하는 식입니다.
정리 - Organization은 조직 단위의 저장소 소유권과 Team 기반 세밀한 권한 관리가 장점이지만, 소규모 팀에는 설정 비용 대비 이점이 적을 수 있습니다.
다음 세션에서 두 방식을 나란히 비교하고, 어떤 상황에서 어떤 방식을 선택해야 하는지 정리합니다.