[MSA] FitTrip에서 MSA 설계 With Spring Cloud
·
프로젝트/FitTrip
📄 Describe사전 설명우리 FitTrip은 프로젝트 초반 제가 진행한 MSA 세미나를 통해 MSA에 관해 알아보았고,해당 내용을 프로젝트에 적용했습니다. MSA FitTrip의 MSA 적용API GatewayService DiscoveryContainer ManagementBacking ServicesDB(Redis, MySQL, MariaDB, MongoDB)Kafka CI/CD AutomationTelemetryGrafanaLokiConfig Store와 관련하여 Spring Cloud Config Server를 이용하고 싶었습니다.하지만, Github Actions 사용시 발생하는 보안적인 문제가 있었습니다.-> Config Server를 외부에서 접속하는 위험우리 도메인과 Config Se..
[트러블슈팅] SSE 적용시 게이트웨이와 유저 서비스 연동간 발생 오류 해결
·
프로젝트/FitTrip
🐞 버그 설명 상황 알림 서버에서 SSE를 사용함에 따라 NGINX에 다음과 같은 설정을 추가로 작업했습니다.  추가된 NGINX 설정 location /api/notice { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' $allowed_origin always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE'; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization'; ..
[트러블슈팅] API Gateway OpenFeign 사용 오류
·
프로젝트/FitTrip
🐞 버그 설명상황 API Gateway는 다른 서비스들과 마찬가지로 서비스 디스커버리에 Eureka Client로 등록되어있습니다.따라서, 사용자의 로그아웃 여부를 처리하는 과정에 있어 다른 기타 서비스와 마찬가지로 OpenFeign을 사용하려고 하였지만,해당 부분에서 버그가 발생하였습니다.발생한 버그block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-nio-3 위의 버그는 아래 코드의 doNotLogout에서 발생했습니다.doNotLogout은 OpenFeign을 활용해 유저 서비스에 유저의 로그아웃 여부를 확인하는 메서드입니다. doNotLogout을 활용하는 GatewayFilter ..
요즘 블로그 포스팅이 뜸한 이유
·
개발 기록
학교에서 캡스톤 프로젝트를 진행하며 코드 구현을 하다보니 블로그 포스팅이 늦어지고 있다. 프로젝트를 진행하며 트러블 슈팅/적용해본 서비스 구조/새롭게 얻는 정보가 여러가지 있지만 포스팅을 못하고 있다. 간단하게 나열하자면 OpenFeign과 Spring Cloud Gateway간의 순환 참조 오류 OpenFeign과 Spring Cloud Gateway간의 순환 참조 오류 🐞 버그 설명 OpenFeign과 Spring Cloud Gateway를 함께 사용했을 때 Bean 순환 참조가 오류가 발생했습니다. 로그를 보니 FeignClient와 Gateway Router 부분에서 해당 문제가 발생한 것 같습니다.(로그 참고) 처 hdbstn3055.tistory.com 서비스가 여러 레포지터리에 의존 방법과 ..
OpenFeign과 Spring Cloud Gateway간의 순환 참조 오류
·
개발 기록
🐞 버그 설명 OpenFeign과 Spring Cloud Gateway를 함께 사용했을 때 Bean 순환 참조가 오류가 발생했습니다. 로그를 보니 FeignClient와 Gateway Router 부분에서 해당 문제가 발생한 것 같습니다.(로그 참고) 처음엔 그냥 의존성 주입 코드에 문제가 있는 줄 알았으나 코드상의 문제는 없었습니다. Gateway가 아닌 일반 서비스에서는 OpenFeign 사용에 문제가 없었으며 관련 설정에도 문제가 없었습니다. 또한, OpenFeign과 설정에서 같은 user-service 키워드를 사용하기에 해당 부분을 수정하였음에도 해결되지 않았습니다. AuthFeignClient 인터페이스 @FeignClient(name = "auth-service") @Qualifier("A..
[Spring Cloud] Spring에서 MSA를 구축해보자
·
Spring/Cloud
우리는 Spring에서 지원해주는 프레임워크 중 하나인 Spring Cloud를 활용하여 이전에 살펴본 MSA를 구현해볼 수 있다. Spring Cloud Netflix스프링 클라우드 넷플릭스는 Spring Boot Application에 관한 통합 환경 구성을 지원하는 Netflix의 OSS 서비스이다.OSS: 오픈 소스 소프트웨어 Netflix OSS와 Spring Cloud NetflixNetflix OSS에는 다양한 서비스들이 존재한다.각각에 관해 간략히 알아보자. Eureka : Discovery Server각각의 서비스 인스턴스들이 동적으로 확장, 축소 되더라도 인스턴스의 상태를 하나의 서비스로 관리할 수 있는 서비스Ribbon: Client Side Load Balancer부하 분산을 위한 ..