vhost는 무엇일까?
- vhost 즉 virtual host는 메시징 시스템 내에서 논리적으로 분리된 파티션 또는 네임스페이스임
- vhost는 사용자, exchange, queue 및 binding 등 RabbitMQ 리소스에 대한 독립적인 네임스페이스를 제공
- 다양한 프로젝트나 환경에서 동일한 RabbitMQ 인스턴스나 클러스터를 공유하면서 리소스 간 충돌이나 권한 문제를 방지함
왜 vhost를 사용해야할까?
리소스 논리적 분리
- vhost는 RabbitMQ 서버에서 논리적 분리를 제공함
- 각 vhost는 독립된 네임스페이스에서 exchanage, queue, binding등의 리소스를 관리함
- 이 점이 여러 애플리케이션, 프로젝트, 또는 팀이 동일한 RabbitMQ 인스턴스를 공유하면서도 각자의 리소스를 분리할 수 있게 해줌
액세스 제어
- 각 vhost는 독립적인 권한 설정을 가질 수 있음
- 특정 vhost에 대한 액세스를 제한하거나 특정 사용자 혹은 그룹에게만 특정 권한 부여 가능
- 위를 통해 다양한 보안 요구 사항 충족 가능
dev, qa, prod 환경 분리
- vhost를 사용해서 동일 RabbitMQ 인스턴스 내에서 여러 환경을 논리적으로 분리할 수 있음
- 따라서 환경 간 리소스 충돌 또는 오버라이드 방지
- 각 환경에 대한 액세스 권한을 다르게 설정 가능
multi-tenancy
- 큰 조직에서 여러 팀 또는 부서가 동일한 RabbitMQ 서버 또는 클러스터를 공유할 수 있음
- vhost를 사용하면 각 팀 또는 부서마다 독립적인 작업 영역을 제공할 수 있음
이슈 격리
- 특정 vhost에서 문제가 발생할 경우 해당 vhost만 영향을 받고 다른 vhost는 안전하게 운영됨
그냥 RabbitMQ 서버 인스턴스를 하나 더 사용하면 안되나?
- 가능하지만, 추가 서버를 호스팅하려면 인프라 비용이 더 든다, 그러나 vhost를 사용하면 간단한 설정으로도 추가 시스템 리소스 없이 논리적으로 분리해서 사용할 수 있다.
개인적인 요약
간단하게 보자면 그냥 새로운 Web console에서 새로운 계정을 만들고 해당 계정이 동일 인스턴스 내에서 고유한 RabbitMQ 기능을 만들어서 쓸 수 있는 기능으로 보인다. 그런데 과연 이렇게 쓸 일이 많을까라는 생각이 든다. 아마도 데이터 작업을 주로 하는 팀 혹은 RabbitMQ와 연관된 많은 작업이 주 업무인 팀이라면 협업을 위해 이렇게 vhost를 만들어두고 쓰는 것 같다.
특정 도메인에 대한 RabbitMQ 서비스를 하나 더 서비스하기 위해서 동일 인스턴스 내에서 논리적으로 분할해서 사용하는 것은 오히려 좋지 않다고 생각이 들고, 그보다는 사용자 권한 분리 및 동일 환경에서의 테스트가 오히려 더 맞는 목적으로 보인다.
반응형
'백엔드 개발 > RabbitMQ' 카테고리의 다른 글
[RabbitMQ] RabbitMQ 구성요소와 용어 정리 (0) | 2023.10.28 |
---|---|
[RabbitMQ] RabbitMQ 공부 자료 모음 (0) | 2023.10.28 |
[RabbitMQ] 알아두면 좋은 추가 개념들 (0) | 2023.10.28 |
[RabbitMQ] RabbitMQ vs Kafka 성능 비교 논문 (0) | 2023.10.27 |
[RabbitMQ] RabbitMQ에 대한 이해 (0) | 2023.10.27 |