본문 바로가기

공부 기록/영상 후기

비동기 프로그래밍, 비동기 I/O, 비동기 커뮤니케이션.. 비동기(asynchronous)라는 .. 참 많이 사용하는데요~ 각 맥락에 따른 의미를 설명합니다~

https://youtu.be/EJNBLD3X2yg

Synchronous programming

- 여러 작업(task)들을 순차적으로 실행하도록 개발

 

Asynchronous(비동기) programming

- 여러 작업들을 독립적으로 실행하도록 개발

 

asynchronous programming != multithreading

- asynchronous programming : 어러 작업을 동시에 실행하는 프로그래밍 방법론

- multithreading : asynchronous programming의 한 종류

 

- Asynchronous programming을 가능하게 하는 것 => multi-threads, non-block I/O

- 백엔드 프로그래밍의 추세는 스레드를 적게 쓰면서도 non-block I/O를 통해 전체 처리량을 늘리는 방향으로 발전 중

 

I/O 관점에서의 synchronous VS 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에서 실행

 

백엔드 아키텍처 관점에서 asynchronous

- 하나의 서비스는 기능과 역할에 따라 여러 개의 마이크로 서비스로 구성되고, 이들 사이에는 빈번하게 커뮤니케이션이 발생한다.

- Asynchronous communication : 메시지 큐를 이용, consume event & produce event