springboot6 [SpringBoot / Prometheus] Error scraping target: server returned HTTP status 403 문제 상황좋아요 수를 Redis 캐싱을 해서 성능 개선 측정을 하려고 Jmeter, Prometheus, Grafana를 SpringBoot와 연동하였다.확인을 해보았는데 Error scraping target: server returned HTTP status 403 라는 에러가 발생하고 있었다. 원인SpringBoot에 Prometheus가 연동이 되었는지 확인하려고 http://localhost:8080/actuator/prometheus 로 들어가서 Metric 데이터를 잘 수집하고 있는지 보았다. 해당 사진과 같이 보이는 것을 봐서는 springboot, prometheus가 연동이 안되어 메트릭을 수집하지 못하는 것으로 보인다.해결방법build.gradle에 Monitoring 관련된 의존성을.. 2025. 7. 16. [JUnit5] @ParameterizedTest, @MethodSource 기존에 작성했던 테스트 코드에서는 "게시글 생성"이라는 기능에 대해 테스트를 하기 위해 @Nested@DisplayName("게시글 생성")class createPostTest { @Test void createPost_성공() { ... } @Test void createPost_존재하지않는사용자() { ... } @Test void createPost_존재하지않는문제번호() { ... } @Test void createPost_존재하지않는카테고리() { ... }}이런 식으로 모든 예외 케이스에 대해서 하나씩 메소드를 만들어 검증하고 있다. 하지만 이처럼 진행하면 중복되는 부분도 많아지고.. 2025. 6. 19. [Spring] SSE(Server Sent Events) 우리 서비스에서 게시글에 댓글, 또는 좋아요가 눌리면 실시간으로 알람을 제공해주기 위해서 SSE를 사용하기로 하였다.SSE (Server Sent Events): HTTP 프로토콜을 기반으로 한 클라이언트와 서버 간의 단방향 통신 프로토콜이다. 단방향 지속 연결을 활용하여 서버가 클라이언트에게 이벤트와 데이터를 능동적으로 전송할 수 있게 한다.스트리밍 방식을 통해 구현Client가 서버의 이벤트를 구독하기 위한 요청을 보낸다.서버에서는 클라이언트와 매핑되는 SSE 객체를 만든다.서버에서 이벤트 스트림을 생서앟고, 클라이언트에게 비동기 적으로 메세지를 푸시한다.[특징]서버에서 클라이언트로 전송되는 데이터는 UTF-8로 인코딩되어야 함.반환되는 컨텐츠 유형은 text/event-streamSSE의 장점실시간.. 2025. 6. 10. @RequiredArgsContructor, @AllArgsContructor, @NoArgsContructor 관성적으로 쓰던 어노테이션 중에서 @RequiredArgsContructor, @AllArgsContructor, @NoArgsContructor 가 있었는데 개념을 파악하고자 글을 써본다..@RequiredArgsContructorfinal 필드나 @NonNull이 붙은 필드만 포함하는 생성자를 자동 생성한다.꼭 필요한 필드만 주입받는 생성자를 만들어준다.주로 의존성 주입 (DI) 목적으로 사용한다.@AllArgsContructor모든 필드를 매개변수로 갖는 전체 생성자를 자동 생성한다.DTO, 테스트용 객체 등에 사용하기 좋다.import lombok.RequiredArgsConstructor;import lombok.AllArgsConstructor;import lombok.ToString;@Req.. 2025. 6. 6. [Spring] accessToken 유효성 검사 로직 리프레쉬토큰을 이용한 액세스 토큰 재발급 로직이 postman 상에서는 되지만, 실제 프론트와 연동했을 시 제대로 작동하지 않는 문제가 발생하였다.처음에는 쿠키 관련 문제인 줄 알아서 토큰 발급 -> 쿠키 전달 로직을 보았다./ // RefreshToken 쿠키로 전달 Cookie refreshCookie = new Cookie("refresh_token", refreshToken); refreshCookie.setHttpOnly(true); refreshCookie.setMaxAge(7 * 24 * 60 * 60); refreshCookie.setPath("/"); response.ad.. 2025. 5. 21. Spring Boot Health Check의 동작 원리와 내부 구조 분석 Health Check?: 서버나 애플리케이션이 정상적으로 동작 중인지 외부에서 확인하기 위한 방법주로 로드 밸런서, 오토 스케일링, 모니터링 시스템(ex. AWS, K8s, ELB 등)에서 이 정보를 기반으로 인스턴스 상태를 판단한다. 보통 서비스의 고가용성, 고성능을 위한 부하 분산 등을 위해 서버의 다중화를 하고, 앞에서 어떤 서버로 요청을 보낼지 라우팅 역할을 하는 로드 밸런서를 위치시킨다. 이 로드 밸런서는 적절히 부하를 분산하여 A/B 서버 중 한 대에게 클라이언트의 요청을 보낸다. 하지만 아래와 같은 상태라면?이 두 케이스 모두 해당 서버 (B / C)로 요청을 보내면 안된다. 장애를 유발하거나, 부하를 오히려 크게 증가시켜 장애를 더 심각하게 만들 수 있다. 따라서 로드 밸런서에서는 각 서.. 2025. 5. 20. 이전 1 다음