동기와 비동기에 대해 알아보자

동기 vs 비동기

데이터 처리 모델

데이터 처리 모델이란, 데이터를 받는 방식에 대한 것이다. 데이터 처리 모델에는 동기식 처리와 비동기식 처리가 존재한다.

동기식 처리 (Synchronous)

동기 방식이란 요청과 결과가 동시에 일어나는 방식으로, 요청을 보낸 후 응답을 받아야 다음 동작이 진행된다.

사용자가 서버에 요청을 보냈을 경우, 응답을 받기 전까지는 아무것도 할 수 없다.

[장단점]

  • 설계가 간단하고, 직관적이다.
  • 요청에 대한 결과가 반환될 때까지 대기해야 한다.

비동기식 처리 (Asynchronous)

비동기 방식이란 요청과 결과가 동시에 일어나지 않는 방식이다.

요청한 곳에 결과가 나타나지 않으며, 사용자가 서버에 요청을 보냈을 경우 요청에 대한 응답을 기다리지 않고 다른 것을 수행하면서 또 서버에 요청을 보낼 수 있다.

비동기 요청 시 응답 후 처리할 ‘콜백 함수’를 함께 일러준다. 따라서 해당 요청에 대한 응답이 완료됐을 때, ‘콜백 함수’가 호출된다.

[장단점]

  • 요청에 대한 결과가 반환되기 전에 다른 작업을 수행할 수 있어서 자원을 효율적으로 사용할 수 있다.
  • 동기 방식보다 설계가 복잡하다.

golang에서 비동기식 처리는 고루틴(Goroutine)을 통해 처리할 수 있다. 다음 포스팅에서는 고루틴에 대해 더 자세히 알아보고자 한다.