Table of contents

    소프트웨어 관련 여러 분야에서 동기/비동기(Synchronous/Asynchronous) 개념이 자주 등장합니다.

     

    그런데 업계마다 동기/비동기 처리(또는 호출)에 대해 미묘하게 다르게 정의하고 있네요.

     

    좋다 나쁘다 관점도 조금씩 다르던데, 제 생각에는 조직과 개발자들의 성향에 맞게 활용하시면 될 것 같습니다.

     

    현재, 저에게 중요한 것은 개념이므로 기억에 남을 수 있도록 정리한 내용은 이렇습니다.

     

     

     

    동기(Synchronous) 처리 및 호출

     

    - C언어를 처음 접했던 환경과 유사한 구조

    - 작성한 코드의 순서대로 처리되는 방식

    - 단순 반복

     

     

     

    비동기(Asynchronous) 처리 및 호출

     

    - OS, 콜백함수, Task 등이 포함된 환경과 유사한 구조

    - 작성한 코드의 순서대로 처리되지 않고, 처리하는 방식

    - 자원을 분할하여 효율적으로 처리

     

     

     

    동기 처리를 단순 반복이라고 작성했지만, 사실 꼭 그렇진 않습니다.

     

    복잡한 시스템을 동기적으로 처리하면 오히려 성능이 좋아지고 설계가 어려워지는 경우도 있습니다.

     

    널리 알려진 사실과 반대인 경우도 있다는 겁니다.

     

    실제로 저도 비동기 처리가 많은 구조에서 적은 구조로 변환하여 성능을 개선한 경험이 있습니다.

    (OS 제거)

     

    하지만, 웹이나 Window처럼 큰 시스템은 비동기 처리들이 불가피한 것 같습니다.