인프런 커뮤니티 질문&답변
프론트엔드 msa 환경 api 주소 통합? 과 서버끼리 통신 방식에대해
작성
·
28
0
좋은강의 너무 감사드리며 많이 배워가는것같습니다.
강의를 들으면서 질문이 있어 드립니다.
포트 번호로 분리된 MSA 서버를 프론트엔드에서 쉽게 사용하도록 통합하는 방법이 궁금합니다.
일단 단순히 생각했었을때 ngnix 로 리버스프록시 적용해서 /article 이면 localhost:9000 이런식으로 리버스프록시로 구성해도 될것같은데
현업에서 nginx 를 이용해서 구성을 하는지 또다른 많이 쓰는 방법이 있는지 궁금합니다.
CQRS 환경에서 서버끼리 http 통신
article-read 에서 cqrs 를 적용하여 각 서비스에서 필요한 정보를 http 통신으로 가져오는데 클라이언트와 서버가 아닌 서버와 서버끼리면 굳이 웹과관련된 정보가 전송되는 http가 비효율적(?)이지 않나? 라고 생각을했는데 데이터 통신을 할때 카프카로 필요한 데이터만 통신하는것은 어떤가요?
실제 msa 환경에서 서버끼리 통신할때 어떤방식으로 사용하는지도 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 쵸잉님.
강의를 통해 많은 것을 배우고 계시다니 기쁘네요. 아래 질문에 대한 답변을 드리겠습니다:
MSA 서버 통합 방법:
- Nginx를 리버스 프록시로 사용하는 것은 일반적인 방법 중 하나입니다.
/article같은 경로로 요청을 받아 특정 포트로 전달하는 방식은 잘 활용되고 있습니다.
- 현업에서는 Nginx 외에도 API Gateway를 사용하는 경우가 많습니다. Spring Cloud Gateway나 Kong 같은 API Gateway를 사용하면 다양한 라우팅, 인증, SSL 종료 등의 기능을 손쉽게 사용할 수 있습니다.
- Nginx를 리버스 프록시로 사용하는 것은 일반적인 방법 중 하나입니다.
서버 간 통신 방식:
- MSA 환경에서 서버 간 통신을 HTTP로 할 때의 비효율성에 대해 언급하셨습니다. 서버 간 통신을 비동기 메시징 시스템, 예를 들어 Apache Kafka 같은 것을 사용하여 필요한 데이터만 전달할 수 있습니다. Kafka의 경우, 대량의 데이터 전송과 비동기 처리가 용이해서 CQRS 패턴에서 많이 사용됩니다.
- 실제 MSA 환경에서는 REST API, gRPC, 메시지 큐 시스템(Kafka, RabbitMQ 등) 등을 사용하여 서버 간의 통신을 처리합니다. 각 방법에는 장단점이 있으며, 시스템의 요구사항에 따라 적합한 방식을 선택하게 됩니다.
- MSA 환경에서 서버 간 통신을 HTTP로 할 때의 비효율성에 대해 언급하셨습니다. 서버 간 통신을 비동기 메시징 시스템, 예를 들어 Apache Kafka 같은 것을 사용하여 필요한 데이터만 전달할 수 있습니다. Kafka의 경우, 대량의 데이터 전송과 비동기 처리가 용이해서 CQRS 패턴에서 많이 사용됩니다.
보다 자세한 내용을 원하시면, Spring Boot 및 Messaging 관련된 참조 문서를 확인하시는 것도 도움이 될 것입니다.
참고 링크:
- Spring Boot Messaging
추가적인 질문이 있으시면 언제든지 문의해 주세요. 감사합니다!





