본문 바로가기

분류 전체보기60

일급 컬렉션(First Class Collection)에 대해 약 두달전 프로젝트를 하며 아래와 같은 복잡한 정렬 코드를 구현한 적이 있었습니다. // 액션 아이템 모두 뽑아오기 List idList = doneRetrospects.stream().map(Retrospect::getId).toList(); List actionItemList = actionItemRepository.findAllByRetrospectIdIn(idList).stream() .sorted((a, b) -> { if(a.getIsPinned() && b.getIsPinned() && a.getActionItemStatus().equals(b.g.. 2024. 10. 9.
[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.
Beyond SW 캠프 17주차 회고 이번 주말에는 오랜만에 블로그에 포스팅을 했습니다!https://onfonf.tistory.com/85 [Spring / Redis] 이중화 서버에서의 웹 소켓 채팅 + SSE 알림 구현기잊기 전에 기록하자, Redis Pub/Sub을 활용한 STOMP 채팅 + SSE 알림 약 한달간의 사이디(Si-D) 프로젝트가 끝났습니다.   사이디 프로젝트에서는 STOMP를 활용한 1대1 채팅 기능이 있었는데, 채팅이 오onfonf.tistory.com  이번주는 PMI라는 템플릿으로 회고를 진행해보려고 합니다. 2024. 9. 9.
[Spring / Redis] 이중화 서버에서의 웹 소켓 채팅 + SSE 알림 구현기 잊기 전에 기록하자, Redis Pub/Sub을 활용한 STOMP 채팅 + SSE 알림 약 한달간의 사이디(Si-D) 프로젝트가 끝났습니다.   사이디 프로젝트에서는 STOMP를 활용한 1대1 채팅 기능이 있었는데, 채팅이 오면 Server Sent Event 기능으로 즉시 알림을 쏴줄 수 있게 했습니다.오늘은 그 기능을 구현하는 방법과 구현하며 레디스에 대해 알게된 사실을 정리해보려고 합니다.  이중화 서버에서의 웹 소켓 통신과 SSE 알림을 처리하는 방법  일단 냅다 아키텍처 사진을 보여드린 이유는...사이디의 운영 서버는  쿠버네티스에서 파드를 2개 띄워서 두 대의 서버가 요청을 처리해주는 구조로 동작하고 있다는 것을 알려드리기 위함입니다. 그런데 Web Socket과 SSE 모두 클라이언트에 데이.. 2024. 9. 7.