서버가 VIP에서 제외된다는 말, 맞는 표현일까?
웹개발자가 VIP(Virtual IP)용어를 마주쳤을 때, 서비스 아키텍처와 함께 생각해보았습니다.
웹개발자가 VIP(Virtual IP)용어를 마주쳤을 때, 서비스 아키텍처와 함께 알아간 사연입니다.
최근 이런 공지를 받았다.
“[호스트명] 서버가 VIP에서 제외될 예정입니다. (시스템 작업)”
처음엔 그냥 그러려니 했다. VIP라고? 나에게 VIP는 “Very Important Person”이 전부였다. 그래서 검색을 해보니, IT에서 VIP는 Virtual IP의 약자였다.
VIP는 여러 서버가 존재할 때,
클라이언트는 VIP 하나만 알고 있으면 요청을 보낼 수 있게 해주는 논리적인 IP 주소라고 한다.
즉, 물리적으로는 여러 대의 서버가 있더라도,
VIP를 통해 한 군데처럼 보이게 만들 수 있다는 것이다.
여기까지 보고 “아~ 그런 거구나” 하고 관심을 끊었다.
그런데 문득 떠오른 생각.
들은 바로는, 우리 아키텍처는 분명 L7 로드밸런서를 사용하고 있고, 클라이언트 요청은 여러 서버로 분산된다.
그런데 “서버가 VIP에서 제외된다”는 말은 어딘가 이상하다.
만약 해당 서버가 VIP를 직접 갖고 있는 구조라면, 그건 로드밸런싱이 없는 구조 아닌가?
정확한 구조는?
물론, 정확한 네트워크 아키텍처는 나조차도 모른다.
위키에 남아 있는 구조도는 있지만 최신 데이터인지도 확실하지 않고,
내가 웹개발자다 보니 인프라 쪽 구조에 대해 상세히 들은 적도 없다.
하지만 일반적인 L7 로드밸런서 기반 구조를 생각해보면, 대략 이런 그림이 그려진다:
1
2
3
4
5
6
7
[Client]
↓
VIP (Virtual IP, ex: 10.0.0.100)
↓
Reverse Proxy / Load Balancer (예: Nginx, HAProxy)
↓
[Server A] [Server B] [Server C]
여기서 VIP는 하나의 진입점 IP일 뿐이고,
실제로 VIP에 바인딩된 것은 Reverse Proxy 또는 Load Balancer다.
그 뒤에 있는 서버들은 로드밸런서의 업스트림(upstream) 서버들일 뿐이다.
여기서 ‘업스트림(upstream)’이란,
로드밸런서 또는 프록시 서버가 요청을 전달하는 대상 서버를 의미한다.
즉, 로드밸런서 입장에서 ‘요청을 위쪽으로 전달할’ 서버들이라는 의미에서 붙은 용어다.
따라서 “서버가 VIP에서 제외된다”는 말은,
인프라 구조에 익숙하지 않은 개발자 입장에선,
마치 VIP가 서버에 직접 바인딩된 것처럼 오해할 여지가 있다.
정확한 표현은?
“서버가 로드밸런서의 백엔드 풀에서 제외된다.”
혹은:
“업스트림 대상에서 빠진다.”
이런 식으로 표현하는 것이 시스템 구조를 오해하지 않게 만든다.
왜 이런 표현이 혼동을 낳았는가?
- VIP는 하나의 IP 주소일 뿐이며, 실제 요청을 분배하는 주체는 로드밸런서다.
- “VIP에서 제외”라는 표현은 마치 서버가 VIP를 직접 소유하거나, VIP에 종속된 구조처럼 들린다.
- 이처럼 용어 선택이 모호하면 시스템 구조에 대한 혼동을 일으킬 수 있고, 협업이나 운영 과정에서 불필요한 커뮤니케이션 오차가 생길 여지도 있다.
마무리: 용어 하나가 혼동을 만들 수 있다
실제 네트워크 아키텍처를 정확히 알기 어려운 상황일수록, 표현 하나가 시스템 구조에 대한 이해 방식에 미묘한 영향을 줄 수 있다는 점도 염두에 두게 되었다.
정확한 용어 선택은,
팀 간 의사소통과 시스템 파악의 첫 단추라는 점에서 더욱 신중해야겠다.
다른 시선이나 피드백이 있다면 알려주세요!