[동시성 제어] 챌린지 참여 시 동시성 제어(1) - 락 없이 테스트 코드 진행 해보기
·
Develop/Spring Boot
챌린지 참여 구현 중, 막연히 챌린지 참여 Post 요청을 보내면 된다고 생각했는데, 정원 제한이 필요하고 이때 동시성 제어가 필요하다는 것을 알았다. [정원 없는 챌린지]- "30일 운동 챌린지" -> 10만명 참여(예를 들어...?) -> 관리 불가능- 인증 사진 검토 -> 하루 1만장 -> 현실적으로 불가능- 커뮤니티 기능 -> 채팅장에 수만명 -> 의미 없음- 서버 비용 -> 무제한 확장 -> 예산 초과 [정원 있는 챌린지]- "30일 운동 챌린지 (100명 한정)" -> 관리 가능한 규모- 선착순 참여 -> 참여 동기 부여 증가- 품질 높은 피드백 가능- 적절한 경쟁 강도 의 이유로 정원이 있는 챌린지로 구현하는 것을 목표로 하였다. 그러면서 동시성 제어에 대해서 학습이 필요하다는 것을 알았다...
[Vue.js] Vue.js로 화면 제작(1)
·
Develop/Vue
개인 프로젝트 진행해보면서 프론트엔드도 해봐야겠다고 생각이 들어서 Vue.js로 제작하기로 하였다. 생각한 기능들이 앱에 더 어울리긴해서 나중에 앱도 만들어보고 싶은데, 나중에 확장할 때 어떤게 나을까 생각해보다가 일단 Vue.js로 개발해보기로 했다.이 글에서는 Vue.js 정리랑... 그냥 설치 어떻게 했는지 기록하기 위해서 적으려고 한다! (미래의 나를 위한...? 나중에 어떻게 설치했는지 또 찾아보는게 일이더라...그리고 난 역시 정보 제공용 블로그는 안될거같다 아직 ㅎㅎ)Vue.js 란?Vue.js는 사용자 인터페이스(UI)를 만들기 위한 프론트엔드 프레임워크이다.MVVM 패턴(Model-View-ViewModel)을 기반으로 설계되어, 데이터와 UI를 쉽게 연결할 수 있다. Vue.js 시작해..
[Spring Security] Spring Security + JWT 로그인 구현(3) - 로그아웃 시에 블랙리스트로 AccessToken 관리하기
·
Develop/Spring Boot
📌블랙리스트?보통 로그아웃이나 강제 만료 처리하는 방법이다.JWT는 서버가 세션을 직접 관리하지 않는(stateless) 방식인데 한번 발급된 토큰은 만료 전까지 무조건 유효하다.그렇게 되면 사용자가 로그아웃을 해도, 관리자가 강제로 계정을 차단해도 AccessToken이 만료 전까지는 사용이 가능하므로 블랙리스트 처리를 해준다! 동작 방식1. 사용자가 로그아웃하거나 계정 차단됨.2. 해당 JWT의 고유식별값(jti) 또는 토큰 자체를 Redis로 블랙리스트로 등록3. 매번 API 요청 시토큰을 검증하면서 블랙리스트에 등록된 토큰인지 확인블랙리스트에 있으면 401 Unahtorized 응답쓰는 경우Access Token 만료 전 로그아웃 처리Refresh Token 강제 무효화(다른 기기에서 로그인했을..
[Spring Security] Spring Security + JWT 로그인 구현(2) - Access/Refresh Token 이해하기
·
Develop/Spring Boot
Spring Security와 JWT를 활용하여 로그인 구현하는 방법을 정리하는 글이다. 일단 해봐 마인드.. 부족한 부분은 구현해보면서 글에다 수정해야겠다. (공부글이니까...부족한 부분이 있겠지..?) 이번 글에서는 Access Token과 Refresh Token의 차이와 활용 방법, 그리고 지금 구현 중인 Spring 프로젝트에서 어떻게 구현했는지 코드와 함께 정리해야겠다. 1. Access Token & Refresh Token📌 Access Token역할 : 사용자가 인증되었음을 증명하는 짧은 수명의 토큰특징클라이언트 → 서버 요청 시 Authorization: Bearer 헤더에 담아 전송보톤 짧은 유효기간 (분~수십 분) → 탈취 시 피해 최소화서버는 Access Token 만으로 사용..
[Spring Security] Spring Security + JWT 로그인 구현(1)
·
Develop/Spring Boot
Spring SecuritySpring Security는 인증(Authentication)과 권한(Authorization) 처리를 담당하는 스프링 보안 프레임워크이다.여기에 JWT(Json Web Token) 를 결합하면, 서버에서 세션을 유지하지 않고도 사용자 인증을 관리할 수 있다. JWT를 쓰는 이유!서버 상태를 유지할 필요가 없어서 무상태(stateless) 아키텍처 가능모바일/SPA 환경에 적합토큰 자체에 필요한 정보(클레임)을 담을 수 있어 빠른 인증이 가능JWT 로그인 흐름JWT 로그인 과정은 4단계로 나눌 수 있다.1. 사용자 로그인 요청클라이언트에서 email과 password를 POST 요청2. 서버 인증Spring Security가 사용자 인증 처리인증 성공 시 JWT 생성3. JW..
N+1 문제 감지 및 JPA 해결 방법
·
Develop/Spring Boot
❓ N+1 문제란?N+1 문제란, 1개의 쿼리로 N개의 엔티티를 조회한 후, 각각의 엔티티에 대해 추가로 1개의 쿼리를 반복해서 실행하는 현상예를 들어, 게시글 1개에 댓글이 10개 있을 때 :댓글을 조회하는 1개의 쿼리(1)각 댓글의 작성자(User)를 조회하는 10개의 쿼리(N)총 11번의 쿼리 실행이 발생하며 성능 저하의 원인이 된다. 문제데이터 양이 많아질수록 쿼리 수가 기하급수적으로 증가네트워크 병목, DB 부하, TPS 저하 등의 문제로 이어짐성능 테스트 도구로 확인 시, 응답 시간 지연 및 TPS 급감으로 드러난다. 🔍 N+1 문제 감지 방법1. Hibernate SQL 로그 확인(application.yml 또는 application.properties에 로그 설정)spring: jpa..