[MSA] 서비스 게이트웨이는 단일 서버여야 하는가?
보통 서비스 게이트웨이(api 게이트웨이)를 이야기할 때 단일 서버로 많이 가정하는 것 같다. 그런 곳도 많을 것 같고.. 하지만 단일 서버로 구성하면 SPOF(Single Point Of Failure)이 되기 때문에 대규모 트래픽 처리에 문제가 있지 않을까? 그래서 오랜만에 다시 책을 읽었더니 아래와 같은 내용을 발견했다.
스프링 마이크로서비스 코딩 공작소에서 내용 펌(p.203)
잠깐, 서비스 케이트웨이가 단일 장애 지점이나 잠재적 병목 지점은 아닐까?
4장 초반부에 유레카를 소개할 때 집중화된 로드 밸런서가 단일 장애 지점과 서비스의 병목점이 될 가능성이 있다고
이야기했다. 서비스 게이트웨이를 올바르게 구현하지 않는다면 동일한 위험 부담이 있다. 서비스 게이트웨이를 구현할
때는 다음을 염두에 두기 바란다.
로드 밸런서는 각 서비스 그룹 앞에 있을 때 여전히 유용하다. 이때 여러 서비스 게이트웨이 인스턴스 앞에 로드 밸런
서를 두는 것은 적절한 설계이며, 서비스 게이트웨이를 확장할 수 있다. 모든 서비스 인스턴스 앞에 로드 밸런서를 두
는 것은 병목점(chokepoint)이 될 수 있어 좋은 생각은 아니다.
작성하는 서비스 게이트웨이 코드를 무상태(stateless)로 유지하자. 서비스 게이트웨이의 정보를 메모리에 저장하지
밀자. 주의하지 않으면 게이트웨이의 확장성을 제한하고 모든 서비스 게이트웨이 인스턴스에 데이터가 복제되도록 해
야한다.
작성하는 서비스 게이트웨이 코드를 가법게 유지하자. 서비스 게이트웨이는 서비스 호출에 대한 '병목점'이다. 여러 데
이터베이스 호출이 포함된 복잡한 코드는 서비스 게이트웨이에서 추적하기 힘든 성능 문제의 원인이 된다.
댓글 영역