SlideShare a Scribd company logo
Master-Slave 패턴
아꿈사 http://cafe.naver.com/architect1
TTF http://www.npteam.net
Master-Slave 패턴 컴포넌트
Master Component
- 마스터 컴포넌트
Slave Component
- 슬레이브 컴포넌트
마스터 컴포넌트는 자신과 동등한 역할을 하는
슬레이브 컴포넌트에 작업을 분산하고,
슬레이브에서 반환된 결과로부터 최종 결과를 계산한다.
Master-Slave Pattern - Context
■ 정황(Context)
- 작업을 의미적으로 동일한 여러 서브태스크들로
분할한다.
이미지 출처 : http://www.xoreax.com/slow_build_time_challenge.htm
Master-Slave Pattern - Problem
■ 문제(Problem)
- 분할 정복은 문제들을 해결하기 위한 공통원칙.
- 독립적으로 처리되는 여러 개의 동등한
서브태스크들로 작업을 분할한다.
이미지 출처 : http://withman.net/326
Master-Slave Pattern - Problem
■ 문제(Problem)
- 분할된 프로세스들에 의해 제공된 결과들로부터
전체 계산 결과가 산출된다.
이미지 출처 : http://eureka0000.tistory.com/entry/%EB%9D%BC%EC%8A%A4%EA%B8%B8%EB%A1%9C
Master-Slave Pattern – Force
■ 문제에 내포된 영향력(Force) - 01
- 클라이언트는 계산이 분할 정복 원칙에
근거하고 있다는 사실을 알 필요가 없다.
 결과를 Master 컴포넌트에 넘기기
- 클라이언트나 서브태스크의 처리는 작업을
분할하고 최종 결과를 모으는 알고리즘에
좌우되어서는 안 된다.
 Master 컴포넌트에서 해야할 일!
Master-Slave Pattern – Force
■ 문제에 내포된 영향력(Force) - 02
- 서브태스크들을 처리하기 위해서는
서로 다르지만 의미적으로 동일한 구현들을
사용하는 것이 좋다.
- 서브태스크들을 처리할 때 간혹 조정이
필요하기도 하다.
 유한 요소법을 사용하는 모의 실험
애플리케이션의 경우가 그렇다.
Master-Slave Pattern – Solution
■ 해법(Solution)
- 서비스의 클라이언트들과 개별 서브태스크들의
프로세싱 간에 조정(coordination)
인스턴스들을 도입한다.
이미지 출처 : MBC 손석희 100분 토론
Master-Slave Pattern – Solution
■ 해법(Solution)
- 마스터 컴포넌트는 여러 개의 동일한
서브태스크들로 작업을 분할하고,
Master-Slave Pattern – Solution
■ 해법(Solution)
- 서브태스크를 여러 개의 슬레이브 컴포넌트에
위임한 다음, 각 슬레이브가 반환하는
결과로부터 최종 결과를 계산한다.
Master-Slave Pattern – Solution
■ 응용 분야
- 장애 허용성
 서비스에 장애 발생시 복제된 다른
서비스가 대체적으로 작동한다.
- 병렬 컴퓨팅
 병렬로 실행되는 서브태스크로 나누어서
실행하고 결과를 종합하여 처리한다.
- 계산 정확도
 서비스를 각기 다른 구현들에게 위임한다.
