작성
·
26
·
수정됨
0
안녕하세요. 강의 잘 보고 있습니다.
Gateway의 uri를 lb://MY_FIRST_SERVICE
로 수정했을 때
500 Internal Server Error가 났습니다.
처음에 Spring boot 버전에서 문제인가 싶어서 Spring boot 버전을 3.3.5 -> 3.2.0 으로 수정도 해보고 load-balancer도 추가해보고 했습니다.
결과적으로 lb://MY_FIRST_SERVICE
의 _(언더바)를 -하이픈으로 수정하니 정상 작동하는 것을 알았습니다.
그런데 여기서 이유를 GPT에게 물어본 결과
라는 답변을 받았습니다.
이러한 결과가 사실이 맞는지 궁금합니다.
구글링 해봤을 때 관련한 자료는 없어서 여쭤봅니다
답변 2
0
안녕하세요, 이도원입니다.
Eureka에서는 기본적으로 Eureka's default naming convention에 의해 서비스 이름 정규화(기본적으로 서비스 이름을 대문자로 변환) 과정을 거칩니다. 가장 좋은 방법은 말씀하신 내용처럼 underscores를 사용하지 않고, 단순하게 대문자로만 되어 있는 형태의 Naming을 부여하시는게 좋은데, 부득이하게 소문자를 사용해야 한다면, 변환되었을 때도, 혼동이 있지 않는 이름의 사용과 특수 기호 사용에도 주의가 필요할 것 같습니다. 추가로 apigateway에서 Filter를 이용하여 이름 자체를 처리하는 방법이나, Eureka에서 EurekaInstanceConfigBean을 등록하여 사용하는 방법도 가능할 것 같습니다. 그래도 제일 안전하고 편안 방법은 대문자로 이름 작성 혹은, underscores 대신 hypen으로 구분을 하여 이름을 작성하시면 좋을 것 같습니다.
추가 질문 사항 있으시면 다시 글 남겨 주세요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. bbgiloo98님, 질문해주신 내용에 대해 답변드리겠습니다.
Spring Cloud와 관련된 마이크로서비스 아키텍처에서 서비스 이름을 정할 때, 언더스코어(“_”) 대신 하이픈(“-”)을 사용하는 것이 좋습니다. 이는 주로 DNS 및 URI 표준에서 허용되는 형식 때문입니다.
Spring Cloud Gateway나 Eureka에서는 서비스의 이름이 URI로 변환되면서 표준 DNS 스타일로 변환됩니다. 이 과정에서 서비스 이름에 언더스코어가 포함될 경우, 변환이 제대로 이루어지지 않아 Gateway가 해당 서비스를 찾지 못하고 Internal Server Error(500)를 반환할 수 있습니다.
따라서 권장되는 방식은 spring.application.name
에서 서비스 이름을 정할 때, 알파벳, 숫자, 하이픈(-), 마침표(.) 만을 사용하셔야 합니다. 이러한 이유로, lb://MY-FIRST-SERVICE
와 같이 하이픈을 사용한 경우 정상적으로 동작하는 것을 확인하신 것입니다.
이 부분과 관련된 참조 자료는 아래 두 링크에서 더 확인하실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.