개요 [Spring] nGrinder 부하 테스트 1) 쿼리 튜닝 개요 GitHub - sjiwon/study-with-me-be: 여기서 구해볼래? Backend Repository (Refactoring) 여기서 구해볼래? Backend Repository (Refactoring). Contribute to sjiwon/study-with-me-be development by creating an account on GitHub. github.com 본 sjiwon-dev.tistory.com 메인 페이지에 노출되는 스터디 조회 API와 관련된 3가지 쿼리에 대한 튜닝을 진행함으로써 기존에 구현한 로직과 비교해서 꽤 괜찮은 성능 향상을 이루어 냈다 등록날짜 기준 좋아요 개수 기준 리뷰 개수 기준 이번..
개요 GitHub - sjiwon/study-with-me-be: 여기서 구해볼래? Backend Repository (Refactoring) 여기서 구해볼래? Backend Repository (Refactoring). Contribute to sjiwon/study-with-me-be development by creating an account on GitHub. github.com 본 프로젝트 - Study With Me의 메인 페이지에서 가장 많이 조회가 될 거라고 예상되는 스터디 조회에 대한 부하 테스트를 진행하고 여러가지 튜닝을 해보려고 한다 스터디 조회에는 총 3가지 조건이 존재한다 등록날짜 좋아요 개수 리뷰 개수 개선에 앞서 트래픽? 트래픽이 많다? 대규모 트래픽이다?의 정의가 뭘까? 1..
개요 [Spring] HikariCP 1) DBCP란? DB Connection Web Application Server(WAS) ↔ DB Server간에 네트워크 통신을 위해서는 TCP/IP 기반으로 Connection을 맺어야 한다 WAS에서는 적절한 DB Driver를 통해서 DBMS에 Connection 요청을 진행한다 DB Driver는 WAS sjiwon-dev.tistory.com 위의 포스팅을 통해서 기본적인 DBCP에 대한 개념과 HikariCP의 핵심 컴포넌트에 대한 기본적인 개념을 알아보았다 본 포스팅에서는 HikariCP에서 실질적으로 DB Connection을 다루는 메커니즘에 대해서 알아볼 것이다 HikariCP 주요 필드 필드 설명 poolState HikariCP의 상태 → ..
DB Connection Web Application Server(WAS) ↔ DB Server간에 네트워크 통신을 위해서는 TCP/IP Connection을 맺어야 한다 WAS에서는 적절한 DB Driver를 통해서 DBMS에 Connection 요청을 진행한다 DB Driver는 WAS ↔ DBMS 사이에서 데이터를 주고 받는 통로 역할 Connection 요청을 처리할 DB Driver는 DBMS와 TCP/IP Connection을 맺는다 3-Way Handshake (SYN / ACK-SYN/ ACK) TCP/IP Connection을 맺은 후 DB Driver는 인증 정보를 DBMS에 전달한다 DBMS는 Client에 대한 인증을 진행하고 Connection 요청에 대한 DB Session을 생..
[Spring] Tomcat 1) Connector [Java] ThreadPool ThreadPool 어떤 요청이 들어왔을 때 해당 요청을 처리하기 위해서 쓰레드를 사용하는 가장 심플한 방법은 요청마다 쓰레드를 생성하고 할당하는 것이다 쓰레드가 필요한 시점에 생 sjiwon-dev.tistory.com 이전 포스팅에서는 Tomcat Connector에 대한 개념을 알아보았다 본 포스팅에서는 Tomcat 주요 설정값 및 시나리오 테스트를 진행할 것이다 Tomcat 주요 설정 값 minSpareThreads [default = 10] The minimum number of threads always kept running. This includes both active and idle threads. If..
[Java] ThreadPool ThreadPool 어떤 요청이 들어왔을 때 해당 요청을 처리하기 위해서 쓰레드를 사용하는 가장 심플한 방법은 요청마다 쓰레드를 생성하고 할당하는 것이다 쓰레드가 필요한 시점에 생성 요청 OS가 해 sjiwon-dev.tistory.com 이전 포스팅에서는 ThreadPool에 대한 개념을 알아보았다 본 포스팅에서는 Tomcat의 Connector에 대한 개념을 알아볼 것이다 Tomcat = WAS(Web Application Server)의 한 종류 Connector란? Apache Tomcat 10 Configuration Reference (10.0.27) - The HTTP Connector This Connector supports all of the requir..
개요 [Spring] 경매 입찰/작품 구매 동시성 문제 해결 1) DB Lock 개요 GitHub - sjiwon/Advanced-Another-Art: AI 기반 작품 경매 플랫폼 (Refactoring) AI 기반 작품 경매 플랫폼 (Refactoring). Contribute to sjiwon/Advanced-Another-Art development by creating an account on GitHub. github.com 현재 리팩 sjiwon-dev.tistory.com [Spring] 경매 입찰/작품 구매 동시성 문제 해결 2) MySQL Named Lock 개요 [Spring] 경매 입찰/작품 구매 동시성 문제 해결 1) DB Lock 개요 GitHub - sjiwon/Advanced..
개요 [Spring] 경매 입찰/작품 구매 동시성 문제 해결 1) DB Lock 개요 GitHub - sjiwon/Advanced-Another-Art: AI 기반 작품 경매 플랫폼 (Refactoring) AI 기반 작품 경매 플랫폼 (Refactoring). Contribute to sjiwon/Advanced-Another-Art development by creating an account on GitHub. github.com 현재 리팩 sjiwon-dev.tistory.com 앞선 포스팅에서 Pessimistic Write Lock을 통해서 경매 입찰 & 작품 구매에 대한 동시성 문제를 해결하였다 Pessimistic Write Lock은 특정 DB Record에 Exclusive Lock을 ..
개요 GitHub - sjiwon/Advanced-Another-Art: AI 기반 작품 경매 플랫폼 (Refactoring) AI 기반 작품 경매 플랫폼 (Refactoring). Contribute to sjiwon/Advanced-Another-Art development by creating an account on GitHub. github.com 현재 리팩토링중인 AI 기반 작품 경매 플랫폼 프로젝트: Another Art에서는 다음 2가지 주요 기능이 존재한다 경매 작품 입찰 작품 구매 경매 작품 입찰 & 일반 작품 구매에서는 멀티 쓰레드 환경에서 동시성 문제가 발생할 수 있고 이를 반드시 제어해야 한다 입찰 프로세스 @UseCase @RequiredArgsConstructor public ..
개요 [Spring] 메일 인증 & Redis를 활용한 사용자 계정 정보 조회 및 수정 개요 GitHub - sjiwon/Advanced-Another-Art: AI 기반 작품 경매 플랫폼 (Refactoring) AI 기반 작품 경매 플랫폼 (Refactoring). Contribute to sjiwon/Advanced-Another-Art development by creating an account on GitHub. github.com 현재 리팩 sjiwon-dev.tistory.com 이전에 메일 인증 + Redis를 활용해서 사용자 개인 계정과 관련된 보안적 측면을 향상시켰다 그런데 테스트를 하다보니 관련된 API의 성능이 매우 떨어짐을 확인할 수 있었다 인증 메일 전송을 포함한 아이디 찾기 ..