Master-Slave Pattern – Structure
■ 마스터 컴포넌트
- 클라이언트가 서비스에 접근할 수 있는
인터페이스 제공
■ 슬레이브 컴포넌트
- 마스터에 정의된 서브태스크들을 처리할 수
있는 서브서비스를 제공한다.
Master-Slave Pattern – Dynamic
■ Master-Slave 동작 묘사
- 클라이언트가 마스터에게 서비스를 요청한다.
Master-Slave Pattern – Dynamic
■ Master-Slave 동작 묘사
- 마스터는 동등한 서브태스크들 몇 개로 태스크를 분할한다.
Master-Slave Pattern – Dynamic
■ Master-Slave 동작 묘사
- 마스터는 이 서브태스크들의 실행을 몇 개의 슬레이브
인스턴스들에 위임하고 실행을 시작한다.
Master-Slave Pattern – Dynamic
■ Master-Slave 동작 묘사
- 슬레이브들은 각 서브태스크들의 프로세싱을 수행하고,
그 결과를 마스터에 반환한다.
Master-Slave Pattern – Dynamic
■ Master-Slave 동작 묘사
- 마스터는 슬레이브들로 부터 받은 분할된 결과들을 모아
전체 태스크에 대한 최종 결과를 계산한다.
Master-Slave Pattern – Dynamic
■ Master-Slave 동작 묘사
- 마스터가 클라이언트에 최종 결과를 반환한다.
Master-Slave Pattern – Implementation
■ 구현(Implementation)
- 1단계 작업을 분할한다.
 서브태스크로 나누는 방법을 정의한다.
 서브태스크 하나에서 처리될 서브서비스를 파악한다.
- 2단계 서브태스크의 결과들을 조합한다.
 개별 서브태스크들을 처리해서 얻은 결과들을 통하여
전체 서비스의 결과를 어떻게 계산할지 정의한다.
Master-Slave Pattern – Implementation
■ 구현(Implementation)
- 3단계 마스터와 슬레이브 간의 협력을 정의한다.
 1단계에서 파악한 서브서비스 인터페이스를 정의한다.
 이 인터페이스는 슬레이브에 구현된다.
 마스터는 이 인터페이스를 사용하여 각 서브태스크의
처리를 위임한다.
- 4단계 이전 단계에서 개발된 명세에 따라
슬레이브 컴포넌트를 구현한다.
- 5단계 1~3단계에서 개발한 명세에 따라
마스터 컴포넌트를 구현한다.
Master-Slave Pattern – Variant
■ 변형(Variant)
- 장애 허용성을 위한 Master-Slave 패턴
 마스터는 정해진 개수의 복제된 구현물에 서비스의
실행을 단지 위임하기만 한다.
장애 허용성(fault tolerance) : 최소한 하나의
슬레이브는 장애가 발생하지 않고 제대로 동작하여
유효한 결과를 제공할 수 있는 상황을 지원하는 것.
- 병렬 계산을 위한 Master-Slave 패턴
 Master-Slave 패턴의 가장 일반적인 형태.
서브태스크가 병렬적으로 독립적으로 실행되어,
마스터에 결과를 반환한다.
Master-Slave Pattern – Variant
■ 변형(Variant)
- 계산 정확도(computational accuracy)를 위한
Master-Slave 패턴
 최소한 3개의 서로 다른 구현물에 서비스를 위임한다.
독립된 슬레이브로 이루어진 구현물들의 작업이 완료될
때까지 기다린다.
마스터는 각각의 결과물을 여러가지 전략적인 방법으로
선택하여 결과를 산출한다.
Master-Slave Pattern – Variant
■ 변형(Variant)
- 슬레이브를 조정하는 Master-Slave 패턴
 한 슬레이브의 계산이 다른 슬레이브들의 계산 상태에
따라 좌우된다.
예) 유한 요소 모의 실험의 경우 슬레이브들을
자체적으로 조정하기 위해 계산이 완료된 슬레이브는
다른 슬레이브들이 모두 완료될 때까지
일시중단 되어야 한다.
Master-Slave Pattern – Consequence
■ 결과(Consequence)
- 교환가능성과 확장성이 도입된다.
- 역할의 분리가 가능하다.
- 효율이 향상된다.
- 실행가능성이 떨어진다.
Master-Slave Pattern – Consequence
■ 결과(Consequence)
- 머신 종속성의 제약을 받는다.
- 구현이 어렵다.
- 이식성이 떨어진다.
Master slave pattern

More Related Content

What's hot

