#48. 동기와 비동기

박현재·2022년 3월 6일
0

동기와 비동기에 대해서 알아보자.

1. 동기와 비동기의 개념

동기처리는 세탁기를 돌려놓고 끝날 때까지 기다리는 일처리 방식이고 비동기처리는 세탁기를 돌려놓고 그동안 설거지, 빨래, 청소 등의 다른 일들을 병행해서 처리하는 방식이다. '비동기'라는 용어는 2000년대 중반 구글 맵 등이 Ajax(Asynchronous JavaScript + XML)를 사용한 웹 서비스를 다수 공개하면서 널리 사용되고 있다. 이전 장
에서 살펴본 병렬방식처럼 동시에 여러가지 일을 처리하는 것이 주된 목표이므로 본질이 병렬방식과 같다.

2. 비동기의 적용

다음은 구글에 키워드를 검색하는 과정이다.

IT inf 라는 키워드를 입력하는 과정에서 웹 서버의 프로세스는 요청을 받고 있다. 동시에 Ajax가 입력중인 키워드를 구글 검색 엔진 서버에 전송해서 키워드 후보 데이터를 얻어서 브라우저에 표시한다. 내용을 갱신할 때마다 화면 전체를 다시 읽어야 한다면 읽는 과정이 끝날 때까지 아무것도 하지 못하고 기다려야 하지만, 비동기 방식에서는 입력 상자의 키워드 후보 부분만 갱신되기 때문에 '키워드 입력'과 '키워드 후보 표시'를 동시에 병렬로 처리할 수 있다.

3. 비동기의 성능 극대화

비동기 I/O로 I/O를 발행하더라도 저장소 성능 이상으로는 빨라지지 않는다. 현재 저장소 캐시 기능이나 SSD 등에 의해 하드웨어의 I/O 성능 고속화가 진행되고 있기 때문에 하드웨어 성능을 최대로 활용하기 위해서는 비동기 I/O 같은 소프트웨어 방식의 I/O 효율화 방법이 더 중요해질 것이다. 비동기 처리는 다양한 곳에서 사용되고 있다. 보통 DBMS를 복제할 때는 동기 모드 또는 비동기 모드를 선택할 수 있다. 또한, 메시지 큐(Queue) 등을 하는 미들웨어도 비동기 처리를 한다. 비동기 처리를 하는 동안 다른 일을 처리하고 나서 비동기 처리가 잘 되었는지 결과를 확인하지 않는 경우가 있다. 비동기 처리의 확인이 필요한지 먼저 확인 후, 필요하다면 확인 전에 다음 일을 처리해도 문제가 없는지 잘 살펴야한다.

참조: 책 그림으로 공부하는 IT 인프라 구조 4장

profile
바로 하자, Right Now!

0개의 댓글