본문 바로가기
취준/CS 기술면접 준비

동기 vs 비동기 비교

by 윤숩 2025. 1. 5.
728x90
728x90

 

동기 (Synchronous)란 

: 작업이 순차적으로 실행됩니다. 현재 작업이 완료될 때까지 다음 작업이 대기 상태가 됩니다.

 

✔️  장점

◾ 직관적인 코드 흐름

- 작업이 순차적으로 실행되기 때문에 이해하기 쉽고 디버깅하기 용이합니다.

- 코드가 위에서 아래로 실행되므로 예측 가능한 동작을 보입니다.

 

◾ 단순한 구현

- 비동기 처리 방식보다 코드가 단순하며 추가적인 도구(Promise, async/await)가 필요하지 않습니다.

 

✔️  단점 

◾ 작업 지연 발생

- 하나의 작업이 완료될 때까지 다음 작업이 시작되지않으므로, 시간이 오래걸리는 작업(예: 파일 읽기/쓰기, 네트워크 요청)이 실행되면

  시스템 전체가 멈춥니다.

- 사용자 경험(UX)이 나빠질 수 있습니다.

 

◾ 비효율성

- I/O 작업(디스크 읽기/쓰기, 네트워크 요청 등)을 수행하는 동안 CPU가 유휴 상태가 됩니다.

function syncTask() {
    console.log("Task 1 시작");
    for (let i = 0; i < 1e9; i++) {} // 작업 지연
    console.log("Task 1 완료");
    console.log("Task 2 시작");
}
syncTask();
// 출력: Task 1 시작 -> Task 1 완료 -> Task 2 시작

 

동기 (Asynchronous)란 

: 작업이 시작되면 완료 여부와 상관없이 다음 작업이 실행됩니다. 결과가 준비되면 콜백, Promise, 또는 async/await을 통해 처리됩니다.

 

✔️  장점

효율적인 작업 처리

- 시간이 오래 걸리는 작업을 대기 상태로 두고, 다른 작업을 동시에 수행할 수 있습니다.

- 특히 네트워크 요청, 파일 입출력, 데이터베이스 작업 등에서 효율적입니다.

 

◾ 향상된 사용자 경험

- 작업이 비동기로 처리되므로, 프로그램이나 웹페이지가 멈추는 현상 없이 계속 작동합니다.

- 예: 로딩 애니메이션 표시, 버튼 클릭 응답 등.

 

✔️  단점 

◾ 복잡한 코드 흐름

- 여러 비동기 작업이 섞여 있을 경우 코드가 복잡해질 수 있으며, 작업 간의 의존성을 처리하기 어려울 수 있습니다.

- 콜백 함수가 중첩되는 콜백 헬(callback hell) 문제가 발생할 수 있습니다.

 

◾ 디버깅과 예외 처리 어려움

- 비동기 작업 중 발생한 오류를 추적하거나 디버깅하는 것이 까다롭습니다.

- 각 작업의 완료 시점이 명확하지 않아 의도치 않은 동작이 발생할 수 있습니다.

 

function asyncTask() {
    console.log("Task 1 시작");
    setTimeout(() => console.log("Task 1 완료"), 2000); // 2초 후 실행
    console.log("Task 2 시작");
}
asyncTask();
// 출력: Task 1 시작 -> Task 2 시작 -> (2초 후) Task 1 완료

 


 

동기 vs 비동기 언제 사용해야하는지?

상황 권장 방식
간단하고 실행 시간이 짧은 작업 동기 방식
UI 처리, 사용자 경험이 중요한 작업 비동기 방식
대규모 파일 읽기/쓰기, 네트워크 요청 비동기 방식
작업의 순서가 중요하고 결과가 직관적이어야 함 동기 방식

 


결론:

  • 동기 방식은 간단하고 직관적인 코드 작성에 적합하지만, 오래 걸리는 작업에서는 효율이 떨어집니다.
  • 비동기 방식은 성능과 사용자 경험을 개선할 수 있지만, 복잡성이 증가할 수 있으므로 적절히 사용하는 것이 중요합니다. 😊
728x90
728x90

'취준 > CS 기술면접 준비' 카테고리의 다른 글

웹 표준(Web Standards)이란?  (1) 2025.01.05
SEO(Search Engine Optimization, 검색 엔진 최적화)란?  (2) 2025.01.05
HTTP와 HTTPS의 차이  (1) 2025.01.05
프로토콜(Protocol)이란?  (1) 2025.01.05
RESTful API란?  (2) 2025.01.05

댓글