검수요청.png검수요청.png

마스터-슬레이브

위키원
jh8983 (토론 | 기여)님의 2020년 8월 14일 (금) 15:57 판
이동: 둘러보기, 검색

마스터-슬레이브(master-slave)는 하나 이상의 장치 또는 프로세스(마스터)가 하나 이상의 다른 장치 또는 프로세스(슬레이브)를 제어하는 통신 프로토콜의 모델이다.

개요

마스터-슬레이브에서 마스터, 슬레이브의 사전적 의미는 마스터(Master)는 주인, 지배자, 슬레이브(Slave)는 노예, 종속 장치를 의미한다. 원래는 소프트웨어나 하드웨어에서 한 장치(마스터)가 다른 장치(슬레이브)를 제어할 수 있을 때 사용하는 용어이지만, 인종차별적인 의미를 지니어서 본래의 언어를 없애고 중립적인 단어로 전환하라는 문제가 제기됐다. 마스터를 메인(Main)이나 프라이머리(Primary)로, 슬레이브를 세컨더리(Secondary)나 레플리카(Replica) 등으로 대체하려는 방안이 등장하고 IT 업계에서도 빠르게 확산하고 있다. 마이크로소프트, 안드로이드, 제이피모건, 깃허브, 애플 등 여러 기업에서 차별적 언어를 없애는 기술 기업 명단에 이름을 올리고 있다.[1]

활용

마스터-슬레이브는 마스터가 슬레이브에 내리는 명령은 무조건 실행되고 슬레이브가 마스터에게 하는 요청은 상황에 따라 마스터가 선택할 수 있는 것을 말하는 용어로 마스터-슬레이브 기술이 들어간 기술에는 여러 종류가 있다.

프로그램

일반적으로 채널은 마스터 및 슬레이브의 두 프로그램과 연관되어 있다. 슬레이브 프로그램은 다른 시스템에서 메시지를 수락하고 채널의 메시지 대기열에 추가한다. 마스터 프로그램은 채널에서 다른 시스템으로 메시지를 전송하는데 예를 들어, 간이 우편 전송 프로토콜(SMTP, simple mail transfer protocol) 채널은 메시지를 전송하는 마스터 프로그램과 메시지를 받는 슬레이브 프로그램을 갖는다. 이 프로그램은 각각 간이 우편 전송 프로토콜 클라이언트와 서버이다. 마스터 채널 프로그램은 일반적으로 MTA가 작업을 시작했던 보내는 연결을 담당한다. 마스터 채널 프로그램에서는 처리를 위해 로컬 요청에 응답하여 실행된다. 채널 메시지 대기열에서 메시지를 빼고 대상 형식이 대기열에 넣은 메시지의 형식과 같지 않으면 필요에 따라 주소, 헤더 및 내용 변환을 수행하게 된다. 그리고 메시지의 네트워크 전송을 시작한다. 슬레이브 채널 프로그램은 일반적으로 MTA가 외부 요청에 응답하는 받는 연결을 수락한다. 슬레이브 채널 프로그램에서는 외부 이벤트에 응답하거나 로컬 요청에 따라 실행되고, 메시지를 채널의 대기열에 넣는다. 다시 쓰기 규칙을 통해 봉투 주소를 전달하는 방법으로 대상 채널이 결정된다. 예를 들어 두 개의 채널 프로그램이 있다고 가정했을 때, 슬레이브 프로그램이 원격 시스템으로부터 메시지를 받아 주소가 맞는지 확인하고 필요에 따라 다시 쓰기 규칙을 적용한 다음, 다시 작성된 주소에 기초하여 해당 채널 메시지 대기열에 미시지를 포함한다. 마스터 프로그램은 대기열에서 메시지를 제외하고 메시지의 네트워크 전송을 한다. 마스터 프로그램은 자신의 채널 대기열에서만 메시지를 제외할 수 있다.[2]

통신 시스템

