Synchronous programming
: 여러 작업들을 순차적으로 실행하도록 개발
Asynchronous programming
: 여러 작업들을 독립적으로 실행하도록 개발
multi-threads
여러 스레드가 작업을 수행
non-block I/O
I/O를 기다리는 동안 다른 작업을 수행
asynchronous programming != multithreading
asynchronous programming
: 여러 작업을 동시에 실행하는 프로그래밍 방법론
multithreading
: asynchronous programming의 한 종류
asynchronous 프로그래밍을 가능하게 하는 것은
1. multi-threads
2. non-block I/O
백엔드 프로그래밍 추세는 스레드를 적게 쓰면서 non-block I/O를 통해 전체 처리량을 늘리는 방향으로 발전 중이다.
🎈 I/O 관점에서 asynchronous
문맥에 따라 case1
synchronous I/O = block I/O
asynchronous I/O = non-block I/O
문맥에 따라 case2
synchronous I/O: 요청자가 I/O 완료까지 챙겨야 할 때
asynchronous I/O: 완료를 noti 주거나 callback으로 처리
문맥에 따라 case3
asynchronous I/O: block I/O를 다른 thread에서 실행
🎈 백엔드 아키텍쳐 관점에서
하나의 서비스는 기능과 역할에 따라 여러 개의 마이크로 서비스로 구성되고 이들 사이에는 빈번하게 커뮤니케이션이 발생함.
Synchronous communication
C에 장애가 생겼을 때 서비스 전체에 장애가 생기는 문제가 생김
Asynchronous communication
일부 서비스에 문제가 생겼을 때 전체 서비스에 문제가 생기는 것을 방지
한 방향으로 이벤트를 주는 경우에 활용할 수 있는 구조
출처: https://www.youtube.com/@ez.
'CS > 운영체제' 카테고리의 다른 글
block I/O vs non-block I/O (0) | 2024.02.15 |
---|---|
스레드와 스레드 풀 (0) | 2024.02.13 |
인터럽트와 시스템 콜 (0) | 2024.02.12 |
CPU 스케줄러 (0) | 2024.02.12 |
OS에서 프로세스 상태 (0) | 2024.02.10 |