caffeine-library / release-everything

'Release의 모든 것'을 읽는 스터디
3 stars 0 forks source link

[question] 9장 질문 - 고정 연결과 역 프록시 #28

Closed leejaeseung closed 7 months ago

leejaeseung commented 7 months ago

질문

고정 연결 p.259

또 다른 방법은 특정 IP 주소로부터 들어오는 모든 요청이 동일한 세션이라고 가정하는 것이다. 이 방법은 역 프록시가 부하 분산기 앞에 있는 경우에 심각한 문제가 생긴다.

글의 맥락 상 서로 다른 고객이 같은 IP 를 가지게 되어 모두 동일한 세션이라고 가정한다는 것 같은데, 역 프록시가 부하 분산기 앞에 있는 경우 가 잘 상상이 되지 않네요.. 다른 분들은 어떻게 이해하셨나요?! (역 프록시 == 부하 분산기 이지 않나요..?)

9장 - 상호 연결 에서 잘 이해되지 않던 내용이라 그대로 가져와 보았습니다. 같이 논의해보면 좋을 것 같아요!

연관 챕터

27


@caffeine-library/readers-release-everything

binchoo commented 7 months ago

역프록시는 NGINX 서버처럼 사용자 트래픽을 맞이하여 뒷단 서버로 라우팅, 캐싱, DMZ 역할을 겸하는 컴포넌트를 지칭할 터인데, 문제 상황에서는 사용자를 대신하여 서비스 트래픽을 요청하는 서버라는 맥락 같습니다.

어쩌다가 그랬는지 모르겠지만 NGINX 서버가 타사 서비스와 통합하는데, 이게 ALB로 제공되며 스티키 세션을 켜둔 상태라고 하면, 고객 IP를 NGINX가 감춰버리니 세션을 고정하는 부분에 애로사항이 발생할 것이다. 이런 상황 같네요.

어거지로 예를 생각해보면..

  1. 고정 세션이 필요한 Stateful 상품 조회 서비스가 있다.
  2. Throttling 목적으로 역 프록시 서버가 일단 트래픽을 받아주고 있다.

이럼 상품 서비스는 유저 세션이 역 프록시꺼 단 하나이므로 문제 상황이 터질 것 같습니다. 결국은 Stateful 서비스가 갖는 한계 아닐까 싶네요?

leejaeseung commented 7 months ago
클라이언트 A ->                                 -> 서버 A
                -> 역 프록시 -> 부하 분산기 ->
클라이언트 B ->                                 -> 서버 B

이런 flow 로 이해하면 되려나요? 위 flow 가 맞다면, 역 프록시 == 부하 분산기 라고 이해했던 부분이 잘못되었던 것 같네요. 부하 분산기는 역 프록시로 동작하는 것일 뿐, 같은 말은 아니다!

kth990303 commented 7 months ago

재승님, 재빈님의 코멘트 덕분에 저도 이해했습니다. 감사합니다!