동기(Synchronous)와 비동기(Asynchronous)

Lys·2023년 10월 11일
0

네트워크

목록 보기
11/19

동기(Synchronous)란

  • 요청과 결과가 동시에 일어나는 방식으로 요청을 보낸 뒤 응답을 받아야 다음 동작이 진행된다.
  • 작업이 실행될 때 해당 작업이 완료 될 때까지 다른 작업을 수행하지 않는다.
  • 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다.
  • 보통 목적이 같은 일을 진행한다.

비동기(Asynchronous)란?

  • 요청과 결과가 동시에 일어나지 않는 방식으로 요청을 보낸 뒤 응답과 상관없이 진행된다.
  • 요청을 받는 스레드와 요청에 대해 처리하는 스레드를 따로 두는 방식이다.
  • 요청한 결과가 그 자리에서 주어지지 않는다.
  • 추구하는 목적이 다를 수 있다.

동기 방식의 예시

A가 B에게 10,000원 송금하는 경우

    1. A의 계좌는 10,000을 송금할 예정이다.
    1. B의 계좌에 10,000을 송금한다.
    1. B의 계좌는 10,000을 받았다는 것을 인지하고 A의 계좌에게 10,000을 받았다고 전송한다.
    1. A 계좌에서 -10,000 B 계좌에 + 10,000가 동시 발생하였다.

      A의 계좌와 B의 계좌는 서로 요청과 응답을 확인한 후 같은 일을 동시에 진행했다.

비동기 방식의 예시

  • 1.학생이 시험 문제를 푼다.
  • 2.학생은 선생님에게 다 푼 시험지를 전달한다.
  • 3.선생님은 학생의 시험지를 채점한다.
  • 4.채점이 완료 된 시험지를 학생에게 전송한다.
  • 5.학생은 선생님이 전송한 시험지를 받아 결과를 확인한다.


    학생과 선생님은 시험지라는 연결고리가 있지만 시험지에 행하는 목적은 서로 다르기 때문에 둘의 작업 처리 시간은 일치하지 않고, 일치할 필요가 없다.

동기의 장점

  • 설계가 간단하고 직관적이다
  • 코드를 파악하기 쉽고, 유지보수, 디버깅이 쉽다.
    (코드가 순서대로 실행되기 때문에 Breakpoint를 한 단계씩 늘려가면서 디버깅을 진행하면 에러를 발견하기 용이하다.)

동기의 단점

  • 결과가 주어질 때까지 아무것도 못하고 대기해야 된다.
    (성능저하의 원인이 될 수 있다.)
  • 입출력 요청이 있을 경우 입출력 처리가 끝날때까지 스레드가 메모리버퍼에 데이터를 차지하기 때문에 입출력 요청이 처리되는 동안 메모리가 낭비되는 상황이 생길 수 있다.
    스레드란?
    어떠한 프로그램 내에서 실행되는 흐름의 단위

비동기의 장점

  • 결과가 주어지는데 시간이 걸리더라도 그 시간동안 다른 작업을 수행 할 수 있다.
    (자원을 효율적으로 사용할 수 있다.)
  • 요청에 따라 스레드를 새로 생성하는 것이 아니기 때문에 동기방식에 비해 메모리 점유율이 낮다.

비동기의 단점

  • 동기보다 설계 방식이 복잡하다.
  • 코드가 동기방식보다 여럽고 유지보수, 디버깅이 동기방식보다 어렵다.

동기와 비동기의 차이

  • 프로그램의 작업 처리 방식
    • 동기 : 요청과 그 결과가 동시에 일어나는 작업을 순차적으로 처리한다.
    • 비동기 : 요청과 그 결과가 동시에 일어나지 않아 순차적으로 처리하지 않는다.
  • 요청에 다른 응답 처리 방식
    • 동기 : 응답이 돌아올 때 까진 다른 활동을 할 수 없다.
    • 비동기 : 응답을 기다리지 않고 대기 시간동안 다른 요청에 대한 처리가 가능하다.

🙇‍ 참고 사이트 🙇‍

https://dev-coco.tistory.com/46
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%EB%8F%99%EA%B8%B0%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%A1%9C%ED%82%B9%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
https://tang25.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B3%BC%ED%95%99-CS%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%A1%9C%ED%82%B9-%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9
https://spidyweb.tistory.com/23

0개의 댓글

관련 채용 정보