[TIL] MSA 서비스 Resilience4j로 CircuitBreak설정, Fallback 실습

2025. 2. 11. 19:18·TIL
728x90
반응형
SMALL

오늘 한 일

  • Resilience4j를 사용한 CircuitBreak, Fallback 적용
  • Fallback 메서드에서 레디스 캐시를 사용한 토큰 발급 실습
  • Theater Server 개발 및 Movie Server와 통신 테스트
  • MSA에서 엔티티 맵핑 방법 정리

작업 내용

1. Resilience4j를 사용한 CircuitBreak, Fallback 적용하기  + Redis 캐싱

 

[MSA - Resilienc4j] CircuitBreaker, fallback 메서드 개발하기

Resilience4j란?MSA환경에서는 각각의 서비스를 호출하여 통신을 이루는 시스템이다.통신 과정에서 통신이 원활히 진행되지 않아 늦게 데이터를 반환받는 지연의 상태 또는 장애가 발생하여 통신이

sunro1994.tistory.com

2. MSA에서 엔티티 맵핑 방법 정리

 

 

 

 

문제 해결

튜터님과 멘토링 내용

  • MSA환경에서 엔티티 맵핑 방법 정리(은지 튜터님)

MSA환경에서는 원칙적으로 각각의 독립된 도메인을 갖고 있어 다른 엔티티와의 관계를 단일 서버처럼 설정할 수 없다. 이 방법에 대해 어떻게 해야 할까 고민하던 내용을 은지 튜터님에게 여쭤보게 되었다. 이때 내가 생각했던 방법은 두 가지였다.

첫 번째는 각각의 서버에 연관된 엔티티를 만들고 DB에 함께 저장하는 방법이다. 이 방식은 도메인의 독립성을 위배하기에 좋지 않은 방법인 걸 알고 있었다. 만약 성능을 고려해서 트레이드 오프를 해야 한다면 사용할 수도 있지 않을까 생각했다. 이 방식의 장점은 통신을 하지 않아도 조회가 가능하다 는 점이지만 정합성을 위해 한 번씩 유저의 데이터가 변동된 이벤트가 없는지 확인하는 부분이 필요했다.

두 번째는 각각의 서버의 엔티티에 연관된 엔티티의 Id값만 저장하는 것이다. Id값만 있으면 관련된 데이터를 얼마든지 통신을 통해 조회할 수 있기에 이 방법이 더 적합하다고 생각했다. 장점은 언제든지 Id값을 통해 데이터를 조회하여 최신의 데이터를 가져올 수 있다는 장점이 있다. 하지만 그만큼 네트워크 비용이 증가하는 단점이 발생한다. 

 

이에 은지 튜터님도 후자가 더 적합하다고 했다. 전자를 사용하는 경우에는 엔티티를 가져오기보다는 엔티티와 통신했던 데이터의 내용을 json으로 저장하여 분석하는 용도로 사용하긴 하지만 엔티티의 관계 맵핑에 대해서는 후자가 더 올바른 방법이라고 하셨다. 이에 대한 내용은 예시 코드와 함께 포스팅하려고 한다.

  • MSA 협업 업부 분배 방식(은지 튜터님)

내일부터 진행될 프로젝트에서 걱정되는 부분은 각자의 업무를 어떻게 분배해야 하나? 였다. 여쭤보기 전 내 생각은 누군가가 먼저 MSA환경의 EurekaServer와 Gateway서버, 인프라 환경을 개발하고 그 뒤 각자 서비스 작업을 진행하는 것이 좋다고 생각했다. 은지 님 또한 이에 맞는 방식이라고 해주셨으며 이 과정에서 각자의 역할은 모놀리딕 서버와 크게 차이가 없음을 얘기해 주셨다.

  • 서킷 브레이커 활용 주안점(은지 튜터님)

서킷 브레이커를 어느 주안점을 두고 사용해야 할까 고민이 많이 들었다. 이 내용에 대해서는 위 포스팅에서 자세하게 적어두었다. 서킷 브레이커는 반복되는 작업에서 장애가 발생했을 때 사용하는 것이 포인트였다. 내부 서비스를 사용하거나 외부 서비스를 사용하거나 다양한 상황에서 서킷브레이커, 리트라이, 폴백 기능을 사용할 수 있는 것을 공부할 수 있었다.

  • 로깅의 활용 방법(석진희 튜터님)

나는 단순히 로깅은 시스템에서 발생하는 수치에 대한 분석정도라고 생각이 들었는데 로깅을 통한 모니터링으로 더 많은 것들을 할 수 있다고 알려주셨다. 로깅은 유저가 활동하는 행동하나하나의 데이터이기 때문에 사용자용 로그를 통해 어떠한 검색을 할 때 유실된 건 없는지, 어떤 검색어가 더 많이 검색되는지, 블랙 프라이데이와 같은 이벤트 때에는 트래픽이 얼마나 증가하는지 등을 확인할 수 있다.

또한 트래픽이 갑자기 증가하는 경우 크롤링인 것을 감지해서 크롤링방지를 할 수 있는 작업도 가능하다는 것을 알게 되었다.

개발도 중요하지만 데이터를 다루는 방식과 역량 또한 중요함을 새삼 느끼게 됐다.

 

  • 이력서 멘토링(석진희 튜터님)

처음 말씀해 주신 부분은 가독성이었다. 어떻게 하면 가독성이 좋아질지 고민해봐야 했다. 하지만 그것보다 더 중요한 건 이력서에 내가 뭘 잘하는지 적혀있지 않다는 것이었다. 강력한 어필을 할 수 있는 About me와 그와 연관된 포트폴리오 내용이 필요했다. 이 부분은 다시 작성해 보고 그 이후의 수정을 진행하자고 하셨다. 다시 한번 나를 돌아보는 시간이 필요한 것 같다.

내일 할 일

- 내가 프로젝트와 개발을 하면서 어떤 걸 잘하는지 확인해 보기

- 단체 프로젝트 시작... 협업 준비하기

728x90
반응형
SMALL

'TIL' 카테고리의 다른 글

[16조 문서] API Document, Table Document, ERD  (0) 2025.02.13
[TIL] API Document 생성 방식  (0) 2025.02.12
[TIL] MSA 각 서비스 모듈 자원 공유하기, Movie Service 개발  (0) 2025.02.08
[TIL] MSA Spring Cloud Eureka, Gateway 실습  (0) 2025.02.06
[TIL] JPA 프로젝트 완성 및 배포  (0) 2025.02.05
'TIL' 카테고리의 다른 글
  • [16조 문서] API Document, Table Document, ERD
  • [TIL] API Document 생성 방식
  • [TIL] MSA 각 서비스 모듈 자원 공유하기, Movie Service 개발
  • [TIL] MSA Spring Cloud Eureka, Gateway 실습
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (329)
      • 면접 준비 (45)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (5)
      • Kafka (5)
      • Spring (60)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (39)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      redis
      Spring
      리눅스마스터2급정리
      자바스크립트
      리눅스마스터2급
      JSP
      Spring Data Redis
      CSS
      자바 면접
      JS
      jsp기초
      spring redis
      레디스
      Til
      리눅스
      springsecurity
      java
      jsp request
      자바기초
      자바 알고리즘
      자바 반복문
      자바
      redis 채팅
      스프링프레임워크
      백준
      프로그래머스
      자바 면접질문
      HTML
      JavaScript
      Springframework
    • 최근 댓글

    • 최근 글

    • 250x250
    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [TIL] MSA 서비스 Resilience4j로 CircuitBreak설정, Fallback 실습
    상단으로

    티스토리툴바