목록전체 글 (110)
Skipalong's tistory
오늘은 캐시를 적용하면서 겪은 문제에 대한 트러블 슈팅을 정리해보겠다. 우선 서비스 메서드에 @Cacheable 메서드로 캐시설정을 해주고 요청을 보냈을 때 이런 에러가 났다. 이에 대한 해결법을 찾아보는데 "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" 을 dependency에 추가하면 해결이 된다고 하는데 이미 dependency 중 'org.springframework.boot:spring-boot-starter-web' 에 포함이 되어있는데 에러가 난 것이었다. 그래서 해결법을 찾던 중 직렬화과정중에 LocalDateTime 형식을 지원하지 않는것이 문제인 것 같았다. 그래서 해결법을 찾은것이 이렇게 캐싱하는 데이터중 LocalDateTim..
오늘은 Cache 를 코드에 적용한 것을 정리해보겠다. 우선 redis 설정은 email인증때 해두었으므로 생략하고 RedisCacheConfiguration 클래스의 defaultCacheConfig()를 이용해서 기본 세팅을 해주었다. 그리고 serializeValueWith메서드를 통해 value값의 직렬화설정을 해준다 key값은 String 으로 직렬화설정이 되어있고 value값은 Json을 바이트형태(?)로 직렬화해주는 설정이다. 그리고 형태의 Map 으로 캐싱대상에 따라 다른 설정을 해줄 수 있는데 인기 코스와 별점높은여행정보에 cacheName을 붙여주고 일단 30분의 만료시간을 주었다. 이렇게 설정을 해주고 SpringBootApplication에 @EnableCaching 어노테이션을 ..
이번 프로젝트 마무리 단계에서 마지막으로 자주 사용되는 데이터를 불러오는 작업을 효율적으로 하기 위해 Cache를 사용하기로 했다. 캐시를 적용한 내용을 정리하기 전에 우선 캐싱 전략에 대해 정리해보겠다. 우선 캐싱 전략에는 크게 로컬캐싱과 글로벌 캐싱이 있다. - 로컬 캐싱은 서버 내부 저장소에 캐시 데이터를 저장하는 것이다. 따라서, 속도는 빠르지만 서버 간의 데이터 공유가 안된다는 단점이 있다. 예를 들어, 사용자가 같은 리소스에 대한 요청을 반복해서 보내더라도 A 서버에서는 이전 데이터를, B 서버에서는 최신 데이터를 반환하여 각 캐시가 서로 다른 상태를 가질 수도 있다. 즉, 일관성 문제가 발생할 수 있다는 것이다. - 글로벌 캐싱은 서버 내부 저장소가 아닌 별도의 캐시 서버를 두어 각 서버에서..
오늘은 기술면접 대비로 간단하게 정리해본 Token들을 적어보겠다. JWT는 JsonWebToken으로 데이터를 안전하게 전송하고 인증을 확인하는 데 사용되며, JWT는 토큰 자체에 정보를 포함하므로, 별도의 서버 저장소에 상태를 저장할 필요가 없다. Access Token은 API에 접근하는 데 필요한 토큰이며, 주로 OAuth 2.0 및 OpenID Connect와 같은 인증 및 권한 부여 프로토콜에서 사용된다. 보안상의 이유로 짧은 만료시간을 가지고 있다. Refresh Token은 Access Token을 갱신하기 위한 특별한 토큰이다.주로 OAuth 2.0 인증 서버와 함께 사용되며, Access Token이 만료되었을 때 Refresh Token을 사용하여 새로운 Access Token을 얻을..
우리 팀에서 성능,부하테스트와 동시성 문제를 해결하기 위해 테스트 툴을 도입하기로 결정했는데 대표적인 JMeter와 nGrinder를 비교하여 기술적 의사결정을 하기로 했다. JMeter 도입 배경 : 동시성문제가 의심되는 좋아요 기능에대한 테스트를 위해 테스트 툴 필요성 느낌, 추후에 성능테스트를 위해서도 도입하면 좋을것같다는 의견 후보 : JMeter 와 nGrinder 중 하나를 선택하기로 결정 JMeter 다양한 플러그인을 지원해 테스트결과를 원하는 형식으로 확인 가능 활발한 커뮤니티 지원을 받고 있음, 문제 해결이나 새로운 기능에 대한 정보를 얻기 쉽다. nGrinder 네이버에서 만든 툴로 한글지원이 된다. 대시보드를 통해 사용자는 테스트 중인 애플리케이션의 성능을 실시간으로 모니터링하고, 테..
오늘은 본격적으로 테스트코드를 작성했다. 컨트롤러에서 api 에 대한 테스트코드를 작성한 후 이렇게 마지막에 .andDo(document("식별자", preprocessRequest(prettyPring()), preprocessResponse(prettyPrint()))); 이렇게 적어주면 이렇게 프로젝트내에 index.adoc 파일이 생기고 이 파일을 편집하면 오른쪽과같이 문서형식으로 api테스트사항을 문서화해준다. 그리고 html파일을 만들어서 이렇게 브라우저를 통해 볼 수도 있다. 테스트코드를 작성 하는과정이 지루하고 하드코딩적인부분이 있지만 이렇게 문서가 하나하나 추가되는 것을 보니 조금은 성취감이 생겨 동기부여가 되는 것 같다. 테스트코드를 내일까지 작성한 후 금요일부터 유저테스트에서 온 피드..