단일 내부 통신 회로와 여러 개의 슬레이브 통신 회로가 있는 마스터 스테이션 간에 시스템에서 요구하는 대로 마스터 스테이션과 여러 개의 슬레이브 스테이션 간에 데이터가 교환되는 장치 내부 또는 장치 사이의 데이터 통신 시스템. 전송 데이터에 배열된 전송 데이터는 전송 데이터 액세스 채널을 통해 마스터 스테이션과 여러 슬레이브 스테이션 사이에 교환되어 최소의 신호 채널을 통해 최소의 유효 데이터 통신을 얻는다. 슬레이브 방송국의 복수형은 송신 데이터 다중 접속 프레임의 전용 하위 채널에 배열된 상태 신호를 생성하고 전송 데이터 다중 접속 프레임의 공통 하위 채널에 우선 전송을 위한 전송 데이터를 발행하는 통신 장치를 포함한다. 스테이션에는 데이터 전송을 제어하고, 각 슬레이브 스테이션에서 여러 상태 신호 중 하나를 선택하고, 선택된 상태 신호 중 하나에 따라 여러 슬레이브 스테이션 중 하나에 우선 전송을 할당하는 우선순위 결정 장치가 있다. 이를 통해 시스템은 데이터의 장거리 전송을 달성할 수 있다. 그리고 마스터-프로토콜 데이터 통신 시스템에서 가장 적은 수의 데이터 신호 라인과 더 낮은 데이터 비트 전송률로 효과적인 데이터 통신을 달성할 수 있다.[3]

블루투스

블루투스(Bluetooth)는 근거리 무선통신 규격의 하나로, 2.45GHz 주파수를 이용하여 반경 10~100m 범위 안에서 전자, 정보통신 기기를 무선으로 연결 제어하는 기술을 말한다. 블루투스 네트워크(피코넷)는 마스터-슬레이브 모델을 사용하여 하나의 마스터 장치가 다수의 슬레이브 장치와 연결될 수 있다. 피코넷에 연결되는 슬레이브 장치는 오직 하나의 마스터 장치에만 연결이 가능하다. 마스터 장치는 피코넷을 통해 통신을 조율한다. 마스터 장치는 연결된 어떤 슬레이브 장치든 데이터를 전송할 수 있고, 요청을 보낼 수도 있다. 하지만 슬레이브 장치는 마스터와 데이터를 교환할 수 있지만 슬레이브 간 통신은 할 수 없다.[4]

로봇

사람이 가지 못하는 장소를 탐험하거나 위험한 상황이 닥쳤을 때 사람 대신 로봇을 활용하여 어려운 상황을 극복하는 사례가 점점 증가하고 있다. 2020년 기준 전 세계적인 팬더믹을 일으킨 코로나19로 인해 사람과 사람 간의 대면이 힘든 상황이 발생하기 시작했다. 특히 환자들의 상태를 직접 보고 진찰해야 하는 의사들이 많은 사람과 접촉하게 되면서 전염병에 걸리는 사례가 늘어나고 있어 상황이 나빠지고 있다. 그러다 최근 의료진의 감염을 예방할 수 있는 비접촉 검체 검진 로봇이 개발되어 환자와 직접 접촉하지 않고도 진료가 필요한 검사 대상을 원격으로 채취할 수 있게 되었다. 멀리 떨어진 상태에서 감염 의심 환자의 콧속이나 목젖 등 상기도에서 검체를 채취할 수 있고 음성과 영상으로 통신할 수 있는 기능을 탑재해 환자의 코와 입의 위치를 카메라로 확인하면서 로봇을 직접 작동해 환자의 상태를 파악하고 그에 따른 의료진의 감염 위험을 크게 줄일 수 있다는 것이다.[5]

주종 플립플롭

