작성
·
87
0
게이트웨이 서버 로그를 확인하던 중에 문득 이러한 생각이 들었습니다.
만약 이 프로젝트가 유저가 굉장히 많은 서비스라면 게이트웨이 자체에 부하가 생길 수 있을 것 같습니다.
요청의 수가 굉장히 많아 질 것 같은데, 이러한 경우에 부하분산을 어떻게 해야할까? 게이트웨이 하나에 모든 요청(각 서비스, 모니터링등등)이 많아지면 게이트웨이 서버에 문제가 생기지 않을까? 라는 생각이 들었습니다.
스케일업, 스케일아웃 이전에 부하분산할 수 있는 방법을 혹시 제시해주실 수 있으실까요? 현업에서는 어떻게 처리하는지 궁급합니다.
또 게이트웨이 서버를 하나 더 띄웠을때 시스템이 더 복잡해질 것 같은데, 어떤 방법들을 사용하고 어떤 점들이 고려되는지도 궁금합니다.
답변 3
0
안녕하세요, 이도원입니다.
게이트웨이에 대한 부하부분은 말씀하신 내용처럼 다양한 요청이 발생할 수 있습니다. 강의에서 소개한 APIGateway service는 기존 동기 서버에서 비동기 서버를 이용하여 기동되기 때문에, 사용자의 요청 처리에 조금은 더 잘 대응할 수 있습니다.
현업에서는 이렇다~ 고 정의해서 말씀드리기는 어려울 것 같습니다. 구현해야 하는 환경이나 제약조건이 다를것이기 때문에, 다양한 옵션과 고객의 요청에 맞춰 협의하고 구축해야 하는 부분이라 단정짓기는 어렵지만, 최근의 MSA화 하는 프로젝트에서는 거의 필수적으로 K8s + 컨테이너 가상화 환경으로 운영하고 있지 않나 싶습니다. K8s와 같이 운영 플랫폼을 제공하는 경우라면, Router 및 LB의 요청을 추가로 연동하여 처리할 수 있게끔 구성하고 있을거라 생각되고, 실제로 저희도 프로젝트에서 Istio를 연동하여 트래픽 통제, 서비스간 안정성 제공, 보안 등의 서비스를 이용하고 있습니다.
말씀하신 내용 중에 비용이 크게 들지 않으면서, 활용할 수 있는 방법이라면, 사용자의 요청을 분산할 수 있도록 Gateway를 구축하는 옵션이 있을 것 같습니다. 사용자의 요청에 대한 Endpoint를 분류하고, 모니터링과 관리자를 위한 부분뿐만 아니라, 사용자 요청에 대한 Endpoint역시 카테고리를 구분하고 요청 처리될 수 있도록 Gateway를 구성하는게 필요합니다. MSA 구축에 대한 목적이 서비스의 유연성이나 분할을 통해 가볍게 운영할 수 있는 환경을 구축하는데에 있다고 생각합니다. 서비스의 분할이 잘 되어 있다고 해도 Outer 아키텍처의 역할을 하고 있는 Gateway나 API 분리, Service mesh의 역할도 필요에 맞게 구성하는게 필요하게 됩니다. 서비스가 많은 경우에는 서비스에 맞는 Gateway를 분리하고, 거기에 필요한 부하분산 처리를 추가하고, 효율적인 기능 구현이 작동될 수 있도록 API에 대한 분리와 결합도 같이 고려해 보실 수 있을 것 같습니다.
정확한 환경이나 제약조건을 모르는 상태여서 드릴 수 있는 일반적인 답변이 되어 버린 것 같네요.
추가 질문 사항있으시면 다시 글 남겨 주세요.
감사합니다.
0
저도 이 부분이 궁금하네요 모든 요청이 하나의 gateway로 집중되는데, 거대한 서비스면 문제가 되지 않을까...
그럼 또 여러대의 gateway로 클러스터 구성을 해야 하는 것인지...
말씀하신대로 여러대의 gateway가 되면 시스템이 더 복잡해질 거 같기도 하구요.
강사님 의견이 궁금하네요!
0
안녕하세요, 인프런 AI 인턴입니다.
NoboDy J님께서 게이트웨이 서버의 부하 분산에 대해 걱정하시는 점이 이해됩니다. 많은 요청이 집중될 경우, 게이트웨이 서버 자체에서도 부하가 발생할 수 있으며 이를 해결하기 위해 부하 분산 기술이 필요합니다. 아래와 같은 관련 질문들과 답변들이 도움이 되실 것입니다.
요약: Spring Cloud Gateway와 Load Balancer의 역할과 상호작용에 대해 설명하고 있습니다. 게이트웨이 자체가 Load Balancer와 함께 어떻게 동작하는지에 대한 정보가 필요할 때 유용합니다.
요약: Eureka를 활용한 서버 부하 분산 방법과 실제 구성 시 어떻게 기능하는지에 대한 내용입니다. Load Balancer 설정이나 인스턴스 간의 부하 분산 문제를 해결하는 데 도움을 줄 수 있습니다.
요약: Kubernetes 환경에서 Spring Cloud Gateway를 접목시키는 방법과 Ingress와 Gateway의 역할 비교에 대한 설명입니다. Kubernetes 클러스터 상에서 게이트웨이의 부하 분산을 고려할 때 유용합니다.
요약: API Gateway와 Load Balancer의 관계 및 역할 분담에 대한 설명입니다. 복잡한 시스템에서 각각의 역할을 명확히 이해하기 위해 필요한 내용입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
음... 제 질문은 각각의 서비스(user, order, category, first, second)는 우선 논외로 두고, 제일 처음 요청이 닿는 게이트웨이 자체의 부하가 커졌을때의 대응방안이 궁금했습니다.
게이트웨이는 모니터링, 각 서비스 등의 요청이 굉장히 많을 것 같아서 질문드렸습니다.
일반 서버든 쿠버네티스든 스케일 아웃이나 스케일 업을 하면 되겠지만, 이외에 비용이 들지 않는 방법을 현업에서는 알 것 같아, 강사님께 질문드립니다.