백엔드에서 "관리자"와 "사장"은 어떻게 다를까?
서비스를 개발하다 보면, 관리자(Admin)와 사장(Owner 혹은 CEO)의 개념을 시스템 내부에서 어떻게 정의할지 고민하게 됩니다.
현실 세계에서는 이 둘의 차이가 명확하지만, 백엔드 시스템 구조에서는 어떻게 구분하고 구현하는 게 좋을까요?
이 글에서는 실제 백엔드 설계 관점에서 "관리자"와 "사장"의 차이점을 정리해봅니다.
1. 현실 세계에서의 관리자 vs 사장
구분 | 관리자(Admin) | 사장(Owner/CEO) |
역할 | 시스템 또는 조직 내 운영 담당 | 조직 전체 방향성과 의사결정 담당 |
권한 | 운영 관리, 유저 승인/삭제 등 | 최고 권한자, 관리자까지 제어 가능 |
대상 | 실무 중심 | 전략 중심, 전체 소유자 |
일반적으로 관리자(admin)는 시스템이나 서비스 내부를 운영하는 사람이고, 사장(owner)는 그 시스템을 소유하거나 최종 책임을 지는 사람입니다.
2. 백엔드 시스템에서의 구분
백엔드 시스템에서는 흔히 Role 기반 권한 제어 또는 Permission 기반 권한 제어를 사용합니다.
이 경우 “관리자”와 “사장”은 다음과 같이 구현할 수 있습니다.
Role 기반 구현 예시
{
"username": "adminUser",
"role": "admin"
}
{
"username": "ceoUser",
"role": "owner"
}
권한 미들웨어 예시 (Node.js)
function authorize(role) {
return function (req, res, next) {
if (req.user.role !== role) {
return res.status(403).json({ message: "권한이 없습니다." });
}
next();
};
}
이처럼 role 값을 기준으로 각 사용자의 접근 권한을 제한할 수 있습니다.
여기서 owner는 모든 권한을 포함한 최상위 계정이고, admin은 실무 운영 권한을 가지는 경우가 일반적입니다.
3. 시스템 설계 시 고려할 점
항목 | 관리자(Admin) | 사장(Owner) |
역할 범위 | 서비스 운영 및 유지관리 | 전체 시스템 제어 및 계정 관리 |
구현 방식 | role: "admin" | role: "owner" 또는 is_owner: true |
권한 범위 | 제한적 (콘텐츠, 유저 등) | 무제한 (관리자 추가/삭제까지 가능) |
사용자 수 | 여러 명 존재 가능 | 보통 한 명 (혹은 매우 제한적) |
4. 더 세밀한 권한이 필요할 때: Permission 기반
간단한 시스템은 Role만으로도 충분하지만, 서비스가 복잡해지면 세분화된 권한(Permissions)이 필요합니다.
{
"username": "adminUser",
"permissions": ["user:read", "post:edit"]
}
{
"username": "ceoUser",
"permissions": ["*"]
}
사장은 모든 권한(*)을 부여받는 구조로, 보다 유연한 설계가 가능합니다.
5. 결론
- 관리자와 사장은 현실에서는 명확히 다르지만, 백엔드에서는 어떻게 권한 구조를 설계했는지에 따라 달라집니다.
- 보통 사장은 최고 권한자(owner)로, 관리자(admin)는 실무 권한을 가진 계정으로 구현합니다.
- 작은 서비스는 role 기반으로 충분하지만, 세밀한 권한이 필요한 경우 permissions 기반으로 확장하는 것이 좋습니다.
'트러블슈팅&기술선택' 카테고리의 다른 글
물과 기름같은 커서기반과 랜덤피드 (0) | 2025.03.29 |
---|---|
MSA 도입했음에도 다시 모놀로틱으로 돌아간 이유 (1) | 2025.03.28 |
MSA 정합성 문제 해결: Spring Cloud Feign Client & Kafka 활용 (0) | 2025.03.27 |
ELK vs Loki (0) | 2025.03.24 |
모놀로틱 아키텍처의 한계와 MSA 적용 이유 (0) | 2025.03.24 |