주종 플립플롭(Master Slave flip flop)은 기본적으로 두 개의 JK플립플롭이 직렬 구성으로 서로 연결된 조합이다. 이 중 하나는 마스터 역할을 하고 다른 하나는 슬레이브 역할을 한다. 마스터 플립플롭의 출력은 슬레이브 플립플롭의 두 입력에 연결되며, 슬레이브 플립플롭의 출력은 마스터 플립플롭의 입력에 다시 공급된다. 두 개의 플립플롭 외에도 회로에는 인버터가 포함된다. 인버터는 반전 클록 펄스가 슬레이브 플립플롭에 주어지는 방식으로 클록 펄스에 연결된다. 즉, 마스터 플립플롭의 경우 CP=0, 슬레이브 플립플롭의 경우 CP=1이 되고 반대로 마스터 플립플롭의 CP가 1이면 슬레이브 플립플롭의 경우 0이 된다.

클록 펄스가 1이 되면 슬레이브는 고립된다. J와 K 입력은 시스템 상태에 영향을 미칠 수 있다. 슬레이브 플립플롭은 CP가 0이 될 때까지 격리되고 CP가 0으로 돌아가면 마스터 플립플롭에서 슬레이브로 정보가 전달되고 출력을 얻는다. 먼저 마스터 플립플롭은 양의 레벨로 트리거 되고 슬레이브 플립플롭은 음의 레벨로 트리거 되므로 마스터는 슬레이브 앞에서 응답한다. 만약 J=0과 K=1이 되면 마스터의 높은 Q' 출력이 슬레이브의 K 입력으로 가고 시계가 강제로 슬레이브를 리셋하게 하여 슬레이브가 마스터를 복사한다. J=1과 K=0일 경우 마스터의 높은 Q 출력은 슬레이브의 J 입력으로 가고 시계의 네거티브 전환은 마스터를 복사하여 슬레이브를 설정한다. J=1과 K=1이면 시계의 양전환을 토글하여 슬레이브도 시계의 음전환을 토글한다. J=0과 K=0일 경우 플립플롭이 비활성화되며 Q는 변경되지 않는다.

클록 펄스가 높을 때 마스터의 출력은 높으며 상태가 저장되기 때문에 클록이 낮을 때까지 높은 상태를 유지한다. 마스터의 출력은 클록 펄스가 다시 높아지면 낮아지고 클록이 다시 높아질 때까지 낮게 유지된다. 그러므로 토글링은 시계 사이클 동안 일어난다. 클록 펄스가 높을 때 마스터는 작동하지만, 슬레이브는 작동하지 않음으로 클록이 높게 유지될 때까지 슬레이브의 출력은 낮게 유지된다. 시계가 낮으면 슬레이브는 작동하게 되고 시계가 다시 낮아질 때까지 높은 상태를 유지하게 된다. 토글링은 출력이 주기마다 한 번씩 변화하기 때문에 전체 프로세스 중에 발생한다. 이는 마스터-슬레이브 J-K가 클록 신호의 타이밍으로 데이터만 전달하므로 동기식 장치가 뒤집히게 한다.[6]

종속 동기방식

상위국을 마스터, 하의국을 슬레이브로 하여 슬레이브가 마스터에게 클록(clock)을 공급받아 동기를 유지하는 망 동기방식이다.

단순 종속 동기 방식

단순 종속 동기 방식(SMS, Simple Master Slave)은 종속 동기방식 중 가장 간단한 구조로 되어 있는 형태로 하나의 주국과 다수의 종속국으로 구성된다. 주로 소규모의 성형 망에 적용되며 망 구성 형태가 간단하여서 안정도가 높지만, 신뢰도가 다소 떨어진다. 영향도 국부에 한하게 되고, 기준 클록이 여러 교환국으로부터 들어오기 때문에 신뢰성이 높다. 하지만 새로 교환국을 추가하거나 망을 추가하는 것이 어렵고 주위 환경에 따른 전체 망의 클록 주파수 및 위상이 변할 우려가 있다. 일부의 고장이 망 전체에 영향을 미칠 수 있고 많은 타이밍 링크를 관리해야 한다.

