뭐? 요청을 보냈는데 기다리라고?? 킹받네;

Hyune·2022년 4월 20일
16
post-thumbnail

동기? 비동기?

우리는 모두 데이터를 처리하기 위해 동기 방식과 비동기 방식을 사용합니다. 그런데 정확히 동기는 무엇이고 비동기는 무엇일까요?

동기

동기란 말 그대로 동시에 일어난다는 뜻입니다. 요청(Request)을 보내면 그에 해당하는 결과(Response)가 동시에 일어난다는 약속이죠. 때문에, 시간이 얼마나 걸리던 요청한 자리에서 결과가 주어져야 합니다.

비동기

비동기란 동시에 일어나지 않는다는 의미입니다. ‘요청한 결과는 동시에 일어나지 않을거라는 약속’이죠.

동기와 비동기는 왜 쓸까? 🔎

그렇다면 이러한 동기와 비동기는 왜 쓰는 것일까요?
동기와 비동기는 상황에 따라 각각 장단점이 존재합니다.

동기방식은 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지는 아무 작업을 못하고 대기해야만 하는 단점이 있습니다.

비동기 방식은 동기보단 구조가 복잡하지만 결과가 주어지는데 많은 시간이 걸리더라도 그 시간 동안 다른 작업을 병행 할 수 있으므로 효율적으로 사용할 수 있는 장점이 있습니다.

예시로 보는 동기와 비동기 ⏳

동기 ⏸

현재 제가 A에게 돈을 송금하려고 합니다.

저는 A의 계좌번호를 확인한 후 6700원을 송금합니다.

A는 계좌에 돈이 송금되었다는 것을 확인한 후 돈을 받았다고 답장합니다.

순서를 보면, 저와 A는 송금(요청)과 응답을 확인하며 같은 일을 동시에 진행하였습니다. 계좌이체같은 작업은 위와 같은 동기방식으로 처리해야 A에게 돈을 보냈는데 받지 못하는 상황이 없을 것입니다.

비동기 ⏺

A는 동아리 시간이 기다려집니다. 회식이 기다리고 있기 때문입니다.
배달을 담당하기로 한 A는 배달앱에서 피자를 시킵니다.

주문 요청을 받은 피자가게는 즉시 피자를 굽습니다.

피자를 맛있게 굽고 배달 준비를 모두 마친 피자가게는 배달을 출발합니다.
... (20분 후) 피자가 도착했습니다! 맛있게 먹기만 하면 되겠네요.

A와 피자가게는 “피자”라는 link가 있지만 피자에 행하는 목적은 서로 다릅니다. A는 피자를 배달시키는 역할을 하고, 피자가게는 피자를 굽고 배달하는 역할을 합니다. 서로의 목적은 다르기에 둘의 작업 처리기간은 일치하지 않으며, 일치하지 않아도 됩니다.

정리하며 📝

이번 글에서는 sync / async 대한 개념을 짚어보았습니다. 동기와 비동기는 정말 중요한 부분이니 꼭 직접 공부해보시길 추천드립니다 😉

profile
개발자는 개팔자다.

0개의 댓글