[CS] 동기화? 비동기화?

JY·2025년 3월 21일
0

CS

목록 보기
4/11
post-thumbnail

프로그래밍을 하다보면 동기화 혹은 비동기화란 단어를 자주 접했을 것이다. 자주 쓰이는 용어인 만큼 자세히 정리하여 그 뜻을 알아보도록 하자

🤔 "동기"란?

동시에 일어난다는 의미를 가지고 있으며, 어느 프로세스가 진행될 때 순차적으로 하나씩 처리하는 과정을 의미한다. 개발자가 A -> B -> C의 작업을 정해두면 이 흐름대로 프로세스가 진행된다.

이렇게 순차적으로 과정이 이어지기 때문에 코드의 흐름이 직관적이며, 데이터의 일관성을 유지하기 쉬워진다. 하지만, 전 프로세스가 끝나기 전까지 다른 작업은 진행할 수 없다는 단점이 있다.


🤔 "비동기"란?

동기화 방식과 다르게 작업을 동시에 진행할 수 있다. 즉 독립적인 프로세스로 진행된다는 의미이다. 여러 요청이 들어왔을 때 공유 자원을 관리하는 메세지 큐라는 저장소를 두어 프로세스를 관리한다.

대기 시간이 따로 필요하지 않기때문에 상대적으로 성능이 향상되고, 대규모 요청 처리에 유효하다. 하지만, 코드의 복잡도가 높아지고, 데이터 동기화 문제 (동시성 문제)를 주의하여 개발해야한다.


🔥 동기 VS 비동기

다음은 표로 한눈에 정리한 동기와 비동기의 차이점이다.

항목  동기화 (Synchronous)  비동기화 (Asynchronous)
  작업 방식  순차 처리병렬 처리 (대기 없이 진행)
  대기 시간  길어질 수 있음짧음 (대기 없이 다른 작업 수행)
  코드 흐름  직관적, 이해 쉬움복잡할 수 있음 (콜백, Future 등)
  자원 관리  쉽고 안정적 동기화처리 필요 (경쟁 조건 발생 가능)
  예제 상황  파일 업로드 후 응답채팅 앱 메시지 수신, API 호출 후 응답 처리

0개의 댓글