계층 종속 동기 방식

계층 종속 동기 방식(HMS, Hierarchical Master Slave)은 국의 계층에 따라 상위 계층에서 하위 계층으로 기준 클록을 공급해주는 형태로 하위국 클록은 상위국의 클록에 종속되고 상위국의 클록보다 정확도가 높을 필요가 없다. 단순 종속 동기 방식보다 발전한 형태로 뛰어난 신뢰성을 가지고 있어 단순 종속 동기 방식이 상위 주국의 동기링크가 고장이 나면 종속국은 자체 부 클록 원에 의존하여 다소 정확도가 떨어지는 것과 다르게, 상위 주국과 하위 종속국 간에 동기링크를 1차, 2차 등의 다수 링크로 구성하기 때문에 신뢰성이 뛰어난 방식이다.

팜스 방식

팜스 방식(PAMS, Preassigned Alternate Master Slave)은 단순 종속 동기 방식과 계층 종속 동기 방식의 장점을 결합한 것으로, 1차 동기링크가 고장이 나면 미리 정해진 우선순위에 따라 대기 중인 우회링크가 자동으로 동작하고, 주국의 클록이 고장 났을 경우 다음 계층의 2차, 3차 주국 순으로 클록을 공급하여 망 전체 동기를 맞추는 방식이다. 팜스 방식은 안정도, 신뢰성, 융통성이 매우 높지만, 관리 비용이 많이 든다는 단점이 있다.

셀프 오가 나이징 종속 동기 방식

셀프 오가 나이징 종속 동기 방식(Self-Organizing)은 동기방식 중 가장 발전된 형태로, 팜스 방식의 기능에 추가로 공통채널을 두어 동기링크가 고장 났을 경우 각 교환국에 양방향으로 제어 신호를 송수신하여 클록 분배망을 자동으로 재배열하는 방식이다. 셀프 오가 나이징 방식은 안정도와 신뢰성이 매우 높지만, 기준 클록으로 사용될 교환국의 계층과 순위, 교환국별 클록에 관련된 제반 사항, 기준 클록이 거치는 교환국의 수 등의 많은 정보를 송수신 하기 위한 공통채널을 별도로 구성해야 하므로 설치 비용이 많이 든다.[7]

복제

많은 개발자는 마스터-슬레이브 복제를 사용하여 성능 문제, 다양한 데이터베이스 백업 지원, 시스템 장애를 줄이기 위한 더 큰 솔루션의 일부 등 다양한 문제를 해결한다. 일반적으로 마스터-슬레이브 복제는 실제 서버에서 수행되지만 클라우드 데이터베이스 서버에서도 수행할 수 있다. 마스터-슬레이브 복제를 사용하면 한 데이터베이스 서버(마스터)의 데이터를 하나 이상의 다른 데이터베이스 서버(슬레이브)로 복제할 수 있다. 마스터는 업데이트를 기록하고, 그 업데이트는 슬레이브들에 전파된다. 슬레이브는 업데이트를 성공적으로 수신했다는 메시지를 출력하여 이후 업데이트를 전송할 수 있다. 마스터-슬레이브 복제는 동기식 복제이거나 비동기식 복제일 수 있다. 차이점은 단순히 변화의 전파 시기이다. 마스터와 슬레이브를 동시에 변경하면 동시에 변경된다. 변경 사항이 나중에 대기 열에 저장되고 기록되면 비동기식으로 처리된다.

