본문 바로가기
백엔드 개발

비동기와 멀티스레딩

by browoo97 2025. 2. 23.

비동기와 멀티스레딩

비동기멀티스레딩은 둘 다 여러 작업을 동시에 처리할 수 있게 해준다는 공통점이 있어, 두 용어를 혼용하여 사용하는 경우가 많다.

하지만 "비동기적이라는 것은 단일 스레드, 멀티 스레드 모두에게 적용된다."

 

멀티스레딩은 비동기 프로그래밍의 한 형태인 것이지, 비동기 처리가 항상 멀티스레딩 방식인 것은 아니다.

1. 비동기 (Asynchronous)

비동기 처리는 작업이 완료될 때까지 기다리지 않고, 다른 작업을 처리하는 방식이다. 하나의 스레드에서 여러 작업을 순차적으로 처리하되, 대기 시간에 다른 작업을 수행하여 전체 작업 시간을 줄일 수 있다.

비동기 작업은 주로 I/O 작업에서 유용하게 사용되며, 주로 데이터베이스 조회, 네트워크 요청 등 외부 시스템과의 통신에서 효과적이다.

 

주요 장점:

  • 자원 효율성: 대기 시간이 발생하는 작업에서 자원을 낭비하지 않고, 다른 작업을 처리할 수 있다.
  • 단일 스레드로 동시성 구현: 하나의 스레드로 여러 작업을 병렬 처리할 수 있어 스레드 관리가 간단하다.

 

2. 멀티스레딩

멀티스레딩은 여러 스레드를 사용하여 여러 작업을 병렬적으로 처리하는 방식이다. 각 스레드는 독립적인 흐름을 가지며, 하드웨어의 여러 CPU 코어를 활용하여 병렬 처리를 할 수 있다. 주로, 대량의 계산을 동시에 처리할 때 유용하다.

주요 장점:

  • CPU 집약적인 작업에 적합: 멀티스레딩은 병렬 처리를 통해 CPU의 여러 코어를 사용하여 처리 성능을 높일 수 있습니다.
  • 동시성 구현: 여러 작업을 병렬로 실행하여 동시에 처리할 수 있습니다.

 

비동기 vs 멀티스레딩:  어느 작업에 집중해야 하나?

작업을 하다 보면 외부 서버에서 데이터를 조회하거나, 외부 서버에 데이터를 쌓아야 할 경우가 종종 있는데, 이와 같은 작업은 시간이 오래 걸리거나, 네트워크 장애에 대비해야 할 필요성이 있다.

  • 외부로부터 데이터를 조회해야 하는 경우: 이 경우, 해당 데이터를 얻어야 Response 응답을 반환할 수 있기 때문에 비동기 처리 작업에 집중해야 한다. 
  • 외부 서버에 데이터를 쌓아야 하는 경우(예: 감사 로그 기록): 이 경우, 외부 서버로부터 응답을 기다릴 필요가 없기 때문에, 멀티스레딩 작업에 집중해야한다.

결론

이 두 가지는 작업을 동시에 처리하게 하여 프로그램 성능을 향상시킨다는 점에서 공통점을 지니기도 하며, 멀티스레딩 방식을 통해 비동기 처리를 할 수 있기 때문에 비동기 처리멀티스레딩 용어를 같은 의미로 사용하는 경우가 많다.

 

비동기와 멀티스레딩은 같은 동시성 구현이라는 목적을 공유하지만, 비동기가 곧 멀티스레딩이라는 것은 아니다. 각각의 특성과 목적에 맞게 적절하게 선택하여 사용해야 최적의 성능을 얻을 수 있을 것이다.

'백엔드 개발' 카테고리의 다른 글

쿠버네티스 볼륨  (2) 2023.03.27
쿠버네티스 configuration 파일  (0) 2023.02.21
쿠버네티스 구조  (0) 2023.02.21
관리형 데이터베이스 서비스  (5) 2023.01.09
Docker 다중 컨테이너 배포  (4) 2023.01.04

댓글