개발자
안녕하세요. 신입 node 개발자로 일을 하게 되었는데, nestjs msa 아키텍처를 구성해야하여 질문드립니다. 우선 nestjs는 모놀로그 전용 프레임워크로 설계되어 msa 구조를 채택하려면 개별의 프로젝트를 두고 @nestjs/microservices 라이브러리를 사용하여 메시지 큐를 연동하는 형식으로 공부했는데, 게이트웨이 엔드포인트 관리부분에서 어떤식으로 구성해야할까요? 1. gateway에 모든 서비스가 연결되어 모든 비즈니스로직이 gateway를 거쳐가는 방식 - (gateway 서비스 메모리 부담이 크다고 생각합니다.) 2. 개별의 서비스끼리 연결되는 방식 - (Transport 관리비용이 커진다고 생각합니다.) 그 외 방법이 있다면 알려주시면 감사하겠습니다.
답변 1
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 09월 20일
NestJS를 사용한 MSA(Microservices Architecture) 구조를 설계할 때는 여러 방식이 있을 수 있지만, 일반적으로 아래 두 가지 방법을 고려해볼 수 있습니다. 1. API Gateway 패턴: 이 경우에는 모든 클라이언트 요청이 게이트웨이를 통과하게 되며, 게이트웨이가 각 서비스로 해당 요청을 라우팅합니다. 이 방식은 직관적이고 구현하기 쉬울 뿐만 아니라, 모든 요청 및 응답 로직을 한 곳에서 처리할 수 있기 때문에 관리하기도 용이합니다. 다만, 게이트웨이가 병목 지점(bottleneck)이 될 수 있다는 단점도 있습니다. 2. 직접 서비스간 통신: 하나의 서비스가 다른 서비스를 직접 호출하는 방식입니다. 이 방법은 각 서비스가 자신의 업무에만 집중하므로 응집력(cohesion)을 높일 수 있는 장점이 있습니다. 하지만 이 경우에는 서비스 간의 연결(composition)과 오케스트레이션(orchestration) 문제를 해결해야 합니다. 사용할 방법은 시나리오와 특정 요구 사항에 따라 결정해야 합니다. 일부 시스템에서는 게이트웨이 패턴이 더 적합할 수 있습니다. 다른 시스템에서는 서비스 간 직접 통신이 더 적합할 수 있습니다. NestJS의 경우, `@nestjs/microservices` 모듈을 이용하면 각 서비스 간에 메시지를 교환하는 것도 가능합니다. 이 방식은 Event-driven 아키텍처와도 잘 연결되므로, MSA 구조를 설계할 때 고려해볼 수 있는 옵션 중 하나입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!