MSA 공부 (Microservice간 통신 1) - 19

진병욱·2023년 11월 21일

Spring Cloud MSA 공부

목록 보기
19/20
post-thumbnail

먼저 글 작성에 앞서 해당 시리즈는 Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의를 참고하여 필요한 내용들을 정리한 것임을 밝힙니다.

마이크로서비스로 백엔드 아키텍처를 구성하게 되면, A라는 서비스에서 B서비스의 API가 필요한 경우가 생긴다.

통신 방식

동기 방식 (http)

  • 요청이 들어오면 해당 작업을 처리하기 전까지 다른 작업 처리 불가

비동기 방식 (AMQP)

  • 요청이 들어오면 해당 요청을 처리하면서, 다른 요청이 들어오면 다른 요청 또한 같이 처리

RestTemplate

  • JAVA를 이용하여 다른 서비스를 호출하기 위해 사용되던 방식 (기존)
  • URI 및 http 메소드를 통한 호출

사용법

bean 등록

@Bean
public RestTemplate getRestTemplate() {
	return new RestTemplate();
}

RestTemplate 생성자 생성 및 사용

  • 사용하려는 해당 클래스 위에 @RequiredArgsConstructor 를 추가한 뒤에 private final로 생성자를 생성하면 bean을 편하게 주입 가능
private final RestTemplate restTemplate;

@GetMapping("/second-service/port")
public String getSecondServicePort(){
	String uri = env.getProperty("second-service.url");
    System.out.println("uri = " + uri):
    ResponseEntity<String> response = restTemplate.exchang(uri, HttpMethod.GET, null, String.class);
    return response.getBody();
}
  • 요청 보내기
    • uri, HttpMethod, 파라미터, 반환 타입
  • reponse.getBody()
    • body에 담긴 정보 가져오기

기존 방식으로 하게 되면, 요청 URI가 변경되면 일일히 변경을 해 주어야 하기 때문에 번잡하다.
따라서 이를 해결하기 위해 Eureka에 등록된 마이크로서비스의 이름으로 호출이 가능하다.

다음 포스트에서는 마이크로 서비스간의 통신을 위한 다른 방식인 feignclient를 알아보도록 하겠다.

profile
새로운 기술을 접하는 것에 망설임이 없고, 부족한 것이 있다면 항상 배우고자 하는 열정을 가지고 있습니다!

0개의 댓글