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): 트래픽이 증가할 때 서버를 추가하여 시스템의 처리 능력을 확장할 수 ..
락(Lock)은 멀티스레드 및 멀티프로세스 환경에서 동기화(Synchronization)와 데이터 정합성(Consistency)을 보장하는 핵심 기술입니다.그러나 잘못 사용하면 성능 저하, 데드락(Deadlock), 락 경합(Lock Contention) 등의 문제가 발생할 수 있습니다.효율적인 락 사용을 위해 불필요한 락을 최소화하고, 적절한 락 전략을 선택하는 것이 중요합니다.다음은 락 관련 성능 최적화 기법을 정리한 내용입니다. 1. 락 사용 시 발생하는 성능 문제락은 공유 자원에 대한 동시 접근을 제어하는 과정에서 성능 저하를 유발할 수 있습니다.주요 성능 문제는 다음과 같습니다.락 경합(Lock Contention)여러 스레드 또는 프로세스가 동일한 락을 획득하려 할 때 충돌이 발생하는 현상..
OS 및 파일 시스템 락이란?운영체제(OS)와 파일 시스템에서 락(Lock)은 다중 프로세스 또는 다중 스레드가 동시에 같은 자원(파일, 메모리, 디바이스 등)에 접근하는 것을 조정하는 메커니즘입니다.이는 데이터 정합성을 보장하고, 충돌을 방지하며, 경쟁 조건(Race Condition)을 해결하는 데 사용됩니다. 운영체제와 파일 시스템의 락은 크게 다음과 같은 영역에서 사용됩니다.커널 및 프로세스 관리에서의 락메모리 및 동기화 관련 락파일 시스템 락장치 및 입출력(I/O) 관련 락 운영체제(OS)에서 사용하는 락의 종류커널 락(Kernel Lock)운영체제의 커널에서 사용되는 락은 프로세스 간 충돌을 방지하고, OS 리소스를 보호하기 위해 사용됩니다.스핀락(Spinlock)짧은 시간 동안 락을 기다..