오늘 한 일
- Resilience4j를 사용한 CircuitBreak, Fallback 적용
- Fallback 메서드에서 레디스 캐시를 사용한 토큰 발급 실습
- Theater Server 개발 및 Movie Server와 통신 테스트
- MSA에서 엔티티 맵핑 방법 정리
작업 내용
1. Resilience4j를 사용한 CircuitBreak, Fallback 적용하기 + Redis 캐싱
[MSA - Resilienc4j] CircuitBreaker, fallback 메서드 개발하기
Resilience4j란?MSA환경에서는 각각의 서비스를 호출하여 통신을 이루는 시스템이다.통신 과정에서 통신이 원활히 진행되지 않아 늦게 데이터를 반환받는 지연의 상태 또는 장애가 발생하여 통신이
sunro1994.tistory.com
문제 해결
튜터님과 멘토링 내용
- MSA환경에서 엔티티 맵핑 방법 정리(은지 튜터님)
MSA환경에서는 원칙적으로 각각의 독립된 도메인을 갖고 있어 다른 엔티티와의 관계를 단일 서버처럼 설정할 수 없다. 이 방법에 대해 어떻게 해야 할까 고민하던 내용을 은지 튜터님에게 여쭤보게 되었다. 이때 내가 생각했던 방법은 두 가지였다.
첫 번째는 각각의 서버에 연관된 엔티티를 만들고 DB에 함께 저장하는 방법이다. 이 방식은 도메인의 독립성을 위배하기에 좋지 않은 방법인 걸 알고 있었다. 만약 성능을 고려해서 트레이드 오프를 해야 한다면 사용할 수도 있지 않을까 생각했다. 이 방식의 장점은 통신을 하지 않아도 조회가 가능하다 는 점이지만 정합성을 위해 한 번씩 유저의 데이터가 변동된 이벤트가 없는지 확인하는 부분이 필요했다.
두 번째는 각각의 서버의 엔티티에 연관된 엔티티의 Id값만 저장하는 것이다. Id값만 있으면 관련된 데이터를 얼마든지 통신을 통해 조회할 수 있기에 이 방법이 더 적합하다고 생각했다. 장점은 언제든지 Id값을 통해 데이터를 조회하여 최신의 데이터를 가져올 수 있다는 장점이 있다. 하지만 그만큼 네트워크 비용이 증가하는 단점이 발생한다.
이에 은지 튜터님도 후자가 더 적합하다고 했다. 전자를 사용하는 경우에는 엔티티를 가져오기보다는 엔티티와 통신했던 데이터의 내용을 json으로 저장하여 분석하는 용도로 사용하긴 하지만 엔티티의 관계 맵핑에 대해서는 후자가 더 올바른 방법이라고 하셨다. 이에 대한 내용은 예시 코드와 함께 포스팅하려고 한다.
- MSA 협업 업부 분배 방식(은지 튜터님)
내일부터 진행될 프로젝트에서 걱정되는 부분은 각자의 업무를 어떻게 분배해야 하나? 였다. 여쭤보기 전 내 생각은 누군가가 먼저 MSA환경의 EurekaServer와 Gateway서버, 인프라 환경을 개발하고 그 뒤 각자 서비스 작업을 진행하는 것이 좋다고 생각했다. 은지 님 또한 이에 맞는 방식이라고 해주셨으며 이 과정에서 각자의 역할은 모놀리딕 서버와 크게 차이가 없음을 얘기해 주셨다.
- 서킷 브레이커 활용 주안점(은지 튜터님)
서킷 브레이커를 어느 주안점을 두고 사용해야 할까 고민이 많이 들었다. 이 내용에 대해서는 위 포스팅에서 자세하게 적어두었다. 서킷 브레이커는 반복되는 작업에서 장애가 발생했을 때 사용하는 것이 포인트였다. 내부 서비스를 사용하거나 외부 서비스를 사용하거나 다양한 상황에서 서킷브레이커, 리트라이, 폴백 기능을 사용할 수 있는 것을 공부할 수 있었다.
- 로깅의 활용 방법(석진희 튜터님)
나는 단순히 로깅은 시스템에서 발생하는 수치에 대한 분석정도라고 생각이 들었는데 로깅을 통한 모니터링으로 더 많은 것들을 할 수 있다고 알려주셨다. 로깅은 유저가 활동하는 행동하나하나의 데이터이기 때문에 사용자용 로그를 통해 어떠한 검색을 할 때 유실된 건 없는지, 어떤 검색어가 더 많이 검색되는지, 블랙 프라이데이와 같은 이벤트 때에는 트래픽이 얼마나 증가하는지 등을 확인할 수 있다.
또한 트래픽이 갑자기 증가하는 경우 크롤링인 것을 감지해서 크롤링방지를 할 수 있는 작업도 가능하다는 것을 알게 되었다.
개발도 중요하지만 데이터를 다루는 방식과 역량 또한 중요함을 새삼 느끼게 됐다.
- 이력서 멘토링(석진희 튜터님)
처음 말씀해 주신 부분은 가독성이었다. 어떻게 하면 가독성이 좋아질지 고민해봐야 했다. 하지만 그것보다 더 중요한 건 이력서에 내가 뭘 잘하는지 적혀있지 않다는 것이었다. 강력한 어필을 할 수 있는 About me와 그와 연관된 포트폴리오 내용이 필요했다. 이 부분은 다시 작성해 보고 그 이후의 수정을 진행하자고 하셨다. 다시 한번 나를 돌아보는 시간이 필요한 것 같다.
내일 할 일
- 내가 프로젝트와 개발을 하면서 어떤 걸 잘하는지 확인해 보기
- 단체 프로젝트 시작... 협업 준비하기
'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 |