📝 동기와 비동기란 무엇인가
동기(Synchronous)란, 어떤 작업을 실행할 때 그 작업일 끝날 때까지 기다리는 방식을 말한다. 즉, 작업이 완료될 때까지 다음 작업의 실행을 멈추고 기다리는 것이다. 이러한 방식은 작업의 순서를 보장하고, 작업이 끝날 때까지 결과를 기다리는 것이 가능하다.
비동기(Asynchronous)란, 어떤 작업을 실행할 때 그 작업이 완료되지 않더라도 다음 코드를 실행하는 방식을 말한다. 즉, 작업이 완료되지 않았더라도 결과를 기다리지 않고 다음 작업을 실행하는 것이다. 이러한 방식은 작업이 오래 걸리는 경우 시간을 절약하고, 병렬 작업 처리가 가능하다.
동기 방식으로 파일을 읽는다면 파일을 읽기 시작한 이후에 다음 코드를 실행하지 않고 파일이 읽히기를 기다린다. 하지만 비동기 방식으로 파일을 읽는다면 파일을 읽는 작업이 실행되는 동안 다른 작업을 수행할 수 있다.
📝 왜 비동기 처리가 필요한가
웹 페이지의 반응성 향상 : 사용자가 요청한 작업이 완료될 때까지 기다리는 것은 비효율적이다. 따라서 비동기 처리를 통해 사용자의 요청에 빠르게 반응할 수 있도록 해야 한다.
네트워크 통신 : 웹 애플리케이션에서는 서버와의 데이터 통신이 필요하다. 동기적인 처리를 하게 되면 응답을 기다리는 동안 다른 작업을 수행할 수 없기 때문에 웹 페이지의 반응성이 떨어질 수 있다. 따라서, 비동기적으로 데이터를 받아오는 것이 웹 페이지의 성능을 향상하는데 도움이 된다.
병렬 처리 : 비동기 처리를 통해 여러 작업을 동시에 처리할 수 있다. 이를 통해 시간이 오래 걸리는 작업을 병렬적으로 처리할 수 있으며, 결과적으로 전체 작업 시간을 단축시킨다.
에러 처리 : 비동기적으로 처리할 때 에러가 발생하면, 해당 에러를 쉽게 처리할 수 있다. 에러 발생 시, 에러를 처리할 수 있는 콜백 함수를 실행하거나, 에러를 캐치하여 처리할 수 있으므로 프로그램의 안정성을 높일 수 있다.
콜백 함수
나중에 호출되는 함수를 말한다. 특정 함수에 매개변수로 전달된 함수를 의미한다.
콜백 함수는 코드를 통해 명시적으로 호출하는 함수가 아니라, 개발자가 단지 함수를 등록하기만 하고, 어떤 이벤트가 발생하거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수이다.
📝 동기와 비동기를 구분하는 기준
❗ 작업 순서의 보장 여부 ❗
- 동기화 (Synchronous)
- 작업의 순서가 보장됨
- 프로세스는 요청한 작업의 결과를 받고 나서 다음 작업을 처리한다.
- 비동기화 (Asynchronous)
- 작업의 순서가 보장되지 않음
- 프로세스는 요청한 작업의 결과를 받지 않더라도 다음 작업을 처리한다.
'Knowledge > 이론' 카테고리의 다른 글
callback VS fallback (0) | 2024.05.02 |
---|---|
쓰레드 풀 (Thread Pool) (0) | 2024.03.23 |
SMTP (단순 전자우편 전송 규약) (0) | 2024.03.22 |
소셜 로그인 구현 표준, OAuth란? (0) | 2024.03.21 |
Polling / Long Polling / SSE / WebSocket 정리 (0) | 2024.03.20 |