개발 일지

OkHttp vs RestTemplate

계란💕 2023. 3. 18. 00:14

OkHttp

  • Square 사에서 개발한 라이브러리
  • 모바일 앱에서 사용하기에 최적화되어 있다. 
  • 단일 스레드 모델을 사용해서 비동기식으로 요청을 처리하는 게 특징이다. 
  • 이를 통해 네트워크 대역폭을 최대한 활용할 수 있고 성능이 좋다. 

RestTemplate

  • Spring Framework에서 지원하는 라이브러리이다. 
  • Java EE 애플리케이션 개발에 적합하다. 

OkHttp vs RestTemplate

공통점

  • 둘다  HTTP 클라이언트 라이브러리이다. 
  • RestFul API를 호출하는데 사용된다. 
  • 애플리케이션에서 HTTP 요청을 처리하고 응답을 분석하는데 사용 가능

 

차이점

  • 성능 측면에서 OkHttp가 더 빠르고 최신 기술을 적극 활용한다.
  • 개발자는 Spring Framework와의 연동성이 높기 때문에 RestTemplate 를 더 선호한다. 
  • 또한  RestTemplate내장된 기능으로 인해 개발자가 쉽게 HTTP 요청 및 응답을 다룰 수 있다. 

찾아볼 부분

Blocking I/O vs Non Blocking I/O

  • 호출되는 I/O 함수가 바로 반환하는지 아니면 제어권을 가져가서 block하느냐의 차이에 따라 구분한다. 
  • Blocking I/O: I/O 작업이 진행되는 동안 유저 프로세스가 자신의 작업을 중단한채로 I/O가 끝날 때까지 대기하는 방식을 의미한다. 
    • I/O가 호출되면 제어권을 가져가서 애플리케이션이 멈춘다.
  • Non Blocking I/O: A함수가 I/O 작을 호출했을 때, I/O 작업이 완료될 때까지 A함수의 작업을 중단하지 않고 I/O 호출에 대해 즉시 리턴하고 A함수가 이어서 다른 일을 수행하도록 하는 방식을 의미한다. 
    • I/O가 호출되면 결과를 즉시 반환하고 I/O가 완료될 때까지 대기하지 않는다. 제어권을 애플리케이션이 가지고 애플리케이션은 계속 동작한다. 
    • Non Blocking는 처리가 완료되지 않으면 에러를 회신하고 블록 상태로 만들지 않는 반면에 비동기 I/O는 처리를 바로 회신할 수 없을 때 처리가 완료되는 시점까지 백그라운드에서 대기하고 종료한 타이밍을 회시하는 차이가 있다. 

 

 

Synchoronous vs ASynchoronous 

  • 호출되는 함수의 작업 완료 여부에 따라 이어지는 작업을 누가 처리하느냐에 따라 구분한다. 
  • synchoronous: 동기를 의미한다. 
    • 모든 요청, 응답이 일련의 순서를 따른다. 
  • Asynchoronous: 비동기
    • 요청을 보냈을 때 응답 상태와 관련 없이 다음 동작을 수행한다. 
    • 작업 순서가 보장되지 않는다. 

 

 

참고) 

https://etloveguitar.tistory.com/140