본문 바로가기

기술면접

14_동기 & 비동기의 차이 : 비동기프로그래밍

✅ 동기 (Synchronous)와 비동기 (Asynchronous) 프로그래밍


✅ 동기 (Synchronous) 프로그래밍:
동기 프로그래밍은 작업이 순차적으로 실행되고, 한 작업이 완료될 때까지 다음 작업이 시작되지 않습니다.
요청한 작업이 완료되기 전까지는 대기해야 하므로, 시스템 자원의 효율성과 응답성이 저하될 수 있습니다.
순차적인 프로그래밍 스타일로 코드의 흐름이 예측 가능하고 간단할 수 있습니다.

 

  비동기 (Asynchronous) 프로그래밍:
비동기 프로그래밍은 작업이 병렬로 실행되고, 작업이 완료될 때까지 기다리지 않고 다음 작업을 계속할 수 있습니다.
비동기적으로 작업을 처리하면, 작업이 완료되기를 기다리는 동안 다른 작업을 수행할 수 있어 시스템 자원을 효율적으로 활용할 수 있습니다.


주로 이벤트 기반, 콜백 함수, 프로미스, 비동기 함수 등을 사용하여 구현됩니다.


   비동기 프로그래밍의 필요성:
1️⃣ 성능 향상: 동기적 작업은 하나의 작업이 끝날 때까지 다음 작업을 기다려야 하므로, 대기 시간이 발생합니다. 이는 시스템의 성능을 저하시킬 수 있습니다. 비동기 프로그래밍은 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있기 때문에 성능 향상을 이끌어 낼 수 있습니다.

2️⃣ 응답성 향상: 사용자 인터페이스와 같은 응답성이 중요한 애플리케이션에서는 비동기 프로그래밍이 필수적입니다. 사용자가 어떤 동작을 실행했을 때 대기 없이 즉시 응답을 받을 수 있기 때문에 사용자 경험이 향상됩니다.

3️⃣ 자원 효율성: 비동기 작업을 사용하면 작업이 완료될 때까지 대기하는 대신 다른 작업을 수행할 수 있으므로 시스템 자원을 더 효율적으로 활용할 수 있습니다.

4️⃣ 네트워크 통신: 네트워크 호출은 주로 비동기적으로 이루어집니다. 서버에서 데이터를 요청하고 응답을 받는 동안 클라이언트는 다른 작업을 수행할 수 있습니다. 따라서 네트워크 통신을 비동기적으로 처리함으로써 시간을 절약하고 효율적으로 작업할 수 있습니다.