Preface
최근 공부한 대부분의 언어에서 동기 방식과 비동기 방식에 관한 이해를 요구하는 것 같아 두 방식의 개념과 장단점, 차이점에 대해 간단히 정리해둔다.
본문 내용은 그동안 공부했던 책들과 생활코딩 강의, 그리고 Chat-GPT의 대답 내용을 참고해서 작성했다.
1. 동기 방식(Synchronous)
- 동기 방식: 작업을 순차적으로 진행하고, 각 작업이 완료될 때까지 다음 작업을 기다리는 방식
→ 작업의 진행과 응답을 기다리는 방식으로 동작한다.
- 작동 방법
1) 작업을 요청하면 해당 작업이 시작된다.
2) 시작한 작업이 완료될 때까지 다음 작업을 기다린다. (블로킹)
3) 작업이 완료되면 결과를 반환하고 다음 작업을 수행한다.
- 장점
1) 결과의 완전성과 일관성을 유지할 수 있다.
2) 코드 구현이 간단하다.
→ 작업 순서를 관리하기 용이하며, 오류 발생 시 즉시 처리할 수 있다.
3) 동기식 API 사용이 용이하다.
- 단점
1) 한 작업이 완료될 때까지 다른 작업들이 블로킹되어 대기해야 하는 경우가 발생할 수 있다.
2) 작업이 오래 걸리는 경우 다른 작업들이 대기하므로 성능 문제가 발생할 수 있다.
2. 비동기 방식(Asynchronous)
- 비동기 방식: 작업을 순차적으로 기다리지 않고, 작업이 완료되지 않은 상태에서 다음 작업을 실행하는 방식
→ 작업의 진행과 응답을 기다리지 않고 다른 작업을 병렬적으로 수행할 수 있다.
- 작동 방법
1) 작업을 요청하면 해당 작업이 시작된다.
2) 작업이 완료되지 않은 상태에서 다른 작업들을 동시에 실행할 수 있다.
3) 작업이 완료되면 결과를 반환하거나 이벤트를 발생(인터럽트)시켜 완료를 알린다.
- 장점
1) 블로킹되지 않고 다른 작업을 동시에 수행할 수 있다.
2) 작업의 동시 실행으로 인해 시스템의 성능과 응답성을 향상시킬 수 있다.
- 단점
1) 작업의 순서가 보장되지 않을 수 있으므로, 결과의 일관성을 유지하기 위해 추가적인 처리가 필요할 수 있다.
2) 오류 처리가 복잡하다.
3) 콜백 함수가 중첩되어 복잡한 코드 구조가 형성될 수 있다. (콜백 지옥)
3. 동기 방식과 비동기 방식의 주요 차이점
- 작업의 진행 방식
1) 동기 방식: 작업을 순차적으로 진행하며, 이전 작업이 완료되어야 다음 작업이 실행된다..
2) 비동기 방식: 작업이 완료되지 않은 상태에서 다른 작업을 실행할 수 있으며, 작업의 완료를 기다리지 않고 다른 작업을 동시에 수행한다.
- 작업의 응답 방식
1) 동기 방식: 작업이 완료되면 즉시 결과를 반환하고 다음 작업을 진행한다.
2) 비동기 방식: 작업이 완료되면 결과를 반환하거나 이벤트를 발생시켜 완료를 알린다.
- 대기 시간의 처리
1) 동기 방식: 한 작업이 완료될 때까지 다른 작업들이 대기하며, 작업이 오래 걸리면 다른 작업들도 블로킹된다.
2) 비동기 방식: 작업이 완료되기를 기다리지 않고 다른 작업을 실행하므로, 대기 시간이 최소화되고 블로킹되지 않는다.
- 작업의 조율 방식
1) 동기 방식: 작업의 순서와 응답 시간이 중요하며, 결과의 완전성과 일관성을 유지한다.
2) 비동기 방식: 작업의 순서가 보장되지 않으므로, 결과의 일관성을 유지하기 위해 추가적인 처리가 필요할 수 있다.
4. 동기 방식과 비동기 방식의 선택
- 동기 방식: 작업의 순서와 일관성이 중요한 경우에 유용하다.
→ 데이터베이스 트랜잭션 처리나 파일의 순차적인 읽기/쓰기 작업 등에서 사용될 수 있다.
- 비동기 방식: 작업의 동시 실행과 응답성을 향상시키고자 할 때 유용하다.
→ 네트워크 요청 처리, 파일 다운로드, 사용자 입력 처리, 이벤트 처리 등에서 사용될 수 있다.
'CS > Network' 카테고리의 다른 글
외부에서 로컬 서버에 접속하기 (0) | 2023.07.02 |
---|---|
GET 방식과 POST 방식 (0) | 2023.06.04 |
HTTPS, SSL 인증서 (0) | 2022.11.20 |
HTTP (0) | 2022.11.20 |
DNS (0) | 2022.11.18 |
댓글