
Tomcat 2 - 주요 설정값 및 테스트
이전 포스팅에서는 Tomcat Connector에 대한 개념을 알아보았다 본 포스팅에서는 Tomcat 주요 설정값 및 시나리오 테스트를 진행할 것이다 Tomcat 주요 설정값 minSpareThreads [Default = 10] The minimum number of threads always kept running. This incl...
이전 포스팅에서는 Tomcat Connector에 대한 개념을 알아보았다 본 포스팅에서는 Tomcat 주요 설정값 및 시나리오 테스트를 진행할 것이다 Tomcat 주요 설정값 minSpareThreads [Default = 10] The minimum number of threads always kept running. This incl...
이전 포스팅에서는 ThreadPool에 대한 개념을 알아보았다 본 포스팅에서는 Tomcat의 Connector에 대한 개념을 알아볼 것이다 Tomcat: WAS(Web Application Server)의 한 종류 Connector란? Apache Tomcat Connector Docs The HTTP Connector ele...
ThreadPool 어떤 요청이 들어왔을 때 해당 요청을 처리하기 위해서 쓰레드를 사용하는 가장 심플한 방법은 요청마다 쓰레드를 생성하고 할당하는 것이다 쓰레드가 필요한 시점에 생성 요청 OS가 해당 쓰레드를 위한 메모리 영역 확보 및 할당 OS Level에서 Native Thread를 위한 메모리 영역을 할당 ...
개요 앞선 포스팅에서 Pessimistic Write Lock & MySQL Named Lock을 통해서 경매 입찰 & 작품 구매에 대한 동시성 문제를 해결하였다 Pessimistic Write Lock의 DB Record Lock으로 인해 다른 로직에 영향을 주는 것을 해결하고자 MySQL Named Lock을 적용해보았고 그 결과...
개요 앞선 포스팅에서 Pessimistic Write Lock을 통해서 경매 입찰 & 작품 구매에 대한 동시성 문제를 해결하였다 Pessimistic Write Lock은 특정 DB Record에 Exclusive Lock을 적용해서 다른 Thread들의 읽기/수정/삭제 모든 연산들을 대기시킴으로써 동시성을 제어한다 그런데 이렇게 DB Re...
개요 현재 리팩토링중인 AI 기반 작품 경매 플랫폼 프로젝트: Another Art에서는 다음 2가지 주요 기능이 존재한다 경매 작품 입찰 작품 구매 경매 작품 입찰 & 일반 작품 구매에서는 멀티 쓰레드 환경에서 동시성 문제가 발생할 수 있고 이를 반드시 제어해야 한다 입찰 프로세스 @UseCase @RequiredArgsC...
어떤 프로덕트를 개발할 때 로깅의 개념은 굉장히 중요하다 로그는 Application, Network, …등에서 발생하는 모든 이벤트에 대한 기록이다 이러한 로그를 바탕으로 모니터링, 오류 추적, ..등을 진행할 수 있다 WAS 요청/응답 흐름 위의 흐름은 WAS로 요청이 들어오고 응답이 될때까지의 간략한 흐름이다 필자는 다음과 같이 로...
동시성 처리 웹 서비스를 개발하다보면 수많은 종류의 동시성 문제를 경험해볼 수 있다 주문 도메인 상품 재고 동시성 처리 선착순 쿠폰 동시성 처리 … 동시성 문제는 공유 자원을 동시에 접근하는 과정에서 Critical Section에서 발생하는 Race Condition으로 인한 문제를 의미한다 본 포스팅에서는 JVM 환경에서 제공하는...
Transaction 전파 트랜잭션은 시작 지점 & 종료 지점이 명확하게 존재한다 시작 지점은 하나이지만 종료 지점은 둘로 분류할 수 있다 Commit Rollback 특정 로직을 진행하다가 추가적인 트랜잭션이 진입하는 경우를 생각해보자 이 때 기존에 존재하는 트랜잭션에 대해서 추가적으로 진행되는 트랜잭션의 행동은 트랜잭션 전파...
Transaction - Connection간의 관계 트랜잭션을 열고 유지하기 위해서 트랜잭션의 시작 ~ 끝까지 다음과 같은 이유로 DB Connection을 동기화해야 한다 트랜잭션 내부의 여러 연산 로직은 최종적으로 원자성 (All or Nothing)을 보장해야 한다 이 과정에서 모든 연산은 동일한 DB Connection을 사용해야...