강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

쵸잉님의 프로필 이미지
쵸잉

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

셀프 코드 리뷰

프론트엔드 msa 환경 api 주소 통합? 과 서버끼리 통신 방식에대해

작성

·

28

0

좋은강의 너무 감사드리며 많이 배워가는것같습니다.

강의를 들으면서 질문이 있어 드립니다.

  1. 포트 번호로 분리된 MSA 서버를 프론트엔드에서 쉽게 사용하도록 통합하는 방법이 궁금합니다.

     

    • 일단 단순히 생각했었을때 ngnix 로 리버스프록시 적용해서 /article 이면 localhost:9000 이런식으로 리버스프록시로 구성해도 될것같은데

    • 현업에서 nginx 를 이용해서 구성을 하는지 또다른 많이 쓰는 방법이 있는지 궁금합니다.

  1. CQRS 환경에서 서버끼리 http 통신

    • article-read 에서 cqrs 를 적용하여 각 서비스에서 필요한 정보를 http 통신으로 가져오는데 클라이언트와 서버가 아닌 서버와 서버끼리면 굳이 웹과관련된 정보가 전송되는 http가 비효율적(?)이지 않나? 라고 생각을했는데 데이터 통신을 할때 카프카로 필요한 데이터만 통신하는것은 어떤가요?

     

    • 실제 msa 환경에서 서버끼리 통신할때 어떤방식으로 사용하는지도 궁금합니다.

     

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 쵸잉님.

강의를 통해 많은 것을 배우고 계시다니 기쁘네요. 아래 질문에 대한 답변을 드리겠습니다:

  1. MSA 서버 통합 방법:

    • Nginx를 리버스 프록시로 사용하는 것은 일반적인 방법 중 하나입니다. /article 같은 경로로 요청을 받아 특정 포트로 전달하는 방식은 잘 활용되고 있습니다.
    • 현업에서는 Nginx 외에도 API Gateway를 사용하는 경우가 많습니다. Spring Cloud Gateway나 Kong 같은 API Gateway를 사용하면 다양한 라우팅, 인증, SSL 종료 등의 기능을 손쉽게 사용할 수 있습니다.
  2. 서버 간 통신 방식:

    • MSA 환경에서 서버 간 통신을 HTTP로 할 때의 비효율성에 대해 언급하셨습니다. 서버 간 통신을 비동기 메시징 시스템, 예를 들어 Apache Kafka 같은 것을 사용하여 필요한 데이터만 전달할 수 있습니다. Kafka의 경우, 대량의 데이터 전송과 비동기 처리가 용이해서 CQRS 패턴에서 많이 사용됩니다.
    • 실제 MSA 환경에서는 REST API, gRPC, 메시지 큐 시스템(Kafka, RabbitMQ 등) 등을 사용하여 서버 간의 통신을 처리합니다. 각 방법에는 장단점이 있으며, 시스템의 요구사항에 따라 적합한 방식을 선택하게 됩니다.

보다 자세한 내용을 원하시면, Spring Boot 및 Messaging 관련된 참조 문서를 확인하시는 것도 도움이 될 것입니다.

참고 링크:
- Spring Boot Messaging

추가적인 질문이 있으시면 언제든지 문의해 주세요. 감사합니다!

쵸잉님의 프로필 이미지
쵸잉

작성한 질문수

질문하기