[IMQA] 빠른 웹페이지 만들기 - 당신의 웹페이지는 몇 점인가요?
[IMQA] 빠른 웹페이지 만들기 - 당신의 웹페이지는 몇 점인가요?[IMQA] 빠른 웹페이지 만들기 - 당신의 웹페이지는 몇 점인가요?
[IMQA] 빠른 웹페이지 만들기 - 당신의 웹페이지는 몇 점인가요?
IMQA
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향
Young-Ho Cho
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Yahoo!デベロッパーネットワーク
 
Maven基礎
Maven基礎Maven基礎
Maven基礎
Toshio Takiguchi
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
Open Source Consulting
 
App center analyticsを使い倒そう
App center analyticsを使い倒そうApp center analyticsを使い倒そう
App center analyticsを使い倒そう
Atsushi Nakamura
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
Shu Sugimoto
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
Seungmo Koo
 
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門Hisashi HATAKEYAMA
 
ELK, a real case study
ELK,  a real case studyELK,  a real case study
ELK, a real case study
Paolo Tonin
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
 
JBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loadingJBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loading
nekop
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
Tae Young Lee
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
 
MuleアプリケーションのCI/CD
MuleアプリケーションのCI/CDMuleアプリケーションのCI/CD
MuleアプリケーションのCI/CD
MuleSoft Meetup Tokyo
 
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESSpring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Michael Plöd
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기
MinGeun Park
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
Arawn Park
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
중선 곽
 

What's hot (20)

[IMQA] 빠른 웹페이지 만들기 - 당신의 웹페이지는 몇 점인가요?
[IMQA] 빠른 웹페이지 만들기 - 당신의 웹페이지는 몇 점인가요?[IMQA] 빠른 웹페이지 만들기 - 당신의 웹페이지는 몇 점인가요?
[IMQA] 빠른 웹페이지 만들기 - 당신의 웹페이지는 몇 점인가요?
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
 
Maven基礎
Maven基礎Maven基礎
Maven基礎
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
 
App center analyticsを使い倒そう
App center analyticsを使い倒そうApp center analyticsを使い倒そう
App center analyticsを使い倒そう
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
 
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
 
ELK, a real case study
ELK,  a real case studyELK,  a real case study
ELK, a real case study
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
JBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loadingJBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loading
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
MuleアプリケーションのCI/CD
MuleアプリケーションのCI/CDMuleアプリケーションのCI/CD
MuleアプリケーションのCI/CD
 
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESSpring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 

Viewers also liked

리펙토링 10장 p316_p324
리펙토링 10장 p316_p324리펙토링 10장 p316_p324
리펙토링 10장 p316_p324Heo Seungwook
 
리팩토링 10장 p357_p369
리팩토링 10장 p357_p369리팩토링 10장 p357_p369
리팩토링 10장 p357_p369Heo Seungwook
 
리펙토링 11장 p389_p400
리펙토링 11장 p389_p400리펙토링 11장 p389_p400
리펙토링 11장 p389_p400Heo Seungwook
 
리펙토링 6장 p147_p158
리펙토링 6장 p147_p158리펙토링 6장 p147_p158
리펙토링 6장 p147_p158Heo Seungwook
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기Heo Seungwook
 
Cruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevCruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevHeo Seungwook
 
2010 연말행사 온라인스터디
2010 연말행사 온라인스터디2010 연말행사 온라인스터디
2010 연말행사 온라인스터디Heo Seungwook
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가Heo Seungwook
 
Client dispatcher server_pattern
Client dispatcher server_patternClient dispatcher server_pattern
Client dispatcher server_patternHeo Seungwook
 
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
흥배 최
 

Viewers also liked (12)

리펙토링 10장 p316_p324
리펙토링 10장 p316_p324리펙토링 10장 p316_p324
리펙토링 10장 p316_p324
 
Pac pattern
Pac patternPac pattern
Pac pattern
 
