공부해서 남 주자

반응형

 

데이터를 받는 방식인 동기와 비동기. 이 둘의 개념에 대해 설명하는 게시물은 매우 많은데 프로그래밍적으로 생각했을 때 이해가 가지 않아서 쉽게 이해를 할 수 있는 동기와 비동기의 예가 어떤것들이 있는지 검색을 해봤습니다.

 

 

동기(synchronous : 동시에 일어나는)

 - 동기는 말 그대로 동시에 일어난다는 뜻입니다. 요청과 그 결과가 동시에 일어난다는 약속인데요. 바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 합니다.

  • 요청과 결과가 한 자리에서 동시에 일어남
  • A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞추겠다.

 

 

비동기(Asynchronous : 동시에 일어나지 않는)

 - 비동기는 동시에 일어나지 않는다를 의미합니다. 요청과 결과가 동시에 일어나지 않을거라는 약속입니다. 

  • 요청한 그 자리에서 결과가 주어지지 않음
  • 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.

 

 

 동기와 비동기는 상황에 따라서 각각의 장단점이 있습니다. 

 동기방식설계가 매우 간단하고 직관적이지만 과가 주어질 때까지 아무것도 못하고 대기해야 하는 단점이 있고, 

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

 

 

 

 

동기방식의 예(A가 B에게 10,000원을 송금)

1. A의 계좌는 10,000원을 뺄 생각을 하고 있다.

2. A의 계좌가 B의 계좌에 10,000원을 송금한다.

3. B의 계좌는 10,000원을 받았다는 걸 인지하고, A의 계좌에 10,000원을 받았다고 전송한다.

4. A, B 계좌 각 각 차감과 증가가 동시에 발생하였다.

 

순서를 보면 아시겠지만 A의 계좌와 B의 계좌는 서로 요청과 응답(1~3과정)을 확인한 후 같은 일을 동시에 진행하였습니다. (4번 과정) '계좌이체'같은 작업은 동기방식으로 처리해야 A에서 보냈는데 B는 못받는 상황이 없겠죠?

 

 

반대로 비동기방식은 위의 예제처럼 노드사이의 작업 처리 단위를 동시에 맞추지 않아도 됩니다.

 

비동기방식의 예(시험날의 학생과 선생)

1. 학생은 시험문제를 푼다

2. 시험문제를 모두 푼 학생은 선생님에게 전송한다.

3. 선생은 학생의 시험지를 채점한다.

4. 채점이 다 된 시험지를 학생에게 전송한다.

5. 학생은 선생이 전송한 시험지를 받아 결과를 확인한다.

 

 

 

 

 

 

학생과 선생은 시험지라는 연결고리가 있지만 시험지에 행하는 행위(목적)은 서로 다릅니다. 학생은 시험지를 푸는 역할을 하고 선생은 시험지를 채점하는 역할을 하였습니다. 서로의 행위(목적)가 다르기때문에 둘의 작업 처리 시간은 일치하지 않고, 일치하지 않아도 됩니다.

 

 

 

 


 

동기와 비동기는 어떤 작업 혹은 그와 연관된 작업을 처리하고자 하는 시각의 차이입니다.

동기는 추구하는 같은 행위(목적)가 동시에 이루어지며, 비동기는 추구하는 행위(목적)가 다를 수도 있고, 동시에 이루어지지도 않습니다.


비동기 방식 예제를 통해서 블록과 논블록의 차이를 간략하게 설명하자면, 학생이 시험지를 선생에게 건넨 후 가만히 앉아 채점이 끝나서 시험지를 돌려받기만을 기다린다면 학생은 블록 상태입니다. 하지만 학생이 시험지를 건넨 후 선생에게 채점이 완료되었다는 전송을 받기 전까지 다른 과목을 공부한다거나 게임을 한다거나 다른 일을 하게 되면 학생의 상태는 논블록 상태라고 합니다.

 

 

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.

