본문 바로가기
백수/java

동기, 비동기

728x90
반응형

동기

요청과 결과가 동시에 일어나는 방식으로 요청을 보낸 후 응답을 받아야 다음 동작을 합니다.

설계는 매우 직관적이지만 결과 반환까지 대기해야 하므로 시간비효율적인 단점이 존재합니다.

동기 통신의 대표적인 예로 폼(form) 입니다.

폼(form)은 웹페이지에서 사용자의 입력을 받아 서버에 전송하는 역할로 클라이언트에서 폼(from)을 서버에 제출하면 서버로부터 새로운 웹페이지를 받아서 화면에 표시하게 됩니다.

 

장점 :

  • 비동기 통신 코드보다 이해하기 용이합니다.
  • 요청, 응답이 순차적으로 이루어지기 때문에 코드의 간결성과 직관성을 유지할 수 있습니다.
  • 요청을 보낸 후에 응답을 받아야 다음 작업을 수행하기 때문에 요청, 응답의 순서를 보장할 수 있습니다.
  • 에러가 발생하는 경우 요청, 응답이 연결되어 에러 대처가 쉬울 수 있습니다.

 

단점 :

  • 전체 페이지를 다시 로딩하기 때문에 서버와의 통신량이 많아지고 자원과 시간 낭비가 발생될 수 있습니다.
  • 웹 페이지의 속도, 성능의 저하가 발생될 수 있습니다.
  • 성능이 저하되는 경우 화면이 깜빡이거나 멈춤 현상이 발생하여 사용자에게 불편함을 느낄 수 있습니다.
  • 요청, 응답이 동시에 일어나야 하기 때문에 요청을 보낸 후 다른 작업이 불가합니다.

 

비동기

어떠한 작업이 동시에 일어날 수 있는 개념으로 요청, 결과 반환이 동시에 일어나지 않습니다.

설계는 병렬적으로 작업을 진행하기 때문에 효율적이지만 설계가 복잡해집니다.

 

장점 :

  • 전체 페이지를 로딩하지 않고 필요한 부분만 로딩되어 웹 페이지의 속도, 성능을 향상할 수 있습니다.
  • 서버와의 통신량이 줄고, 자원, 시간을 절약할 수 있습니다.
  • 화면이 깜빡이거나. 멈춤이 없고 부드럽게 작동하기 때문에 사용자 경험을 개선시킬 수 있습니다.
  • 요청, 응답이 동시에 일어나지 않아도 되기 때문에 요청을 보낸 후 다른 작업이 가능합니다.

 

단점 :

  • 동기 통신 코드보다 작성하기 어렵고 복잡도가 증가됩니다.
  • 요청을 보낸 후 응답을 기다리지 않고 다음 작업을 수행하기에 요청 처리 속도에 따라 응답 순서가 보장이 안됩니다.
  • 요청과 응답이 분리되어 있어 에러 발생 시 어떤 요청에 에러인지 파악하기 어렵습니다.
728x90
반응형

'백수 > java' 카테고리의 다른 글

싱글톤 패턴  (0) 2023.07.13
1. OOP가 뭐죠?  (0) 2023.07.12
DTO, VO  (0) 2023.07.03
알고리즘  (0) 2023.06.26
API(애플리케이션 프로그램 인터페이스)  (0) 2023.06.23