리팩토링 10장 p357_p369
리팩토링 10장 p357_p369리팩토링 10장 p357_p369
리팩토링 10장 p357_p369
 
리펙토링 11장 p389_p400
리펙토링 11장 p389_p400리펙토링 11장 p389_p400
리펙토링 11장 p389_p400
 
리펙토링 6장 p147_p158
리펙토링 6장 p147_p158리펙토링 6장 p147_p158
리펙토링 6장 p147_p158
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기
 
Cruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevCruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedev
 
2010 연말행사 온라인스터디
2010 연말행사 온라인스터디2010 연말행사 온라인스터디
2010 연말행사 온라인스터디
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가
 
Client dispatcher server_pattern
Client dispatcher server_patternClient dispatcher server_pattern
Client dispatcher server_pattern
 
Mvc pattern
Mvc patternMvc pattern
Mvc pattern
 
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
 

Similar to Master slave pattern

04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)
Hankyo
 
자바 병렬 프로그래밍 1&2
자바 병렬 프로그래밍 1&2자바 병렬 프로그래밍 1&2
자바 병렬 프로그래밍 1&2
HyeonSeok Choi
 
요즘 웹 배포
요즘 웹 배포요즘 웹 배포
요즘 웹 배포
명호 박
 
함수형사고 실용적사고
함수형사고 실용적사고함수형사고 실용적사고
함수형사고 실용적사고
Sunggon Song
 
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
Ji-Woong Choi
 
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Tae Young Lee
 
3. stream api
3. stream api3. stream api
3. stream api
흥래 김
 
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
Ji-Woong Choi
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
JinKyoungHeo
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
태준 문
 
Chap4_2
Chap4_2Chap4_2
Chap4_2
Mungyu Choi
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)익성 조
 
1.1 sql문 처리과정
1.1 sql문 처리과정1.1 sql문 처리과정
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작
DACON AI 데이콘
 
ES6 for Node.js Study 2주차
ES6 for Node.js Study 2주차ES6 for Node.js Study 2주차
ES6 for Node.js Study 2주차
승빈이네 공작소
 
제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancementsbeamofhope
 
[Swift] Facade
[Swift] Facade[Swift] Facade
[Swift] Facade
Bill Kim
 
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&CIntroduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&Csys4u
 
[오픈소스컨설팅]Spring MVC
[오픈소스컨설팅]Spring MVC [오픈소스컨설팅]Spring MVC
[오픈소스컨설팅]Spring MVC
Ji-Woong Choi
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4현찬 양
 

Similar to Master slave pattern (20)

04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)
 
자바 병렬 프로그래밍 1&2
자바 병렬 프로그래밍 1&2자바 병렬 프로그래밍 1&2
자바 병렬 프로그래밍 1&2
 
요즘 웹 배포
요즘 웹 배포요즘 웹 배포
요즘 웹 배포
 
함수형사고 실용적사고
함수형사고 실용적사고함수형사고 실용적사고
함수형사고 실용적사고
 
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
[오픈소스컨설팅]Fault Tolerance Architecture by Netflix
 
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMs
 
3. stream api
3. stream api3. stream api
3. stream api
 
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
 
Chap4_2
Chap4_2Chap4_2
Chap4_2
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
1.1 sql문 처리과정
1.1 sql문 처리과정1.1 sql문 처리과정
1.1 sql문 처리과정
 
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작
 
ES6 for Node.js Study 2주차
ES6 for Node.js Study 2주차ES6 for Node.js Study 2주차
ES6 for Node.js Study 2주차
 
제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements
 
[Swift] Facade
[Swift] Facade[Swift] Facade
[Swift] Facade
 
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&CIntroduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&C
 
[오픈소스컨설팅]Spring MVC
[오픈소스컨설팅]Spring MVC [오픈소스컨설팅]Spring MVC
[오픈소스컨설팅]Spring MVC
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 