비밀글모드

  1. 이전 댓글 더보기
  2. 김옥지
    와 대박 정리 너무 잘되있어요~
    2019.01.11 13:52
  3. 좋은 정보 감사드립니다. 덕분에 이해했습니다!
    2019.01.22 22:50 신고
  4. 감자감자
    좋은글 감사.
    2019.02.11 17:23
  5. 횽디
    와 너무 이해 잘돼요 감사합니다!!
    2019.02.26 00:52
  6. JJung
    감사합니다 !! 이해가 바로 됐어요ㅎㅎ
    2019.03.28 16:03
  7. ㄳㄳ
    감사합니다!! 이제야 개념이 조금 머릿속에 그려지네요
    2019.04.21 18:17
  8. 감사합니다
    잘 읽었습니다^^
    그럼 동기식은 블록 상태고,
    바동기식은 논 블록 상태인건가요??..^^;;
    2019.07.11 10:12
  9. 설명 너무 좋아요! 감사합니다!
    2019.12.05 09:42 신고
  10. 지식에 감탄하고 갑니다~
    2020.02.10 09:13 신고
  11. 이거였구나... 감사합니다.
    2020.09.04 11:47
  12. 와 이해 정말 잘 돼요

    감사드려요!
    2020.10.12 15:54
  13. 글보고 이해 잘하고 갑니다 !!
    좋은글 감사드려요
    2020.11.21 22:33
  14. 척척박사님 감사합니다
    2021.01.07 18:08 신고
  15. 다른 사이트에서는 너무 어렵게 설명해서 이해하기 어려웠는데, 설명을 이해하기 쉽게 예시를 들어 주셔서 감사합니다.
    2021.01.25 10:53 신고
  16. 너무 이해가 잘됩니다. 감사합니다!
    2021.02.11 12:23 신고
  17. ㅠㅠ★★
    2021.02.18 14:56
  18. zzz
    굿
    2021.02.18 14:57
  19. asas
    크롬이 자동화된 프로그램에 의해 제어되고 있습니다. 라고 뜨면서
    프로그램이 강종됩니당....... 어떻게 해야하나요 ㅠㅠ
    2021.02.20 02:50
    • 어떤 프로그램을 사용하시는지, 프로그램이 어디까지 작업을 한 뒤에 종료되었는지 등등 정확한 상황을 알려주셔야 제가 조금이라도 에러에 대해 파악할 수 있습니다ㅠ 말씀하신 “크롬이 자동화된 프로그램에 의해 제어되고 있습니다. “ 는 에러는 아니고 자동화 작업을 할 때 사용하는 크롬이라서 출력됩니다~!
      2021.02.20 02:54 신고
  20. asas
    자동화 작업 할 때 출력되는거 확인했습니다. 꺼지는 이유를 알아냈는데,
    맨 처음 로그인을 하기위해 크롬브라우저 인스타 홈페이지에서
    아이디와 비밀번호가 자동으로 입력되고, 프로그램은 제가 제시한 헤시테그들을 보여주며
    작업을 시작하는 것 같더니, 프로그램이 인스타 홈페이지에서 뭘 눌렀는지

    "죄송합니다. 페이지를 사용할 수 없습니다."
    클릭하신 링크가 잘못되었거나, 페이지가 삭제되었습니다. Instagram으로 돌아가기.

    라는 페이지로 바뀌고, 프로그램은 그 후 아무런 인식을 못하는지 자동종료됩니다.
    2021.02.20 03:48
    • 그래서 제가 수동으로 첫 페이지에서 이것 저것 눌러봤는데 프로그램이 뭘 눌렀는지 찾을 수 가 없네요..ㄷㄷ 누를만한거 다 눌러봐도 죄송합니다. 페이지를 찾을 수 없습니다. 라는 페이지로 넘어가지 않습니다.
      2021.02.20 03:50
    • 태그는 한개만 등록 가능합니다! 여러개 입력하셔도 한 개의 태그로 인식하기 때문에 해당 태그로 페이지를 찾을 수 없어 에러가 발생하게 됩니다. 참고하시길 바랍니다!
      2021.02.20 03:51 신고
    • 앗, 그렇군요! 그렇다면 그게 문제일 수 있겠네요. 다시 해보겠습니다.
      2021.02.20 03:51
  21. asas
    감사합니다. 원인은 해시태그를 십여개 넣었더니 나타나는 현상이었습니다.
    정상적으로 작동합니다.
    2021.02.20 03:59
    • 넵. 잘 사용하시길 바랍니다~!😊
      2021.02.20 04:00 신고
loading