![[JPA] 인스타그램 유저 검색 N+1 문제](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdswrXJ%2FbtsGhG1aZ34%2FAAAAAAAAAAAAAAAAAAAAABpBrFxGMTJcdOPYFoysdBWacSu8Z5VuqS4TlMAj7peK%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DXVlWs5Gly7BAV5yR5netW%252FYx4wQ%253D)
이번 포스팅으로는 프로젝트 개발 도중 직면한 N+1문제에 대한 해결과정에 대해 나열해보려 합니다. 테스트는 포스트맨을 활용하였고, 추후 JMETER를 활용하여 API 성능 테스트까지 진행해보려 합니다. 기본적으로 현재 프로젝트는 팔로우 서비스를 제공하고 있습니다. 유저 검색 API 스펙으로는 인스타그램의 검색기능과 비슷합니다. 다음은 이번 문제의 주춧돌 API에 대한 요구사항입니다. 위 이미지는 인스타그램에서 h라는 키워드로 검색을 했을 때의 결과입니다. h에 해당하는 유저를 검색함과 동시에 현재 로그인 한 유저의 팔로우들 중 얼마나 해당 유저를 팔로우하고 있는지 한명의 유저 이름과 함께 totalCount를 응답으로 주고 있습니다. 다음은 이번 서비스에 적용시킬 API 로직 요구사항입니다. 유저의 이름..
![[JWT] 동작 원리 (Feat. Refresh Token)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FDVlV0%2FbtsFF6s31Nb%2FAAAAAAAAAAAAAAAAAAAAAG0l-4N-DoQR1cg3ejosgHZj6XmWYeDmrEgbNU241Gea%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DFil%252BRUNmJiasLh6KpYwJgobWENs%253D)
JWT 정리 Intro 로그인 서비스를 구현하게 된다면 세션방식, 쿠키방식, JWT방식 세 가지를 고려하게 됩니다. 이번에는 JWT방식을 활용하여 로그인 서비스를 구현을 하기 위한 필요한 개념들에 대해 정리를 해보았습니다. 또한 로그인 서비스를 구현하려하면 인증과 인가라는 개념에 대해서도 알고 있어야 하기에 먼저 정의를 해보았습니다. 인증과 인가 각각을 알아보기 이전에 인증과 인가를 되게 비슷하다고 생각을 할 수 있는데 둘은 엄연히 다른 개념이라는 걸 알아야합니다. 둘은 사용자의 정보를 효율적으로 식별하고 전달하는 과정에서 필수적인 일들입니다. 인증 인증은 쉽게 말하면, 로그인입니다. 클라이언트가 주장하는 신원을 확인하는 과정으로 다음과 같은 인증방식이 있습니다. 사용자 ID 및 비밀번호 OAuth SA..
![[JWT] JSON Web Token - With JWT.io](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fcz1Trc%2FbtsFE5ueetS%2FAAAAAAAAAAAAAAAAAAAAALGrdMZTy9B2Rpd6vC7MpAzLcHpnxk82Cxcjm0ruKcU3%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DpRWRofkgVvGaERH7XzN0%252BHW%252FCnI%253D)
JWT 인증 인가 서비스에 대한 정리가 필요하다 생각하여 작성한 포스팅입니다.공식문서를 기반으로 한 정리 내용입니다.부족한 점에 대한 지적은 언제든지 환영합니다! Introhttps://jwt.io/introduction JWT.IOJSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.jwt.io공식문서에 의하면 JWT란 JSON Web Token의 줄임말로써, 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준( RFC 7519 )입니다.또한 해당 토큰 정보는 디지털 서명이 되어있으므로 확인하고 신..
![[Spring] 필터 & 인터셉터](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbgrCsM%2FbtsFmjSESLQ%2FAAAAAAAAAAAAAAAAAAAAAAGT47YdtVATbjeStJVH57xgB-YYumQ-Y-XWfNYO_uz6%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D8QthK8PkkbfrAK%252FecAh%252FK7MzC8M%253D)
인프런 김영한님 스프링 강의를 통해 정리한 학습내용 기록입니다. 공통 관심 사항 특정 권한이 필요한 화면 및 API의 경우 로그인하지 않은 사용자에게는 해당 기능의 컴포넌트를 숨기면 된다. 하지만 해당 URL을 통해 들어오게 될 경우 막을 수 없다. 단순한 해결방안으로 권한이 필요한 Endpoint에 일일이 로그인 여부 체크를 하는 로직을 추가하는 방법이 있는데 이는 적용이나 유지보수 측면에서 효율이 좋지 않은 방법이다. 이렇듯 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사라고 부른다. 이러한 공통 관심사는 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 처리하기 위한 HTTP의 헤더나 URL의 정보들이 필요한데, 서블릿 ..