동기(Synchronous)와 비동기식(Asynchronous)의 차이
동기식(Synchronous)와 비동기식(Asynchronous)의 차이는 작업을 처리하는 방식과 그에 따른 흐름 제어에 있습니다. 아래에 자세히 설명해드리겠습니다.
동기식 (Synchronous)
- 정의: 동기식 방식은 한 작업이 완료될 때까지 다른 작업이 대기하는 구조입니다. 작업 A가 끝나야 작업 B를 시작할 수 있습니다.
- 특징:
- 순차적 처리: 작업이 순서대로 진행됩니다. A가 끝나야 B가 시작되고, B가 끝나야 C가 시작됩니다.
- 작업 완료 대기: 다음 작업을 시작하려면 현재 작업이 끝날 때까지 기다립니다.
- 사용 예시: 많은 API 호출이나 파일 I/O 작업에서 동기적인 방식을 사용합니다. 예를 들어, REST API에서 GET 요청을 보낸 후, 응답을 받을 때까지 대기합니다.
- 장점:
- 흐름이 직관적이고 코드가 이해하기 쉽습니다.
- 디버깅이 비교적 간편합니다.
- 단점:
- 시간이 오래 걸리는 작업이 있을 경우, 전체적인 응답 시간이 길어질 수 있습니다.
비동기식 (Asynchronous)
- 정의: 비동기식 방식은 작업이 완료될 때까지 기다리지 않고, 다른 작업을 병행해서 수행할 수 있는 구조입니다.
- 특징:
- 병행 처리: 작업 A가 진행되는 동안 B나 C를 동시에 처리할 수 있습니다.
- 이벤트 기반: 작업이 완료되면 콜백 함수나 이벤트 리스너를 통해 결과를 처리합니다.
- 사용 예시: 웹 애플리케이션에서의 사용자 입력 처리, 네트워크 I/O 작업, 메시징 시스템 등에서 비동기적인 방식을 많이 사용합니다. 예를 들어, RabbitMQ를 통해 메시지를 비동기로 전송하고, 처리 결과를 이벤트 기반으로 수신합니다.
- 장점:
- 긴 대기 시간이 발생하는 작업에서도 시스템의 다른 작업이 중단되지 않습니다.
- 자원을 효율적으로 사용할 수 있으며, 특히 I/O 작업에서 성능 향상이 두드러집니다.
- 단점:
- 코드의 복잡도가 증가할 수 있으며, 디버깅이 어려울 수 있습니다.
- 이벤트 기반 처리나 콜백 지옥(Call-back Hell) 문제가 발생할 수 있습니다.
비유를 통한 설명
동기식은 마트 계산대에서 줄을 서서 기다리는 것과 비슷합니다. 앞사람이 계산을 마쳐야 다음 사람이 계산할 수 있습니다.
비동기식은 식당에서 음식을 주문하고 테이블에서 기다리며 다른 일을 하는 것과 같습니다. 주문은 주방에서 비동기로 처리되고, 음식이 준비되면 웨이터가 서빙합니다.
'Interview > Network' 카테고리의 다른 글
DNS 서버 (0) | 2024.10.19 |
---|---|
Load balancing 로드 밸런싱 (1) | 2024.10.19 |
L4 vs L7 스위칭 장비 (0) | 2024.10.19 |
Network Address Translation (NAT) (0) | 2024.10.19 |
네트워크 라우팅 테이블 (0) | 2024.10.19 |