[Backend] 동시성 이슈와 해결 방법 알아보기
·
Backend
1. 동시성 문제란?📒 개념여러 작업이 동시에 실행될 때 발생할 수 있는 예상치 못한 오류나 데이터 충돌 현상공유 자원에 여러 스레드, 혹은 사용자 요청이 동시에 접근하면서 문제가 생기는 경우가 많음 📒 예시재고 감소 문제동시에 재고 감소 요청이 2개가 들어오면 두 요청 모두 quantity = 1을 읽고 0으로 만들고 저장결과적으로 재고가 1이 줄어야 하는데 실제로는 2개가 줄어들 수 있는 상황val stock = stockRepository.findById(productId)if (stock.quantity > 0) { stock.quantity -= 1 stockRepository.save(stock)} 게시글 좋아요 수 증가여러 사용자가 동시에 요청을 하면 값이 덮어씌워져서 좋아요 ..
Spring boot에서 권한 Scope 처리를 해보자! (AccessDecisionManager, AccessDecisionVoter)
·
Backend/Spring
이직하고 글 처음 올린다. 이직한 회사에서 적응한다고 (핑계..) ... 구현 내용 요구사항 ○ 유저를 생성할 때 각 유저별로 권한을 설정할 수가 있다. ○ 권한에는 메뉴별로 읽기 권한, 쓰기 권한 등 간단하게 CRUD 형태로 상세 권한을 설정할 수 있다 구현 ○ 각 API에 지정된 권한이 있다는 뜻이므로 DB에서 관리를 해야겠다고 생각했다. (stackoverflow에는 DB로 관리하는 것을 추천하지 않는다..) ○ jwt token에 권한 ID 값을 넣어 filter를 통해 권한 ID로 권한을 체크하는 로직을 만들어준다. ○ 권한이 없는 경우 403 forbidden을 내려준다. API 메뉴 기능 URI Method 유저관리 유저 리스트 출력 /user GET 유저관리 유저 상세 /user/{uid}..
Spring boot에서 JWT 구현(3)
·
Backend/Spring
이전 글 2022.02.19 - [Backend/Spring] - Spring boot에서 JWT 구현(1) 2022.02.20 - [Backend/Spring] - Spring boot에서 JWT 구현(2) 바로 전 글에서 Access token을 발급하고 Refresh token을 Redis에 저장하는 과정까지 진행해보았습니다❗ 이번 포스팅에서는 Access token이 만료되었을 때 재발급하는 과정을 프론트엔드 코드와 같이 조금 살펴보겠습니다. Access Token 만료 @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) thr..
Spring boot에서 JWT 구현(2)
·
Backend/Spring
2022.02.19 - [Backend/Spring] - Spring boot에서 JWT 구현(1) 이전 글 전 글에서 JWT에 대한 개념을 대충 정리를 했다면 이번에는 구현에 대해서 말해보겠습니다😃 JWT 로직 클라이언트에서 로그인을 합니다. 로그인 성공 시 Access token과 Refresh token을 만듭니다. 여기서 Access token은 만료시간을 30분으로 지정하고 Refresh token은 만료시간을 2주로 설정합니다. Refresh token은 Redis에 저장을 하고 클라이언트에게는 Access token을 보내줍니다. 로그인한 유저는 헤더에 Access token을 가지고 다니며 API 통신을 할 때 서버에서 만료된 토큰인지 체크를 합니다. 만료된 토큰일 경우 Access tok..