더북(TheBook)

1.1.3 시간과 공간 이해하기

확실히 비동기 함수는 지속적으로 응답할 수 있게 해주지만 비용이 많이 듭니다. 동기 프로그램으로 애플리케이션의 상태를 직접 추론할 수 있다면, 비동기 코드로 애플리케이션의 미래 상태를 추론할 수 있습니다. 이는 어떤 의미일까요? 상태는 단순히 어느 시점의 변수에 저장된 모든 정보의 스냅샷으로 이해할 수 있습니다. 이 정보는 일련의 명령문으로 작성되고 조작됩니다. 동기 코드는 그림 1-3처럼 명령문을 순서대로 단계별로 실행하는 것으로 생각할 수 있습니다.

▲ 그림 1-3 동기 코드는 각 단계가 순서대로 실행되는 구문들의 절차로, 각 단계는 이전 단계의 결과에 의존한다.

 

동기 코드에서는 변수 상태와 다음에 발생할 상황을 쉽게 파악할 수 있어서 코드 작성과 디버깅이 쉽습니다. 하지만 작업의 대기 시간과 완료 시간이 각각 다르다면 모든 작업이 함께 작동한다고 보장하기는 어렵습니다. 또한, 예측할 수 없는 시간에 종료되는 함수를 적절한 방법과 관행 없이 처리하기란 일반적으로 어렵습니다. 이런 상황 때문에 애플리케이션의 기본 모델을 보완할 방법이 필요하게 됩니다. 그림 1-3과 그림 1-4를 비교해 보면 그림 1-4의 모델에서는 수평뿐만 아니라 수직으로도 늘어났습니다.

▲ 그림 1-4 비동기 실행에서는 순서대로 호출된 단계들이 모두 동시에 종료될 필요가 없다. 따라서 1단계 데이터를 2단계에서 사용할 수 있다고 보장할 수 없다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.