동기 (Synchronous),
비동기 (Asynchronous) 란 무엇인가?
동기 (Synchronous)
--
동기식은
어떠한 행동을 하고 해당 행동에 대한 응답(결과)를 확인한 후 그 다음 행동을 진행하는 것이다.
그리고 여러개의 요청을 순차적으로 진행하게 된다.
--
비동기 (Asychronous)
--
비동기식은 동기식과 다르게
어떠한 행동을 하고 해당 해동에 대한 응답(결과)를 확인하지 않고 바로 다음 행동을 진행하는 것이다.
그리고 여러개의 요청을 순차적으로 진행하지 않는다.
--
동기식과 비동기식의 장단점
--
동기식은
어떠한 행동에 대해 응답이 올 때까지 기다리다가 응답을 확인하고 그 다음 동작을 수행하기 때문에
응답이 올 때까지는 아무것도 하지 않고 가만히 있는 단점이 있지만
결과를 확실하게 확인하고 해당 결과에 따라 다음 작업을 안심하고 수행할 수 있다.
이 말은 만약 해다 요청에 따라 오류가 발생하게 되면 처리 후 다음 행동을 안전하게 수행할 수 있다는 것이다.
이러한 방식은 매우 간단하고 직관적으로 설계할 수 있다는 장점이 있다.
비동기식은
어떠한 행동에 대해 응답을 확인하지 않고 바로 다음 동작을 수행한다.
이는 동시에 여러 개의 요청(행동)을 처리할 수 있어 자원을 효율적으로 사용할 수 있는 장점이 있지만
수행한 행동에 대해 상대방이 잘 받았는지, 잘 수행했는지 등 결과를 확인할 수가 없다.
그래서 비동기식은 비동기식으로 수행을 하되 결과를 확인할 수 있도록 하는 프로세스를 추가하거나
다른 방법으로 해당 단점을 그나마 보안할 수 있도록 설계를 해야해서 동기식보다는 설계가 복잡할 수 있다.
그러면 효율적으로 작업을 하면서도 결과를 확인할 수 있게 된다.
정리
- 동기식 : 업무가 단순하다는 장점이 있지만 자원을 비효율적으로 사용하게 된다.
- 비동기식 : 자원을 효율적으로 사용한다는 장점이 있지만 업무가 복잡해질 수 있다.
--
업무가 조금 복잡해지더라도 효율이 좋은 비동기식으로만 설계하면 되는거 아닌가?
--
동기식과 비동기식은 무조건 적으로 무엇이 좋다고 확정할 수는 없다.
설계해야 하는 방식에 따라서 동기식이 좋을 수 있고 비동기식이 좋을 수도 있다.
예시
10,000원 짜리 지폐를 가지고 있는 사람이
A가게에서 3,000원 짜리 상품을 구매하고
B가게에서 5,000원 짜리 상품을 구매하려고 한다.
이를 비동기식으로 구현해보자.
이를 비동기식으로 구현하면 에러가 발생한다.
이처럼 결과를 확인한 후 다음 요청을 보내야 하는 경우가 있다.
(요청 후 응답(결과)가 다음 요청에 영향이 있는 경우)
이러한 경우에는 비동기식보다는 동기식을 사용하는 것이 올바르다.
이렇게 동기식과 비동기식 중에서 뭐가 더 좋다 나쁘다를 판단하는 것이 아니라
상황에 알맞는 방식을 사용해야 한다.
--
블록킹(Blocking)과 논-블록킹(Non - Blocking)
--
블록킹 (Blocking)은
응답을 기다리는 것을 의미한다. (대기 상태)
A가 B에게 요청을 보내고 B로부터 응답을 기다리는 A를 블록킹(Blocking)상태라고 부른다.
논-블록킹 (Non - Blocking)은
응답을 기다리지 않는 것을 의미한다. (대기X 상태)
A가 B에게 요청을 보내고 B로부터 응답을 기다리지 않고 다음 동작을 하는 A를 논-블록킹(Non - Blocking)상태라고 부른다.
--
'Terminology' 카테고리의 다른 글
SOLID 원칙 ( 객체 지향 설계 원칙) (1) | 2024.10.26 |
---|---|
객체지향 프로그래밍 (OOP, Object-Oriented Programming) (0) | 2024.10.25 |
CI / CD 파이프라인 (0) | 2024.07.05 |
DevOps (Development Operations) 란? (0) | 2024.07.04 |
네트워크란? (feat. IP, 네트워크 인터페이스, 포트, NAT, 포트포워딩, DNS) (0) | 2024.06.23 |