웹 서버 앞의 공인망 L4 말고, WAS(애플리케이션 서버) 앞에도 사설망 L4가 또 붙어 있는 구조를 보고 "이게 왜 필요한가" 궁금할 때, 그 이유를 정리하는 방법입니다.
1. 의문: L4가 왜 두 개인가
많은 웹 서비스가 인터넷 앞에 공인망 L4를 두고, 그 뒤로 WEB 서버들, 다시 그 뒤로 WAS 서버들, 맨 뒤에 DB를 놓는 3티어 구조를 씁니다. 그런데 공인 L4가 WEB 앞에만 있는 게 아니라, 사설망 안쪽 WAS 앞에도 L4가 또 있는 경우가 많습니다. 분산이나 장애 대응은 공인 L4가 하거나 WEB에서 분기해도 될 것 같은데, 왜 굳이 사설 L4까지 두는지 의아할 수 있습니다.

- 3티어: 인터넷 -> 공인 L4 -> WEB -> (사설 L4) -> WAS -> DB
- 공인 L4는 WEB을, 사설 L4는 WAS를 분산
- "사설 L4가 왜 또 필요한가"가 이 글의 질문
2. 첫 번째 이유: WEB과 WAS를 떼어 놓는다(디커플링)
사설 L4의 가장 큰 역할은 WEB이 개별 WAS의 존재를 몰라도 되게 만드는 것입니다. WEB은 WAS 서버들의 IP를 하나하나 아는 대신, 사설 L4의 대표 주소(VIP) 하나만 바라봅니다. 그러면 WAS를 늘리거나 줄이거나 교체해도 WEB 설정은 건드릴 필요가 없습니다. 만약 WEB이 WAS IP를 직접 나열하는 방식이면, WAS 한 대를 바꿀 때마다 모든 WEB의 설정을 고쳐야 합니다.
- WEB은 WAS IP가 아니라 사설 L4의 VIP 하나만 바라봄
- WAS 추가/제거/교체해도 WEB 설정 불변
- WEB이 WAS IP를 직접 나열하면 변경마다 전 WEB 수정
3. WEB이 가리키는 건 WAS IP가 아니라 VIP다
그래서 WEB의 WAS 연동 설정을 열어 보면, 거기 적힌 주소가 실제 WAS 서버가 아니라 사설 L4의 VIP인 경우가 많습니다. 예를 들어 아파치와 톰캣을 mod_jk로 연동한다면 워커 설정의 host 값이 그 VIP입니다. 그 주소가 어떤 장비인지 헷갈릴 때는, 그게 개별 WAS인지 L4의 가상 IP인지부터 확인해야 구조가 정확히 보입니다.

- WEB 연동 설정의 host = 대개 사설 L4의 VIP
- 실제 WAS IP가 아니라 가상 IP일 수 있음
- 이 주소의 정체부터 확인해야 구조가 보임
4. "사설 L4라서 페일오버 된다"는 말의 진짜 의미
인프라 담당자가 "사설 L4가 있으니 페일오버가 된다"고 단정하는 데에는 이유가 있습니다. L4는 뒤에 달린 WAS들을 주기적으로 헬스체크해서, 죽은 노드를 즉시 분산 대상에서 빼 버립니다. 이게 능동적인 페일오버입니다. 반면 WEB이 WAS를 직접 나열하고 연동 커넥터의 재시도에 기대는 방식은, 연결이 실패한 뒤에야 다른 노드로 넘어가는 수동적이고 느린 대응입니다. 그래서 "진짜 페일오버는 L4가 한다"고 보는 것입니다. 만약 WEB 설정에 was1, was2가 개별로 나열돼 있다면, 그건 커넥터 레벨 페일오버라 L4의 헬스체크 기반 페일오버와는 성격이 다릅니다.
- L4는 WAS를 능동 헬스체크 -> 죽은 노드 즉시 제외
- WEB 커넥터 재시도 방식은 실패 후 넘어가는 수동 대응
- WEB에 was1/was2가 개별 나열되면 커넥터 레벨 페일오버(성격 다름)
5. 정리
사설 L4는 단순히 분산 장비 하나가 더 있는 게 아니라, WEB과 WAS를 떼어 놓는 지점이자 WAS 티어의 능동 페일오버를 담당하는 장치입니다. WEB은 VIP 하나만 알면 되니 WAS를 자유롭게 늘리고 줄일 수 있고, L4의 헬스체크 덕분에 죽은 WAS가 즉시 빠집니다. 게다가 WAS로 오는 트래픽이 WEB만이 아니라 배치나 내부 시스템에서도 들어온다면, 그 모두가 같은 VIP로 분산되니 사설 L4의 값어치는 더 커집니다. 공인 L4만으로는 이 역할을 대신하기 어렵습니다.
- 사설 L4 = 티어 디커플링 + WAS 능동 페일오버 지점
- WEB만이 아니라 배치·내부 시스템 트래픽도 같은 VIP로 분산
- 공인 L4/WEB 분기로는 대체하기 어려운 역할
여기까지 웹 3티어에서 WAS 앞에 사설망 L4를 또 두는 이유에 대해서 작성해봤습니다. 여기까지 읽어주셔서 감사합니다!
'일상' 카테고리의 다른 글
| DB 카탈로그로 테이블 정의서 엑셀 수백 장 자동 생성하기 (템플릿 기반 Excel COM) (1) | 2026.07.17 |
|---|---|
| 사내 DRM 때문에 폐쇄망 PC에서 PPT를 직접 자동 생성하기 (PowerShell + Office COM) (0) | 2026.07.17 |
| 레거시 자바 JDK 1.6에서 1.8로 이관할 때 라이브러리를 정말 다 갈아야 할까 (한 번에 변수 하나만 검증) (0) | 2026.07.17 |
| RDS 스냅샷에서 pg_dump로 SQL 덤프 뽑기 (스냅샷은 SQL 파일이 아니다) (0) | 2026.07.17 |
| 안 쓰는 AWS 인프라를 완전히 내려 요금 0원으로 만들기 (삭제 순서와 숨은 과금 함정) (0) | 2026.07.17 |