Groo

동기와 비동기에 대해서 본문

프로그래밍 기초/Etc

동기와 비동기에 대해서

김주엽 2020. 4. 8. 13:30

안녕하세요, 오늘은 프로그래밍 관련 내용으로 여러분들에게 소개하려고합니다.
첫 번째 내용은 프로그래밍에서 데이터를 처리하는 두 가지 모델 동기와 비동기에 대해서 이야기하겠습니다.

🧑🏻‍💻 데이터 처리 모델

데이터 처리 모델을 쉬운 말로 표현한다면 데이터를 받는 방식이라고 할 수 있습니다. 이 방식에서는 동기식 처리 모델과 비동기식 처리 모델이 존재합니다. 이에 대해 설명하는 게시물은 수 없이 많습니다. 그러나 저만의 방식으로 기억을하기 위해 글을 작성합니다.

🥇 동기식 처리 모델

동기식 처리 모델은 데이터의 요청과 결과가 한 자리에서 동시에 일어납니다. 간단히 말해 사용자가 데이터를 서버에게 요청한다면 그 서버가 데이터 요청에 따른 응답을 사용자에게 다시 리턴해주기 전까지 사용자는 다른 활동을 할 수 없으며 기다려야만합니다.

 

동기식 처리 모델에 관한 예시 이미지입니다

자주 사용하는 크롬 브라우저를 실행시키는 시간이 약 10분이 소모된다고 생각해봅시다. 크롬 브라우저가 오픈되는 약 10분이라는 시간 동안 저희는 컴퓨터의 다른 프로그램들을 동작시키지 못하며 크롬 브라우저가 켜지는 그 순간만을 계속 기다려야한다는 것입니다. 이 시간이 10분이든 100분이든 관계없이 한 개의 데이터 요청에 대한 서버의 응답이 이루어질 때까지 계속 대기해야만합니다.

🥈 비동기식 처리 모델

비동기식 처리 모델은 동기식 처리 모델과는 반대로 데이터의 요청과 결과가 동시에 일어나지 않습니다. 서버에게 데이터를 요청한 후 요청에 따른 응답을 계속 기다리지 않아도되며 다른 외부 활동을 수행하여도되고 서버에게 다른 요청사항을 보내도 상관없습니다.

 

비동기식 처리 모델에 관한 예시 이미지입니다.

위의 사진과 같이 크롬 브라우저가 열리기 전까지 사파리, 안드로이드 스튜디오 등 다양한 작업들을 서버의 요청에 따른 결과에 신경쓰지 않고 자유롭게 프로그램들을 수행할 수 있습니다. 즉 서버의 요청에 따른 결과를 오랜 시간 동안 기다릴 필요가없다는 것이죠,

🥉 두 모델의 장점과 단점

동전에 앞면과 뒷면이 존재하듯이 두 모델 또한 장점과 단점이 존재하는 것은 당연한 것입니다. 동기는 추구하는 행위와 목적이 동시에 일어나며 비동기는 추구하는 행위와 목적이 동시에 일어나지 않는 것이라고 정리할 수 있습니다. 아래의 장단점을 보시죠!

 

동기식 처리 모델의 장점과 단점

장점 : 설계가 매우 간단하고 직관적입니다.

단점 : 요청에 따른 결과가 반환되기 전까지 아무것도 못하고 대기해야합니다.
비동기식 처리 모델의 장점과 단점

장점 : 요청에 따른 결과가 반환되는 시간 동안 다른 작업을 수행할 수 있습니다.

단점 : 동기식보다 설계가 복잡하고 논증적입니다.

🎖 블록과 논블록의 차이

블록과 논블록의 차이에 대해서 간단히 설명을하고 마치도록 하겠습니다. 아래의 사진과 같이 크롬 브라우저가 요청한 서버로부터 결과가 반환되기 전까지 사파리, 파인더, 안드로이드 스튜디오 등은 계속 대기를하고 있으며 이와 같은 상황이 블록 상태라고 부릅니다.

 

동기식 처리 모델에서의 블록 상태에 관한 예시 이미지입니다.

반면에 비동기식 처리 모델에서는 크롬 브라우저가 요청한 서버로부터 결과가 반환되기 전까지 파인더, 안드로이드 스튜디오 등 다양한 프로그램들은 이 시간을 대기하지 않고 제약 없이 자유롭게 사용하고 이용할 수 있는 상황을보고 논블록 상태라고 부릅니다.

 

비동기식 처리 모델에서의 논블록 상태에 관한 예시 이미지입니다.

👍 글을 마치며

오늘은 데이터 처리 모델인 동기와 비동기에 대해서 알아보았으며 이에 대한 간단한 예시와 블록, 논블록 상태에 대해서 또한 공부하였습니다. 앞으로 프로그래밍 관련 카테고리에서는 프로그래밍에서 공통적으로 요구하는 지식에 대해서 작성할 예정이며 이전에 작성한 글들보다는 조금 더 간단하게 구성할 것입니다. 필자가 적은 글을 읽는 독자들이 이해하기 쉽게 작성하도록 노력하겠습니다.

'프로그래밍 기초 > Etc' 카테고리의 다른 글

프레임워크와 라이브러리의 차이  (2) 2020.04.09
Comments