1. 개요DelegatingSecurityContextAsyncTaskExecutor는 Spring Security에서 비동기 작업(@Async) 실행 시, 현재 SecurityContext를 새로운 스레드에서도 유지할 수 있도록 도와주는 AsyncTaskExecutor 구현체입니다.Spring Security의 SecurityContextHolder는 기본적으로 ThreadLocal을 사용하여 인증 정보를 관리합니다.즉, 현재 실행 중인 스레드에서는 SecurityContext가 유지되지만, 새로운 스레드에서 실행될 경우 SecurityContext가 공유되지 않습니다.이를 해결하기 위해 DelegatingSecurityContextAsyncTaskExecutor가 사용됩니다. 2. 왜 필요한가?S..
암달의 법칙(Amdahl's Law)이란?암달의 법칙(Amdahl’s Law)은 병렬 컴퓨팅에서 성능 향상의 한계를 설명하는 법칙으로, 병렬화할 수 없는 작업이 존재할 경우 시스템 전체의 성능 개선에 한계가 있음을 나타냅니다.이는 1967년 컴퓨터 과학자 진 암달(Gene Amdahl)이 제안한 법칙으로, 프로세서 개수를 증가시켜도 병렬화가 불가능한 부분이 존재하는 한 성능 향상에는 한계가 있다는 사실을 강조합니다. 1. 암달의 법칙의 수식암달의 법칙은 다음 수식으로 표현됩니다.S=1(1−P)+PNS = \frac{1}{(1 - P) + \frac{P}{N}}여기서,S = 병렬화 후의 성능 향상 배율 (Speedup)P = 병렬화 가능한 부분의 비율 (Parallelizable fraction)1 -..
세마포어(Semaphore), 배리어(Barrier), 래치(Latch)란?멀티스레드 또는 분산 시스템에서 동기화(Synchronization) 및 동시성 제어(Concurrency Control)를 위해 사용하는 주요 개념입니다.세마포어(Semaphore): 공유 자원의 접근을 제한하는 메커니즘배리어(Barrier): 특정 지점까지 모든 스레드가 도착해야 다음 단계로 진행할 수 있도록 하는 동기화 도구래치(Latch): 특정 조건이 충족될 때까지 스레드를 차단하는 동기화 메커니즘 이제 각 개념을 자세히 살펴보겠습니다. 1. 세마포어(Semaphore)세마포어는 공유 자원(예: 파일, 데이터베이스, 메모리 등)에 대한 접근을 제한하는 동기화 기법입니다.일반적으로 카운터(counter) 값을 기반으로 동작..
부하 분산(Load Balancing)이란?부하 분산(Load Balancing)은 많은 요청이 발생할 때 하나의 서버가 과부하되지 않도록 여러 서버에 트래픽을 고르게 분배하는 기술입니다. 이를 통해 서비스의 성능 최적화, 장애 대응, 확장성 확보 등을 달성할 수 있습니다. 1. 부하 분산이 필요한 이유부하 분산을 적용하는 주된 이유는 다음과 같습니다.고가용성(High Availability): 하나의 서버가 장애를 일으켜도 서비스가 중단되지 않고 정상적으로 운영될 수 있도록 합니다.성능 향상(Performance Improvement): 여러 서버가 트래픽을 분산 처리함으로써 응답 속도를 개선합니다.확장성(Scalability): 트래픽이 증가할 때 서버를 추가하여 시스템의 처리 능력을 확장할 수 ..