분산 컴퓨팅 1. 분산 컴퓨팅이란 무엇인가?

    들어가기 전

    • 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 

     


    요약

    • 분산된 서버들끼리 네트워크 상에서 메세지를 주고 받으며 작업하는 것을 분산 컴퓨팅이라고 함. 
    • 비동기 통신은 네트워크를 통해서 보내진 메세지가 정해진 시간 내에 상대 서버에 전달되는 것을 보장할 수 없음을 의미함. 
    • 비동기 통신으로 메세지를 주고 받는 두 서버는 완전한 합의에 이를 수 없음. (무한히 상대방의 응답을 기다림) 

     


    두 장군 이야기

    실생활에서 일어날 법한 분산 컴퓨팅 관련 예시를 공부해보자.

    1. A장군 / B 장군 / 적이 존재함
    2. A장군 / B 장군은 협공해야 적을 섬멸시킬 수 있음. 

    A장군 / B장군은 적을 섬멸하기 위해 반드시 협공을 해야한다. 전화 같은 것이 없기 때문에 사람을 보내 '협공 요청'을 보내고 '협공 응답'을 받아야만 협공을 할 수 있는 상태가 된다. 

    여기서 문제가 발생할 수 있는 부분은 다음과 같다. 

     

    A 장군의 협공 요청

    A 장군이 협공 요청을 했을 때 다음 경우가 발생할 수 있다. 

    • A → B : 메세지 정상 전달. 응답도 받음.
    • A → B : 메세지 정상 전달. 응답 받지 못함.
    • A → B : 메세지 전달 X. 응답 받지 못함.

    이런 세 가지 경우가 존재한다. 

     

    B 장군의 협공 응답

    • B → A : 메세지 정상 전달. 
    • B → A : 메세지 전달 X

     

    현재 상태의 메세지 전달 문제점은 무한히 재귀하며 아무런 일도 할 수 없다는 점이다. 아래 경우를 고려해보자. 

    • A  → B : 메세지 정상 전달. 응답 받지 못함

    이 경우에 A는 B가 협공에 응할 것이라고는 상상할 수 없다. 왜냐하면 B로부터 어떠한 응답도 받지 못했기 때문이다. B의 관점에서도 마찬가지인데, B 역시 A로부터 협공 응답 메세지를 받았다는 것을 확신할 수 없다. B → A로 메세지를 보냈을 때, A → B로 응답이 오지 않았다면 A가 메세지를 정확히 받았는지 알 수 없기 때문이다. 

    결론적으로 응답을 보냈을 때, 상대로부터 응답을 받지 못한다면 상대가 정상적으로 메세지를 받았는지를 확신할 수 없다. 따라서 A, B 장군은 서로의 응답만 기다리며 무한히 메세지를 보내는 상태가 된다. 

     


    분산 컴퓨팅의 정의

    분산 컴퓨팅도 위와 유사한 상태가 된다. 서버는 네트워크를 통해 서로 통신하게 되는데, 상대 서버에 메세지를 보냈을 때 상대 서버가 받았을 수도 있고 받지 못했을 수도 있다. 

    • 서버는 네트워크를 이용해 비동기적으로 통신함. 
    • 상대 서버는 메세지를 받았을 수도 있고, 받지 못했을 수도 있음. 

    이것이 분산 컴퓨팅의 일반적인 특성인데, 이 특성은 분산 컴퓨팅을 더욱 이해하기 어렵게 만든다. 

    댓글

    Designed by JB FACTORY