프로젝트 기록15 [MSA / Spring Cloud] Spring Cloud MSA 프로젝트에서 CORS 설정에 대해 (feat. 403 error) 부트캠프 프로젝트의 "동상이농"에서 Spring Cloud 프레임워크를 이용하여 MSA 프로젝트 세팅을 맡았는데요제가 MSA 세팅을 하며 CORS 설정에 대해 놓쳤던 부분과 새롭게 알게된 것에 대해 포스팅해보려고 합니다. 동상이농의 MSA 아키텍처동상이농 프로젝트는 아래와 같은 MSA 구조를 가지고 있습니다.8081 포트를 사용하고 있는 vue 프로젝트가 8080 포트를 사용하고 있는 API Gateway에게 요청을 보내면API Gateway는 서비스 디스커버리 역할을 하는 Eureka 서버를 통해 각 모듈의 IP, Port 정보를 알아내고 적절한 곳으로 라우팅하는 것이죠.(API gateway와 Eureka를 제외한 서버들은 유동포트를 쓰고 있기 때문에, Eureka를 통해 IP, Port를 알아내는 .. 2024. 10. 3. [Spring Cloud] MSA 구조에서 요청이 처리되지 않는 문제 (Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException) 동상이농 프론트 개발이 시작됐습니다. 제가 axios 인터셉터 세팅을 맡았는데요.인터셉터 코드를 추가하고, 제대로 동작하는지 보기 위해서 아래와 같이 서버에 간단한 요청을 보냈는데 응답이 오지 않았습니다.. API Gateway의 로그를 확인해보니 다음과 같은 에러메시지가 찍혀있었습니다. 2024-09-28T12:02:38.403+09:00 ERROR 80418 --- [api-gateway] [ctor-http-nio-2] a.w.r.e.AbstractErrorWebExceptionHandler : [d48b9c9b-243] 500 Server Error for HTTP GET "/member-service/member/healthcheck"io.netty.channel.ConnectTimeoutE.. 2024. 9. 28. [Spring / FCM] FCM 웹 푸시 알림 구현기 (서버 편) 부트캠프에서 최종 프로젝트 "동상이농"을 진행하며 FCM을 이용한 알림 기능을 맡게 되었습니다.해당 기능을 구현한 과정을 기록해보고자 합니다. 1. 비공개 키 생성프로젝트 설정 > 서비스 계정 > 자바로 들어간 후, 하단에 있는 "새 비공개 키 생성" 버튼을 눌러 비공개키를 다운 받아줍니다. 다운 받은 비공개 키는 resources로 옮겨줍니다!동상이농의 서버는 MSA 구조로 되어있는데, 멤버 모듈에서 FCM 알림을 처리할 예정이므로, 멤버 모듈의 resources에 넣어주었습니다. 2. 스프링 프로젝트에 firebase 의존성 추가build.gradle에 해당 의존성을 추가해줍니다dependencies { implementation 'com.google.firebase:firebase-admin:9... 2024. 9. 22. [Spring / Redis] 이중화 서버에서의 웹 소켓 채팅 + SSE 알림 구현기 잊기 전에 기록하자, Redis Pub/Sub을 활용한 STOMP 채팅 + SSE 알림 약 한달간의 사이디(Si-D) 프로젝트가 끝났습니다. 사이디 프로젝트에서는 STOMP를 활용한 1대1 채팅 기능이 있었는데, 채팅이 오면 Server Sent Event 기능으로 즉시 알림을 쏴줄 수 있게 했습니다.오늘은 그 기능을 구현하는 방법과 구현하며 레디스에 대해 알게된 사실을 정리해보려고 합니다. 이중화 서버에서의 웹 소켓 통신과 SSE 알림을 처리하는 방법 일단 냅다 아키텍처 사진을 보여드린 이유는...사이디의 운영 서버는 쿠버네티스에서 파드를 2개 띄워서 두 대의 서버가 요청을 처리해주는 구조로 동작하고 있다는 것을 알려드리기 위함입니다. 그런데 Web Socket과 SSE 모두 클라이언트에 데이.. 2024. 9. 7. [Spring / Error] HttpMediaTypeNotAcceptableException: No acceptable representation org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation게시판 프로젝트를 만들면서, 글을 조회했을 때 해당 아이디의 글이 없으면 적절한 에러코드와 에러메시지를 내려주는 부분의 코드를 작성하고 테스트하던 중, 위와 같은 예외가 발생하면서 에러 메시지가 제대로 내려오지 않았습니다. PostService.java 중 코드 일부 public Page findAllPostsNotDeleted(Pageable pageable) { return postRepository.findByDelYn(false, pageable).map(PostDto::new); } public PostDto findPostB.. 2024. 6. 22. [Spring / Redis] @RedisHash 어노테이션을 붙인 객체를 레디스에 저장했을때, 그 값을 확인하는 방법 redis-cli에서 내가 넣은 값을 확인하는 방법key는 @RedisHash 에 설정해놓은 value와 그 어노테이션이 붙은 클래스 중 @Id 어노테이션이 붙은 필드를 조합하여 value:Id로 설정됩니다.즉, 아래와 같은 클래스가 있고, 객체를 만들때 Id인 accessToken 필드 값을 "hello"로 설정해놨다면package com.mewsinsa.auth.jwt.redis.dto;import com.mewsinsa.member.domain.Member;import org.springframework.data.annotation.Id;import org.springframework.data.redis.core.RedisHash;@RedisHash(value = "accessToken", time.. 2024. 5. 18. 이전 1 2 3 다음