Spring(60)
-
[니꺼, 내꺼] 알림 기능 구현을 위한 학습
현재 프로젝트에서 '알림 기능' 을 구현할 필요가 생겼다. Spring 에서 '알림 기능' 을 구현하는 방법에 대해 찾아보았는데 그 내용이 적지가 않아 찾아본 정보와 어떠한 방식을 선택하게 되었는지 정리해보려 한다. 0. 대략적인 목표 우선 구현하고자 하는 '알림 기능' 은 사용자에게 '실시간으로 서버의 변경 사항' 을 웹 브라우저에 갱신해주는 서비스이다. 가령 해당 프로젝트의 주 목적인 '물물 교환' 에 대한 상태가 변경되었다면 사용자에게 교환 상태 변경에 대한 알림을 실시간으로 알려주는 것이다. 물론 대략적인 목표로 실제 팀 프로젝트에 적용전에는 좀 더 명확한 목표나 기준을 설정할 필요가 있다. 1. 실시간 통신 방법 파악 해당 프로젝트는 '웹 애플리케이션' 을 구현하는 것이므로 'HTTP 통신' ..
2024.12.09 -
[니꺼, 내꺼] 5분 기록 테이블
최종 프로젝트간 사용할 '5분 기록 테이블(보드)' 을 기록하는 게시글입니다. 프로젝트를 진행하면서 어떠한 부분을 책임지고 구현/작성했는지, 어떤한 문제를 마주해서 어떻게 해결했는지 간략하게 기록하기 위해 작성하게 되었습니다. 최종 팀 프로젝트의 5분 기록 테이블은 아래와 같은 정보로 작성됬습니다.분류 : 기획, 기능 구현, 트러블 슈팅, 오류 해결, 리팩토링, 테스트 작성 등 작업의 분류를 작성기능 : 기획을 제외한 분류일 경우 어떤 기능(API)에 대한 작업인지, 작업 대상 기능을 작성기록 : 작업 내용을 간략하게 작성날짜 : 작업 날짜(또는 기간) 작성링크 : 작업한 내용에 대한 블로그 게시물 또는 Github 커밋 내역을 링크분류기능기록날짜링크프로젝트 기획-프로젝트 기획(요구사항 정의서, 와이어프..
2024.12.04 -
[Able - shopping mall] DB vs Cache 성능 테스트
프로젝트간 구현한 '상품 검색 조회' 요청을 검색어를 DB 에 저장하는 것 하나, Cache 에 저장하는 것 하나 총 2개를 작성하였다. 두 요청의 부하 테스트를 진행해 과연 성능 개선이라는 것이 어느정도 차이가 있는지 확인해 보았다. 부하 테스트는 Jmeter 를 사용했으며 1초에 50번의 부하를 100번 반복하는 것으로 부하를 설정하였다. 1. GET /api/products/search-v1 2. GET /api/products/search-v2 3. 결과 DB에 검색어를 저장하는 경우 1초에 100개의 요청을 처리할까 말까였지만 Cache 에 검색어를 저장하는 경우에는 1초에 수백건의 요청을 처리하는 것을 볼수 있었다. 이 때까지 말로만 혹은 글로만 "Cache 를 활용하면 성능 개선을 꾀할 ..
2024.11.29 -
[Able - shopping mall] 5분 기록 테이블
이번 과제는 '동시성 제어' 와 '캐싱' 이 목표인 미니 팀 프로젝트로 나의 경우 '캐싱' 에 대한 요구사항을 맡게 되었으며, 추가적으로 주문 및 상품에 관한 일부 CRUD 구현 또한 맡게 되었다. 이번 팀 프로젝트의 5분 기록 테이블을 작성한다. 프로젝트의 성격에 맞추어 테이블에는 아래와 같은 정보를 작성했다.기능 : 작업한 기능을 작성기록 : 작업 내용을 간략하게 작성분류 : 구현, 트러블 슈팅, 오류 해결, 리팩토링(코드수정), 테스트 작성/수정 등 작업의 목적을 작성날짜 : 작업 날짜 작성링크 : 작업한 내용에 대한 블로그 게시물 또는 Github 커밋 내역을 링크기능기록분류날짜링크-프로젝트 발제 내용을 확인 후 팀원과 기획서 작성프로젝트 기획2024.11.22Team Notion주문 요청회원이 ..
2024.11.25 -
[Spring Security] 사용자 정의 보안 설정하기
Spring Security 초기화 작업에 대한 큰 틀을 이해했으니 이번에는 사용자(=개발자)가 정의한 보안 설정을 적용해보자. 강의 수강중 작성한 실습 프로젝트는 여기서 확인할 수 있다.0. 되짚어 보기 이전 게시글에는 단순하게 "사용자(=개발자)가 정의한 보안 설정이 없다면 기본 보안 설정이 적용된다." 라고 이야기 했지만 정확히는 아래의 2가지 조건을 만족해야 기본 보안 설정이 자동으로 적용된다.SecurityFilterChain 클래스와 HttpSecurity 클래스가 ClassPath 에 위치한 경우SecurityFilterChain 이 Bean 으로 등록되지 않은 경우정리하면 (1) 의 경우는 항상 만족한다고 보면된다. Spring Security 프레임워크를 가져다 사용하기 때문에 Secur..
2024.11.21 -
[Spring Security] DelegatingFilterProxy 와 FilterChainProxy
지금까지의 Spring Security 초기화 과정을 학습하면서 인증/인가에 사용되는 Filter 들이 어떻게 만들어지는지 알 수가 있었다. 그런데 이렇게 만들어진 Filter 들은 어떻게 사용되는 걸까?0. Filter (= ServletFilter) Spring Security 공식 레퍼런스의 내용과 강의 내용을 비교해보며 정리한 내용을 다음과 같다.Spring Security’s Servlet support is based on Servlet Filters, so it is helpful to look at the role of Filters generally first. The following image shows the typical layering of the handlers for a si..
2024.11.20