목록동시성 (5)
잡동사니
안녕하세요. yeTi입니다.이번에는 스프링 부트(Sprint Boot) 기반 개발 환경에서 기존의 스레드 풀(Thread Pool) 방식을 사용하던 애플리케이션을 자바 21에서 도입된 가상 스레드(Virtual Threads) 방식으로 전환하는 과정을 알아보겠습니다.서론스프링 부트는 임베디드 서버를 제공합니다.그 중 많이 사용하는 톰캣 서버는 스레드 풀을 활용하여 웹 요청을 처리하는 구조를 가집니다. 그러나 자바 21에서 도입된 가상 스레드는 더 높은 동시성으로 하드웨어 자원의 효율성을 제공하며, 특히 I/O 바운드 애플리케이션에서 큰 성능 향상을 기대할 수 있습니다. 이번 포스팅에서는 스레드 풀 방식에서 가상 스레드 방식으로 전환하는 과정을 살펴보고, 전환시 유의해야 할 점들을 공유해 보겠습니다.스레드..
안녕하세요. yeTi입니다.오늘은 클라우드 네이티브 애플리케이션에서 버추얼 스레드의 역할과 이점을 알아보고자 합니다.버추얼 스레드는 전통적인 스레드 모델의 한계를 극복하고, 더 높은 동시성을 제공하기 위해 고안된 경량 스레드 모델입니다. 본 포스팅은 버추얼 스레드의 개념부터 시작하여, 클라우드 네이티브 애플리케이션에서의 실제 적용 사례와 함께 그 이점 및 한계까지 종합적으로 분석할 것입니다.클라우드 네이티브 애플리케이션의 특성먼저 클라우드 네이티브 애플리케이션이 가지는 특성을 정리하여 큰 맥락에서 바라볼 수 있도록 하겠습니다. 클라우드 네이티브 애플리케이션은 처리량, 병렬성, 동시성, 효율성의 관점에서 다뤄볼 수 있습니다.처리량(Throughput)처리량은 애플리케이션이 단위 시간당 처리할 수 있는 작업..
안녕하세요. yeTi입니다.현대 소프트웨어 개발은 빠르게 변화하는 환경 속에서 지속적으로 적응하고 발전하고 있습니다. 특히, 온프레미스(On-Premise) 환경에서 클라우드(Cloud) 환경으로의 전환은 서비스의 구동 방식과 성능 최적화에 큰 영향을 미쳤습니다. 이러한 변화는 동시성(Concurrency)과 병렬성(Parallelism)에 대한 새로운 요구사항을 만들어냈으며, 이에 대한 효과적인 대응 방안으로 버추얼 쓰레드(Virtual Threads), 코루틴(Coroutines), WebFlux와 같은 최신 동시성 기법들이 등장하게 되었습니다. 이번 포스팅에서는 Context Switching의 개념과 온프레미스에서 클라우드로의 전환이 동시성 기법에 어떤 영향을 미쳤는지, 그리고 이러한 변화가 새로..
안녕하세요. yeTi입니다.프로그램의 효율성과 응답성을 극대화하기 위해 동시성(Concurrency)과 병렬성(Parallelism)은 필수적인 개념입니다. 이전 포스팅에서는 동시성과 병렬성의 기본 개념과 이를 구현하는 대표적인 방법인 멀티스레딩(Multithreading)과 멀티프로세싱(Multiprocessing)에 대해 알아보았습니다. 이번 포스팅에서는 동시성 문제를 더욱 깊이 있게 이해하기 위해 동기(Synchronous), 비동기(Asynchronous), 블로킹(Blocking), 논블로킹(Non-Blocking)의 개념이 동시성과 어떻게 연결되는지 살펴보겠습니다.동시성에서의 동기와 비동기동기(Synchronous) 프로그래밍이란?동기 프로그래밍은 작업이 순차적으로 실행되는 방식을 의미합니다...
안녕하세요. yeTi입니다.오늘은 동시성(Concurrency)과 병렬성(Parallelism)에 대해 알아보고 나아가 멀티스레딩(Multithreading)과 멀티프로세싱(Multiprocessing) 의 개념까지 알아보고자 합니다.개요프로그래밍에서 동시성(Concurrency)과 병렬성(Parallelism)은 성능 최적화와 효율적인 자원 활용을 위해 중요한 개념입니다. 이 두 개념은 종종 혼동되지만, 각각 고유한 특징과 적용 사례가 있습니다. 특히 멀티스레딩(Multithreading)과 멀티프로세싱(Multiprocessing)은 동시성과 병렬성을 구현하는 대표적인 방법들입니다. 이번 포스팅에서는 동시성과 병렬성의 기본 개념을 이해하고, 멀티스레딩과 멀티프로세싱의 차이점과 선택 기준을 살펴보겠습니..