Master slave pattern

  • 2. Master-Slave 패턴 컴포넌트 Master Component - 마스터 컴포넌트 Slave Component - 슬레이브 컴포넌트 마스터 컴포넌트는 자신과 동등한 역할을 하는 슬레이브 컴포넌트에 작업을 분산하고, 슬레이브에서 반환된 결과로부터 최종 결과를 계산한다.
  • 3. Master-Slave Pattern - Context ■ 정황(Context) - 작업을 의미적으로 동일한 여러 서브태스크들로 분할한다. 이미지 출처 : http://www.xoreax.com/slow_build_time_challenge.htm
  • 4. Master-Slave Pattern - Problem ■ 문제(Problem) - 분할 정복은 문제들을 해결하기 위한 공통원칙. - 독립적으로 처리되는 여러 개의 동등한 서브태스크들로 작업을 분할한다. 이미지 출처 : http://withman.net/326
  • 5. Master-Slave Pattern - Problem ■ 문제(Problem) - 분할된 프로세스들에 의해 제공된 결과들로부터 전체 계산 결과가 산출된다. 이미지 출처 : http://eureka0000.tistory.com/entry/%EB%9D%BC%EC%8A%A4%EA%B8%B8%EB%A1%9C
  • 6. Master-Slave Pattern – Force ■ 문제에 내포된 영향력(Force) - 01 - 클라이언트는 계산이 분할 정복 원칙에 근거하고 있다는 사실을 알 필요가 없다.  결과를 Master 컴포넌트에 넘기기 - 클라이언트나 서브태스크의 처리는 작업을 분할하고 최종 결과를 모으는 알고리즘에 좌우되어서는 안 된다.  Master 컴포넌트에서 해야할 일!
  • 7. Master-Slave Pattern – Force ■ 문제에 내포된 영향력(Force) - 02 - 서브태스크들을 처리하기 위해서는 서로 다르지만 의미적으로 동일한 구현들을 사용하는 것이 좋다. - 서브태스크들을 처리할 때 간혹 조정이 필요하기도 하다.  유한 요소법을 사용하는 모의 실험 애플리케이션의 경우가 그렇다.
  • 8. Master-Slave Pattern – Solution ■ 해법(Solution) - 서비스의 클라이언트들과 개별 서브태스크들의 프로세싱 간에 조정(coordination) 인스턴스들을 도입한다. 이미지 출처 : MBC 손석희 100분 토론
  • 9. Master-Slave Pattern – Solution ■ 해법(Solution) - 마스터 컴포넌트는 여러 개의 동일한 서브태스크들로 작업을 분할하고,
  • 10. Master-Slave Pattern – Solution ■ 해법(Solution) - 서브태스크를 여러 개의 슬레이브 컴포넌트에 위임한 다음, 각 슬레이브가 반환하는 결과로부터 최종 결과를 계산한다.
  • 11. Master-Slave Pattern – Solution ■ 응용 분야 - 장애 허용성  서비스에 장애 발생시 복제된 다른 서비스가 대체적으로 작동한다. - 병렬 컴퓨팅  병렬로 실행되는 서브태스크로 나누어서 실행하고 결과를 종합하여 처리한다. - 계산 정확도  서비스를 각기 다른 구현들에게 위임한다.
  • 12. Master-Slave Pattern – Structure ■ 마스터 컴포넌트 - 클라이언트가 서비스에 접근할 수 있는 인터페이스 제공 ■ 슬레이브 컴포넌트 - 마스터에 정의된 서브태스크들을 처리할 수 있는 서브서비스를 제공한다.
  • 13. Master-Slave Pattern – Dynamic ■ Master-Slave 동작 묘사 - 클라이언트가 마스터에게 서비스를 요청한다.
  • 14. Master-Slave Pattern – Dynamic ■ Master-Slave 동작 묘사 - 마스터는 동등한 서브태스크들 몇 개로 태스크를 분할한다.
  • 15. Master-Slave Pattern – Dynamic ■ Master-Slave 동작 묘사 - 마스터는 이 서브태스크들의 실행을 몇 개의 슬레이브 인스턴스들에 위임하고 실행을 시작한다.
  • 16. Master-Slave Pattern – Dynamic ■ Master-Slave 동작 묘사 - 슬레이브들은 각 서브태스크들의 프로세싱을 수행하고, 그 결과를 마스터에 반환한다.
  • 17. Master-Slave Pattern – Dynamic ■ Master-Slave 동작 묘사 - 마스터는 슬레이브들로 부터 받은 분할된 결과들을 모아 전체 태스크에 대한 최종 결과를 계산한다.
  • 18. Master-Slave Pattern – Dynamic ■ Master-Slave 동작 묘사 - 마스터가 클라이언트에 최종 결과를 반환한다.
  • 19. Master-Slave Pattern – Implementation ■ 구현(Implementation) - 1단계 작업을 분할한다.  서브태스크로 나누는 방법을 정의한다.  서브태스크 하나에서 처리될 서브서비스를 파악한다. - 2단계 서브태스크의 결과들을 조합한다.  개별 서브태스크들을 처리해서 얻은 결과들을 통하여 전체 서비스의 결과를 어떻게 계산할지 정의한다.
  • 20. Master-Slave Pattern – Implementation ■ 구현(Implementation) - 3단계 마스터와 슬레이브 간의 협력을 정의한다.  1단계에서 파악한 서브서비스 인터페이스를 정의한다.  이 인터페이스는 슬레이브에 구현된다.  마스터는 이 인터페이스를 사용하여 각 서브태스크의 처리를 위임한다. - 4단계 이전 단계에서 개발된 명세에 따라 슬레이브 컴포넌트를 구현한다. - 5단계 1~3단계에서 개발한 명세에 따라 마스터 컴포넌트를 구현한다.
  • 21. Master-Slave Pattern – Variant ■ 변형(Variant) - 장애 허용성을 위한 Master-Slave 패턴  마스터는 정해진 개수의 복제된 구현물에 서비스의 실행을 단지 위임하기만 한다. 장애 허용성(fault tolerance) : 최소한 하나의 슬레이브는 장애가 발생하지 않고 제대로 동작하여 유효한 결과를 제공할 수 있는 상황을 지원하는 것. - 병렬 계산을 위한 Master-Slave 패턴  Master-Slave 패턴의 가장 일반적인 형태. 서브태스크가 병렬적으로 독립적으로 실행되어, 마스터에 결과를 반환한다.
  • 22. Master-Slave Pattern – Variant ■ 변형(Variant) - 계산 정확도(computational accuracy)를 위한 Master-Slave 패턴  최소한 3개의 서로 다른 구현물에 서비스를 위임한다. 독립된 슬레이브로 이루어진 구현물들의 작업이 완료될 때까지 기다린다. 마스터는 각각의 결과물을 여러가지 전략적인 방법으로 선택하여 결과를 산출한다.
  • 23. Master-Slave Pattern – Variant ■ 변형(Variant) - 슬레이브를 조정하는 Master-Slave 패턴  한 슬레이브의 계산이 다른 슬레이브들의 계산 상태에 따라 좌우된다. 예) 유한 요소 모의 실험의 경우 슬레이브들을 자체적으로 조정하기 위해 계산이 완료된 슬레이브는 다른 슬레이브들이 모두 완료될 때까지 일시중단 되어야 한다.
  • 24. Master-Slave Pattern – Consequence ■ 결과(Consequence) - 교환가능성과 확장성이 도입된다. - 역할의 분리가 가능하다. - 효율이 향상된다. - 실행가능성이 떨어진다.
  • 25. Master-Slave Pattern – Consequence ■ 결과(Consequence) - 머신 종속성의 제약을 받는다. - 구현이 어렵다. - 이식성이 떨어진다.