Tag Archives: Master-slave pattern

아키텍쳐 패턴이란 – 소프트웨어 디자인 패턴

외국인회사에 있다 보면 개발자 채용시 아키텍쳐 설계 부분도 이야기를 하게 됩니다. 그러면 어떤 어프로치로 소프트웨어를 설계해야 하느냐에 대한 논의를 하게 됩니다.

소프트웨어 개발/설계시 아키텍쳐링을 하다 보니 반복되는 패턴이 나오기 시작했고, 사람들은 이 패턴에 이름을 붙이기 시작했습니다. 즉, 아키텍쳐 패턴(Archiectural Patterns)이라 함은 소프트웨어 디자인 패턴이라고 할 수 있습니다. 참고로 패턴(Pattern)=유형,종류 라고 간주하셔도 될 것 같습니다.

 

아키텍쳐 패턴(Architectural Patterns)은 대략 다음의 10가지 종류가 있습니다.

1. Layered pattern

2. Client-server pattern

3. Master-slave pattern

4. Pipe-filter pattern

5. Broker pattern

6. Peer-to-peer pattern

7. Event-bus pattern

8. Model-view-controller pattern

9. Blackboard pattern

10. Interpreter pattern

 

여기에 하나 빠진것이 있다면 최근 떠오르는 MSA(Micro Service Architecture)가 있을텐데요… 이정도 길이면 학생들 가르킬때 21주짜리 프로그램이 하나 나올법도 하네요.

Master-slave pattern은 장애 대응을 위한 Database 복제 등 병렬처리 및 Disaster Recovery 대응 로직에 주로 이용

마스터-슬레이브 아키텍쳐 패턴(Master-Slave Architectural pattern)은 마스터(master)와 슬레이브(slave)로 구성되어져 있는데, 마스터는 일을 분배하는 역할을 가지고 있으며, 슬레이브는 전달된 기능을 수행합니다.

즉, 마스터(주인)이 업무를 지시하면, 슬레이브(하녀)는 그 일을 완료하여 결과물을 전달 하는 것입니다.

Master-slave pattern은 장애 대응을 위한 Database 복제 등 병렬처리 및 Disaster Recovery 대응 로직에 주로 이용

마스터-슬레이브 아키텍쳐 패턴(Master-Slave Architectural pattern)의 예로는 데이터베이스 복제(replication)를 들 수 있습니다. 즉, 마스터 DB는 원본데이터를 가지고 있고, 슬레이브는 그 복제본을 동기화하여 가지고 있습니다.

참고로 replication이라 함은 사전적으로 “복제”라는 의미를 가지고 있습니다.

다른 예로는 USB 허브를 예로 들수 있는데, USB 허브를 통해 마스터 포트에서 사용하던 기능을 그대로 사용할 수 있습니다.

마스터-슬레이브 아키텍쳐 패턴(Master-Slave Architectural pattern)의 장점은 정확성에 있습니다. 즉, 서비스의 실행은 각기 다른 구현체를 가진 슬레이브들에게 전파되어 설계된 로직대로 동작합니다.

반면에, 슬레이브가 독립적이므로 공유되는 상태가 없으므로 실시간 시스템에서는 마스터-슬레이브간 레이턴시 문제가 발생할 수 있습니다. 이 패턴은 분리 가능한 문제에만 적용할 수 있다.