Skip to content

동기와 비동기

andy edited this page Aug 6, 2019 · 2 revisions

동기

로그인 인증 서비스 순서도

(그림 참고)

  • 호출자는 암호와 함께 서비스를 호출 —> 서비스가 인증 처리를 끝날때까지 대기 —> 서비스는 호출자에게 인증 결과를 반환

장점

  • 쉬운 디버깅
  • 직관적인 흐름 추적 가능

단점

  • 컴퓨팅 자원을 비효율적으로 사용
    • 호출자는 서비스의 처리가 종료될때 까지 마냥 기다려야 함

비동기

로그인 인증 서비스 순서도

(그림 참고)

  • 호출자는 암호와 함께 서비스를 호출 —> 서비스가 인증 처리를 위한 작업 티켓을 발행(함수를 다른 스레드에 등록)—> 서비스는 호출자에게 티켓을 반환

  • 호출자는 티켓과 함께 서비스를 호출 —> 서비스는 티켓 처리 결과를 반환

장점

  • 컴퓨팅 자원을 효율적으로 사용
    • 요청을 끝날때까지 대기하지 않아, 결과를 기다리는 시간에 다른 작업을 수행

단점

  • 코드 작성시 수행시간, 프로그램 구조 등 다양한 고민 필요
    • 네티는 비동기 호출을 위한 API들을 프레임워크 레벨에서 제공하므로, 스레드 동기화 이슈 및 그에 따른 버그를 신경 쓰는 대신 구현한 기능에 집중