2012년 8월 14일 화요일

동기 호출(Synchronous Call), 비동기 호출(Asynchorous Call)


프로그램에서 동기, 비동기 호출은 멀티 프로세스, 멀티 스레드 환경에서 동작하는 애플리케이션을 작성할 때 등장한다. 멀티 프로세스(스레드) 환경 즉 복수 프로세스(스레드)가 병렬적으로 동시에 실행되는 환경에서 각 프로세스(스레드)는 독립적인 실행 흐름을 가지고 동작하는데, 한 프로세스(스레드)가 다른 프로세스(스레드)에게 하부작업(프로시저, 함수, 메서드)을 요청할 경우 호출한 프로세스(스레드)의 실행 흐름의 중지 여부에 따라 따라 동기, 비동기를 구분 짓게 된다. 이 두 개념을 좀더 상세하게 설명하면 다음과 같다.

애플리케이션 프로그램에서 동기 호출(Synchronous Call)이란 애플리케이션 프로세스(스레드)에서 하부작업(프로시저, 함수, 메서드) 요청 시 요청된 하부작업이 진행되는 동안 호출 프로세스(스레드)의 실행 흐름이 멈추게 되는 호출을 말한다. 멈춘 호출 프로세스(스레드)의 실행 흐름은 하부작업이 리턴되면 다시 계속된다.



애플리케이션 프로그램에서 비동기 호출(Asynchronous Call)이란 애플리케이션 프로세스(스레드)에서 하부작업 요청 시 요청된 하부작업의 실행 또는 종료와 관계없이 호출 프로세스(스레드)의 실행 흐름은 계속되는 호출을 말한다. 이런 호출 방식에서는 하부작업의 실행완료 시점을 호출 프로세스(스레드)가 정확이 알지 못하므로 호출 프로세스(스레드)와 하부작업은 하부작업의 실행 결과를 둘 사이 약속된 결과 영역 조회나 하부작업이 호출 프로세스(스레드)를 호출하는 Callback 메커니즘을 통해 확인한다.



비동기 호출은 기업 통합 패턴(Enterprise Integration Patterns)을 이해하는 기본 개념이다. 기업 통합 패턴은 비동기 호출을 어떻게 기업 애플리케이션 아키텍처로 활용할 수 있는지 설명한 패턴으로 기업 시스템이 복잡해짐에 따라 애플리케이션은 애플리케이션 내 상호 작용, 애플리케이션 간 상호 작용을 위한 효과적인 아키텍처가 필요한대 이때 기업 통합 패턴이 유용하게 사용될 수 있다.

참고)
1) Hophe Gregor and Bobby Woolf. Enterprise Integration Patterns (Addison-Wesley, 2003)

댓글 없음:

댓글 쓰기