마리아디비(MariaDB)의 복제를 예로 들면 스케일 아웃 솔루션-로드를 여러 슬레이브로 분산하여 성능을 향상한다. 이 환경에서는 모든 쓰기 및 업데이트가 마스터 서버에서 수행되어야 한다. 그러나 읽기 작업은 하나 이상의 슬레이브에서 수행될 수 있다. 이 모델은 쓰기 성능을 향상하는 동시에 점점 더 많은 수의 슬레이브에 대해 읽기 속도를 크게 높일 수 있다. 데이터 보안—데이터가 슬레이브로 복제되고 슬레이브가 복제 프로세스를 일시 중지할 수 있음으로 해당 마스터 데이터를 손상하지 않고 슬레이브에서 백업 서비스를 실행할 수 있다. 분석-마스터에서 실시간 데이터를 생성할 수 있으며, 마스터의 성능에 영향을 주지 않고 슬레이브에서 정보 분석을 수행할 수 있다. 장기 데이터 배포—지사에서 기본 데이터 복사본을 사용하려면 복제를 사용하여 마스터에 대한 영구적인 액세스 없이 사용할 수 있는 로컬 데이터 복사본을 만들 수 있다.[8]

백업

복제는 백업을 지원하는 데 가장 일반적으로 사용되지만, 복제만으로는 백업에 충분하지 않다. 마스터 서버의 하드웨어 장애에 대한 보호를 지원하지만, 데이터 손실은 보호하지 않는다. 우발적이거나 악의적인 DROP DATABASE 또는 TRIPCATE TABLE 문도 슬레이브에 복제된다. 마스터와 슬레이브 사이의 데이터가 동기화되지 않도록 주의해야 한다. 백업은 서버에 상당한 영향을 미칠 수 있으며 고가용성 마스터는 백업의 추가 로드를 중지하거나 잠그거나 처리할 수 없을 수 있다. 슬레이브에서 백업을 실행하면 주 서버에 영향을 미치지 않고 슬레이브를 종료하거나 잠그고 백업을 수행할 수 있다는 장점이 있다. 슬레이브 서버를 백업할 때 서버는 데이터를 동기화 상태로 유지해야 한다.[9]

스케일 아웃

스케일 아웃(Scale-out)은 복제를 스케일 아웃 솔루션으로 사용할 수 있다. 즉, 데이터베이스 쿼리 로드를 여러 데이터베이스 서버에 분산하여 합리적인 제한을 두어야 한다. 복제는 한 마스터의 배포에서 하나 이상의 슬레이브로 작동하므로, 스케일 아웃을 위한 복제는 읽기 횟수가 많고 쓰기 횟수가 적은 환경에서 가장 잘 작동한다. 대부분의 웹 사이트는 사용자가 웹 사이트를 검색하거나, 기사를 읽거나, 게시물을 보거나, 제품을 보는 이 범주에 속한다. 업데이트는 세션 관리 중에 또는 구매 또는 의견/메시지를 포럼에 추가할 때만 수행된다. 이러한 상황에서 복제를 통해 읽기 내용을 복제 슬레이브로 분산할 수 있으며, 쓰기가 필요할 때 웹 서버가 복제 마스터와 통신할 수 있다.

부하 분산

부하 분산은 단일 마스터가 있고 서로 다른 데이터베이스를 다른 슬레이브로 복제하려는 경우가 있을 수 있다. 예를 들어, 데이터 분석 중에 로드를 분산할 수 있도록 서로 다른 영업 데이터를 부서에 배포할 수 있다.

성능 항샹

마스터에 연결하는 슬레이브의 수가 증가함에 따라 각 슬레이브가 마스터에 대한 클라이언트 연결을 사용함에 따라 로드도 증가한다. 또한 각 슬레이브는 마스터 바이너리 로그의 전체 복사본을 수신해야 하므로 마스터에 대한 네트워크 부하가 증가하여 병목 현상이 발생할 수도 있다. 한 마스터에 연결된 많은 수의 슬레이브를 사용하고 있으며 해당 마스터도 처리 요청을 처리하느라 바쁜 경우 복제 프로세스의 성능을 개선하고자 할 수 있다. 복제 프로세스의 성능을 개선하는 한 가지 방법은 마스터가 한 슬레이브에만 복제하고 나머지 슬레이브는 개별 복제 요구 사항에 따라 이 기본 슬레이브에 연결할 수 있도록 보다 심층적인 복제 구조를 만드는 것이다.

