프로젝트 진행에 앞서 굉장히 고민이 많이 되는 부분이었습니다. 프로젝트에서 캐시 데이터를 언제 사용하면 좋을지와 캐시 저장소와 실제 DB 저장소 간의 일관성을 어떤 시점에 어떤 방식으로 맞춰줄 수 있는지에 대한 고민을 정리하게 위해 해당 글을 작성하게 되었습니다. 일반
스프링 시큐리티와 JPA를 사용하여 로그인 관리를 하고 있는데 권한을 확인하는 단계에서 에러가 발생하였습니다.<span style="color: 우선 시큐리티 설정에서 권한에 대한 설정은 아래와 같습니다./role url을 요청받았을 때 시큐리티는 해당 사용자의
😃 Oauth을 이용하여 회원가입,로그인 기능 구현 해당 프로젝트에서 네이버 Oauth를 사용하여 로그인 기능을 구현하기로 하였습니다. 네이버 로그인 API 명세를 확인하고 싶다면 아래를 클릭하시면 됩니다. > 네이버 로그인 API 명세 네이버 Oauth 흐름에
@SpringBootTest 환경에서 테스트를 진행하다 아래와 같은 에러가 발생하였습니다.원래의 어플리케이션 환경에서는 VM Option에다 jasypt.encryptor.password에 대한 값을 설정해줬기 때문에 정상적으로 동작하였지만 테스트 환경에서는 해당 변수
😃 통합 테스트 진행 해당 프로젝트에서는 테스트 단위를 넓게 잡는 방식으로 통합 테스트를 진행하였습니다. MockMvc를 이용하여 컨트롤러에 HTTP 요청을 보낸 후 응답을 받는 형식으로 테스트를 진행하였고 필요한 경우에 @MockBean을 이용하여 Mock 객체
스프링 스케줄러는 Java에서 제공하는 스프링 프레임워크의 일부로, 애플리케이션 내에서 정기적으로 실행되어야 하는 작업을 스케줄링하는데 사용됩니다.스프링 스케줄러는 주로 백그라운드에서 반복적으로 수행해야 하는 작업을 위해 사용되며, 정해진 시간이나 주기에 따라 작업을
Spring Cache를 적용하던 중Error occurs java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.evertrip.post.dto.response.Po
이번 포스팅에서는 실제로 프로젝트에 Spring Cache를 적용해보고 성능 테스트까지 진행하려고 합니다.Spring Cache에 대한 전반적인 지식이 필요하신 분은 아래 링크를 참고해주시면 좋을 것 같습니다.Spring Cache에 대해먼저 Spring Cache를
표시 제한 시간 = visibility timeout > 참고 자료 https://velog.io/@dev_tmb/SQS%EB%A5%BC-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8%EC%97%90%EC%84%9C-%EC%82
이번 포스팅에서는 Spring Boot Application에서 SQS로 메시지를 보내는 시간을 가져보도록 하겠습니다.사실 진행중인 Evertrip 프로젝트는 SQS에 메시지를 Listen 하는 목적으로만 사용할 계획이기 때문에 SQS로 메시지를 보낼 필요는 없지만 그
이번 포스팅에서는 SQS 대기열에 저장된 메시지를 받아오는 작업을 정리해보겠습니다.Spring Cloud Aws 공식문서를 보면서 정리하였으니 자세한 내용은 아래 공식 문서에서 확인하세요.Spring Cloud AWS 공식 문서(https://docs.awsp
이번 포스팅에서는 `Amazon SQS`에 저장된 메시지들을 `Spring Batch`를 이용하여 배치 처리 작업을 해보는 시간을 가져보도록 하겠습니다.
Amazon SQS에서 메시지를 읽어올 때 다음과 같은 에러가 발생하였습니다.<span style="color: <span style="color: 해당 에러는 SQS에서 메시지를 읽어오는 과정에서 발생하였습니다. 해당 에러를 구글링해도 나오지 않았고 원인을
이번 포스팅에서는 AWS Lambda를 사용하여 DLQ(Dead Letter Queue)에 반환되었던 메시지들을 다시 Amazon SQS에 전달하는 작업을 진행해보도록 하겠습니다.현재 진행중인 Evertrip 프로젝트에서는 게시글에 대한 사용자의 이벤트를 Amazon
게시글 조회 로직에서 스프링 캐시(Spring Cache)를 사용하였는데 제대로 동작하지 않았습니다.기존 코드는 @Cacheable을 사용하여 Redis 저장소에 해당 key 값이 존재할 시 value에 저장된 값을 그대로 반환하고 key 값이 존재하지 않을 시에 @C
이번 포스팅에서는 Spring JDBC를 사용하여 Batch Insert 적용해보도록 하겠습니다. 🙌 문제점 Evertrip 프로젝트를 진행하는 중 게시글 생성과 관련하여 게시글의 본문에 저장된 파일 ID의 목록을 받아서 게시글-파일 중간 테이블에 INSERT 해
이번 포스팅에서는 Redisson을 사용하여 분산락을 구현해보는 시간을 가지도록 하겠습니다.동일한 자원에 대해 여러 스레드가 동시에 접근하면서 발생하는 동시성 문제를 해결하는 방법 중 하나가 바로 분산락입니다.즉, 경쟁 상황에서 하나의 공유자원에 접근할 때, 데이터의
이번 포스팅에서는 서블릿 필터를 이용한 권한 검사를 구현해보려고 합니다.현재 진행중인 프로젝트에서 게시글 작성자 본인만 볼 수 있는 게시글 이벤트 통계 페이지가 있습니다. 해당 페이지에 접근할 때 해당 사용자가 게시글 작성자인지 확인한 후 아닐 시 요청을 거절해야하는데
이번 포스팅에서는 Jenkins와 Docker를 사용하여 Evertrip 프로젝트를 CI/CD 배포하는 시간을 가져보도록 하겠습니다.Github Actions를 이용한 CI/CD는 아래 포스팅을 참고하시면 좋을 것 같습니다. \[Server] Github Actions