[TIL] API Document 생성 방식
·
TIL
오늘 한일요구사항 파악API 문서 작성작업 내용백엔드 팀원들과 온라인으로 협업은 또 처음이라 어떻게 시작해야 할지 막막했지만 서로의 경험을 공유하고 요구사항을 파악하면서 API문서를 작성하다보니 어찌저찌 완성되어 가고 있다.유광열 튜터님에게 dto작성을 먼저하는게 처음이라 많이 힘들다고 했더니 원래 신규 개발자들이 도메인 기준으로 테이블을 먼저 작성하지만 이렇게 API 문서와 Request, ResponseDTO를 먼저 작성하면 중간에 빠트릴 수 있는 데이터들을 많이 발견하게되고 전자의 방식보다 훨씬 작업 효율이 좋다고 하셨다. 이번 기회에 API 문서를 작성하는 역량또한 2배 아니 3배이상 기를 수 있도록 하고있다.API문서는 Restful API의 작업 내용을 기록하는 문서인데 자원, 주소, 행위를 ..
[TIL] MSA 서비스 Resilience4j로 CircuitBreak설정, Fallback 실습
·
TIL
오늘 한 일Resilience4j를 사용한 CircuitBreak, Fallback 적용Fallback 메서드에서 레디스 캐시를 사용한 토큰 발급 실습Theater Server 개발 및 Movie Server와 통신 테스트MSA에서 엔티티 맵핑 방법 정리작업 내용1. Resilience4j를 사용한 CircuitBreak, Fallback 적용하기  + Redis 캐싱 [MSA - Resilienc4j] CircuitBreaker, fallback 메서드 개발하기Resilience4j란?MSA환경에서는 각각의 서비스를 호출하여 통신을 이루는 시스템이다.통신 과정에서 통신이 원활히 진행되지 않아 늦게 데이터를 반환받는 지연의 상태 또는 장애가 발생하여 통신이sunro1994.tistory.com2. MSA..
[MSA] MSA에서 JPA Entity 연관관계를 어떻게 풀어낼까?
·
Spring/Spring Cloud
MSA환경의 특성MSA환경에서는 독립된 도메인을 갖고 있으며 DB또한 분리해서 분리해서 사용하게 된다. 그리고 다른 서비스 서버의 DB는 직접적으로 조회하지 않고 요청 또는 이벤트 구독, 별도의 검색 서버를 분리하여 데이터의 무결성, 정합성등을 일치 시킨다.그렇다면 Entity간의 관계(1:1, 1:M, M:1, M:N)은 어떻게 풀어낼까?그 방법에 대해선 많은 방법이 있겠지만 내가 생각하는 방식은 두 가지이다. 이 설명을 하기위해 두 개의 서버를 간단히 설명하고자 한다. Movie와 Theater는 1:M의 관계이다. 영화관에서 한개의 영화는 여러개의 상영관이 있다는 것을 관계로 풀어낸 것이다. 생각해보니 Theater는 좌석이라는 뜻으로 의미가 부정확하지만 넘어가 주길 바란다ㅎㅎ 1. Entity를 ..
[MSA - Resilienc4j] CircuitBreaker, fallback 메서드 개발하기
·
Spring/Spring Cloud
Resilience4j란?MSA환경에서는 각각의 서비스를 호출하여 통신을 이루는 시스템이다.통신 과정에서 통신이 원활히 진행되지 않아 늦게 데이터를 반환받는 지연의 상태 또는 장애가 발생하여 통신이 실패하는 상황이 발생한다.이에 대한 대처를 하기 위해 이 Resilience4j를 사용하여 CircuitBreaker , fallover, retry 등의 설정을 통해 장애를 직접 대처할 수 있도록 예방한다.위 작업을 수행하기 위해 윈도우-슬라이드 알고리즘을 사용해서 작업 단위를 한칸씩 이동하며 상태를 체크하는 방식이다.Resilience4j는 언제 사용해야 할까?위에서 말했듯이 주로 다른 서버에 호출을 하여 원하는 데이터를 받아오거나 어떤 이벤트를 날릴때 사용한다. 내 애플리케이션의 서비스 레이어에 이벤트를..
[MSA - Spring Cloud] Spring Cloud Gateway 개발하기
·
Spring/Spring Cloud
이전에는 Eureka 서버가 직접 서비스에 주소를 알려주고 통신하는 방법을 사용했다. 이 과정에서 gateway를 추가해서 들어오는 요청의 전후처리와 인증/인가를 수행할 수 있도록 설정해 보려고 한다. API Gateway의 기능라우팅인증/인가로드 밸런싱모니터링 및 로깅요청 및 응답 변환 Spring Cloud Gateway 란?SpringCloud Neflix 패키지의 일부로 msa 환경에서 널리 사용된다. 클라우드의 요청을 적절한 서비스로 라우팅 시켜주고, 다양한 필터링 기능을 제공한다.Gateway 또한 EurekaClient로 취급하며 Server와 통신한다.내부에는 Globalfilter, GatewayFilter라는 추상체가 존재하고 해당 추상체를 통해 filterChain메서드를 실행시킬 수..
[MSA] 멀티 모듈에서 중복되는 코드를 서브모듈끼리 공유하는 방법
·
Spring/Spring Cloud
멀티 모듈을 모노 리포지터리로 구성하여 사용하던 중 FeignClient를 사용한 모듈 간 통신 중에 의문이 하나 들었다.모듈 간 통신하는 과정에서 전달하는 DTO는 형태가 동일한데 이걸 굳이 각 모듈이 필요할 때마다 모듈에 동일한 DTO를 만들어야 할까?그래서 루트에서 서브 모듈 간 데이터를 공유하기 위한 설정방법을 찾아보게 되었다. 여기서 엄청난 삽질을 하게 되었지만 자주 일어날만한 상황은 아닌지라 가장 마지막 트러블 해결 과정에서 적어보겠다.갑자기 생각난 공유 배우님의 빡친짤 나도 실패할때마다 딱 저 표정이였다. 프로젝트 구조 확인하기혼자 실습하는 mas-movie-reservation 프로젝트는 다음과 같은 구조를 지니고 있다.나는 여기서 movie 모듈과 user모듈을 공유할 것이고, 그 이유는..