[ T I L ] 2024.12.02

오세창·2024년 12월 2일

TIL

목록 보기
18/18

개요

이번 MSA 아키텍처 기반 과제를 수행함에 앞서, 단순히 기능 구현뿐 아니라 각 기능이 어떻게 상호작용하며 동작하는지를 명확히 이해하는 것이 중요하다고 생각했다.

이러한 이해의 차이는 과제 수행에서 얻어가는 것에 대해 분명 큰 영향을 미칠 것이다.

이에 과제 수행에 앞서 Spring Cloud 의 전반적인 흐름을 이해하는 시간을 가졌다.

알게된 점

// ==== 예시코드 === //
@FeignClient(name = "product-service")
public interface ProductClient {

    @GetMapping("/product/{id}")
    String getProduct(@PathVariable("id") String id);
}

위 코드를 예시로 들어 Spring cloud 의 흐름을 짚어보자면 다음과 같다.

  1. Feignporduct-service 를 호출.

  2. Eureka 서버가 porduct-service 인스턴스 목록을 반환함
    ex. product-service 의 8080, 8081, 8082 등의 인스턴스들을 나열함

  3. Ribbon 이 로드밸런싱 알고리즘을 통해 인스턴스 목록 중 하나를 선택.

  4. Fegin 이 선택된 인스턴스의 /product/{id} 에 대해 HTTP 요청을 함

  5. 해당 인스턴스는 응답을 반환

  6. Feign 이 클라이언트에게 결과 반환

전반적으로 이러한 상호작용을 하며 동작하는 것으로 이해하였다.

막연히 어렵기만 했던 MSA 아키텍쳐였는데, 하나하나 이해한 후 전체적으로 바라보니, 비로소 감을 잡을 수 있게 되었다.

이제 이러한 기반 위에서 과제를 수행한다면 분명 좋은 결과가 있을 거라는 생각과 기대감이 든다.

0개의 댓글