• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

각 애플리케이션에 랜덤포트를 부여하는 이유

22.10.27 22:46 작성 조회수 690

1

안녕하세요!!! 랜덤포트를 부여하는 이점에 대해서 아직도 이해가 잘 안갑니다.ㅜㅜ 마이크로서비스 애플리케이션의 확장성과 랜덤포트를 부여하는게 얼마나 깊은 관계가있나요?? 저는 정해두고 쓰는게 더 편하다고 생각했거든요. 그리고 실무에서도 정말 이렇게 랜덤포트로 사용하나요?

답변 1

답변을 작성해보세요.

1

안녕하세요, 이도원입니다.

랜덤포트의 사용 여부는 마이크로서비스가 독립적으로 사용되는지 LB(로드밸랜서)로 구성되어 사용되는지, 사용시 문제가 되었을 때 복귀해야 하는 구조는 어떻게 되어 있는지 등에 따라 결정하실 수 있습니다. 강의에서 설명 드렸던 랜덤포트(PORT: 0 설저)에 대한 설정은 LB사용을 예시로 보여드리기 위함이었고, 고정으로 설정한 상탱에서 진행하셔도 문제는 없습니다. 다만, Service Discovery에서 등록된 서비스들이 포트 간의 충돌이 발생할 경우 해당 서비스를 우회할 수 있는 포트를 지정하여 새롭게 실행하지 않고, 충돌이 발생한 서비스는 중지 시켜 버리게 됩니다. 포트를 잘 구분하여 서비스들을 배포한다고 했을때는 문제가 없을 수도 있습니다.

그런데, 서비스에서 LB를 사용하도록 되어 있다면, LB에 연결되는 다수의 동일 서비스들은 같은 형태(코드)로 작성되어진 애플리케이션인데, 매번 실행할 때마다 포트를 변경하는 작업을 하기에는 번거로울 수 있습니다. 이때 랜덤포트로 실행하며 임의의 사용가능한 포트가 할당 되고, Service Discovery에 등록될 때는 서비스명으로 사용되어지기 때문에, 여러 개의 서비스가 연결되어 있어도 하나의 서비스명이 요청을 받아 해당 서비스들에 요청처리를 배분해 줄 수 있게 됩니다.

실제로 MSA 형태로 구성된 애플리케이션들은 컨테이너 가상화 형태로 운영되는 경우가 대부분인데, Docker나 Kubernetes에서 컨테이너를 기동할 때는 외부와 연결되기 위한 포트를 랜덤포트로 설정(범위는 지정할 수 있습니다)되어 사용됩니다. 컨테이너 자체는 독립적인 IP를 가지고 있는 VM이라고 보시면 되고, 이 안에서 사용되는 포트는 어떠한 포트로 지정되어 있더라도 상관없이, 컨테이너 외부하고의 연결만 잘 되어 서비스 되는 구조라고 이해하시면 좋을 것 같습니다.

추가 질문 사항 있으시면 글 남겨 주세요.

감사합니다.

ㅜㅜ답변 정성스럽게 남겨주셔서 정말 감동입니다ㅠㅠ감사합니다!!이해도 너무 잘되었습니다 ㅎㅎ

채널톡 아이콘