[Snap Trade] 거래 매칭 엔진 아키텍처 설계 - 3
·
프로젝트/Snap Trade
지난 포스트에 이어서 거래 매칭 엔진의 아키텍처를 개선합니다.https://soberyl.tistory.com/71 [Snap Trade] 거래 매칭 엔진 아키텍처 설계 - 2지난 포스트에 이어서 거래 매칭 엔진의 아키텍처를 개선합니다.https://soberyl.tistory.com/70 [Snap Trade] 거래 매칭 엔진 아키텍처 설계 - 1핵심 개념주문 가격 방식시장가 (Market Order) - 수량 우선 가격soberyl.tistory.com 지난 포스트에서 계획했던 대로, 완벽한 이벤트 소싱 아키텍처로 전면 개편합니다.아키텍처 v3 : 이벤트 소싱 기반 비동기식 아키텍처 위의 설계에 따라서 코드가 변경되었습니다. 영속화를 담당하는 스레드가 1개에서 2개로 증설됐습니다. Project..
[Test] 점진적 부하테스트: 30,000명 유저의 SSE 구독 요청 - TCP
·
Test
이전 포스트에 이어서 SSE 구독 요청 시나리오를 계속해서 진행합니다.https://soberyl.tistory.com/36 [Test] 점진적 부하테스트: 10,000명 유저의 SSE 구독 요청 - 톰캣저번 포스트에 이어서, SSE 구독 요청을 동시에 수행하는 부하 테스트를 진행합니다.https://soberyl.tistory.com/34 [Test] 점진적 부하테스트: 10,000명 유저의 동시 SSE 구독 요청 - 설계 실패지금 유지 보수soberyl.tistory.com 이전까지는 만명의 SSE 구독 요청 수용을 완료했었고, 이제는 3만명으로 늘려서 커버해보려고 합니다.Peak CCU 375000이 목표였기 때문에 50만명까지는 커버할 수 있어야 한정적이라고 할수 있을 것입니다. 이에 목표치에..
[Thread] 자바의 스레드 관리 전략
·
개발일지/CS
Java는 OS의 자원인 스레드를 어떻게 활용하고 있을까?Java의 스레드 관리 전략은 지속적으로 발전해왔습니다. 이때 스레드는 프로세스에 속하고, 이는 곧 OS의 메모리를 할당받아서 돌아가는 구조입니다. 따라서 유저 스레드는 커널 스레드와의 관계에서 분리할 수 없는 구조가 됩니다. Java는 이와 맞물려서 커널과 유저 스레드 간 매핑 방법에 따라서 N:1 -> 1:1 -> M:N 구조로 스레드 관리 전략을 구축했습니다.❗️스레드 매핑 방법 N:1 -> Java (1.1) 1:1 -> Java (1.2 ~ 19) M:N -> Java (21 ~ ) N:1 (Green Threads)전략초창기 자바는 OS에 의존하지 않거 어디서든 실행된다는 철학 아래에 스레드 관리도 JVM에서 관리했습니다.즉, JV..
[Thread] User thread vs Kernel thread
·
개발일지/CS
스레드는 왜 있는가? 스레드는 기본적으로 프로세스 하나 안에서 병렬처리를 하고싶어서 만들어졌습니다. 무거운 하나의 일을 처리하는데 여러 개의 프로세스를 이용하는 것은 효율적이지 못하기 때문입니다.현대의 모든 OS에서 스케줄링의 기본 단위는 프로세스가 아니라 스레드입니다.스레드란 무엇인가? 운영체제는 프로그램을 실행시키기 위해 프로그램의 코드와 데이터를 메모리에서 가져오고, 프로세스 제어 블록(PCB)을 생성하고, 작업에 필요한 메모리를 확보한 후, 준비된 프로세스를 준비 큐에 삽입합니다. 이렇게 프로세스가 생성되면 CPU 스케줄러는 CPU에게 해야 하는 일을 전달하고, CPU가 그 일을 하게 됩니다. 이때 CPU가 받는 일을 스레드라고 합니다. 즉, 스레드는 실행 중인 프로그램인 프로세스 내에서 실..