페일 오버 완화

마스터와 슬레이브를 설정한 다음 마스터를 모니터링하여 설정되어 있는지 확인하는 스크립트를 작성할 수 있다. 그런 다음 애플리케이션과 슬레이브가 실패할 경우 마스터를 변경하도록 지시해야 한다.

보안

복제 중에 필요한 이진 로그 전송을 암호화하기 위해 SSL을 사용할 수 있지만 마스터와 슬레이브 모두 SSL네트워크 연결을 지원해야 한다. 두 호스트 중 하나가 SSL연결을 지원하지 않는 경우에는 SSL연결을 통한 복제가 불가능하다. SSL연결을 사용하여 복제를 설정하는 것은 SSL을 사용하여 서버 및 클라이언트를 설정하는 것과 유사하다. 각 슬레이브에 대해 마스터에서 사용할 수 있는 적절한 보안 인증서와(동일한 인증 기관에서)유사한 인증서를 얻거나 만들어야 한다.[8]

문제점

마스터-슬레이브의 가장 큰 문제점은 마스터-슬레이브의 기술이 아니라 용어에서 비롯된다. 마스터(주인)와 슬레이브(노예)의 관계는 인종차별적인 의미를 지니어서 오래전부터 용어를 바꾸자는 제안이 있었다. 하지만 개발자들 사이에서 용어를 바꿔야 한다는 의견과 불필요하다는 의견이 충돌하여 갈등을 빚고 있다가 2018년 파이썬 프로그래밍 언어 개발자들이 마스터-슬레이브의 용어를 삭제했고 이후 지속적으로 인종차별적인 용어를 퇴출하려는 목소리가 커지게 되면서 여러 기업에서 이를 실천하려고 노력하는 중이다. 인종차별 문제가 사회적으로 이슈가 되고 있자 반대로 블랙리스트나 화이트리스트 등 실질적으로 인종차별과는 아무런 상관없는 용어까지 바꿔야 한다는 주장이 나와 개발자들에게 비판을 받고 있다. 이러한 일방적인 업계 언어의 대체에 대해 포괄성이라는 것에 매몰돼 한 단어가 여러 의미를 가질 수 있다는 것을 무시하고 있다는 지적도 나오고 있다.[10]

각주

  1. 김명상 기자, 〈“마스터, 슬레이브” 안됩니다…IT업계 인종차별적 용어 ‘퇴출’ 움직임〉, 《bloter》, 2020-07-13
  2. 8.5.1 마스터 및 슬레이브 프로그램〉, 《docs.oracle》
  3. 도미오 오사다, 〈마스터슬레이브 데이타통신 시스템〉, 《Google Patents》
  4. JIMBLOM, 〈Bluetooth Basics〉, 《SparkFun Electronics》
  5. 이근영 기자, 〈바이러스 검체 채취도 로봇으로 '비대면'…의료진 감염 막는다〉, 《한겨례》, 2020-06-23
  6. Harshita Pandey, 〈Master-Slave JK Flip Flop〉, 《geeksforgeeks》, 2019-11-25
  7. wlsqor2, 〈망동기 방식〉, 《네이버 블로그》, 2010-12-21
  8. 8.0 8.1 MariaDB Foundation,〈Database Master-Slave Replication in the Cloud〉, 《MariaDB》, 2013-05-01
  9. Replication as a Backup Solution〉, 《MariaDB》
  10. 남혁우 기자, 〈개발자들, 과도한 중립성 강요하는 트위터 비판〉, 《지디넷 코리아》, 2020-07-06

참고자료

같이 보기


  검수요청.png검수요청.png 이 마스터-슬레이브 문서는 하드웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.