MySQL(50)
-
[니꺼, 내꺼] 알림 기능 구현을 위한 학습
현재 프로젝트에서 '알림 기능' 을 구현할 필요가 생겼다. 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 를 프로젝트에 적용해 사용하려면 어떻게 해야 하는지 학습한 내용을 기록해 본다. 강의 수강중 작성한 실습 프로젝트는 여기서 확인할 수 있다.1. 의존성 추가 Spring Security 를 사용하기 위해서는 아래의 의존성을 'build.gradle' 에 추가할 필요가 있다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' ...} 2. 자동 설정을 통한 기본 보안 적용 Spring Security 는 서버가 실행되면 초기화 작업 및 보안 설정이 이루어진다. 만약 개발자가 별다른 설정이나 코드를 작성하지 않았다면 '기본 웹 보안 기능' 이 작동하게 된다. 즉, 기본적으로 수..
2024.11.19 -
[Spring Plus] Level 2-3 요구사항 반영
'Level 2-3' 의 요구사항을 반영한 내용을 기록한 포스팅이다. 어떠한 생각과 과정을 통해 요구사항을 반영했는지 알 수 있도록 작성해 보았다. 0. 요구사항 현재 일정 조회(단건)시 사용되는 'TodoRepository' 인터페이스의 'findByIdWithUser()' 는 JPQL 을 사용해 DB 에서 정보를 조회하고 있다. 이제는 일정 조회시 QueryDSL 을 사용해 DB 에 일정 조회 쿼리를 날리는 방식을 사용할 수 있게 코드를 수정해야 한다. 1. QueryConfig 생성 우선 QueryDSL 을 사용하려면 'build.gradle' 의 'dependencies' 에 의존성을 아래와 같이 추가해 주어야 한다. 해당 부분은 프로젝트 초기 설정 당시 추가해둔 상태이다.implementati..
2024.11.15