SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Client
Dispatcher
Server
패턴
아꿈사 http://cafe.naver.com/architect1
TTF http://www.npteam.net
CDS 패턴의 3가지 컴포넌트
Client Component
- 클라이언트 컴포넌트
Dispatcher Component
- 디스패처 컴포넌트
Server Component
- 서버 컴포넌트
클라이언트와 서버간에 디스패처 컴포넌트를 도입하여
위치투명성을 제공하고,
클라이언트서버간 통신을 위한 세부 구현을 숨긴다.
CDS Pattern - Context
■ 정황(Context)
- 로컬 혹은 네트워크에서 실행되는 분산된
서버들을 통합해야 한다.
이미지 출처 : http://data.ygosu.com/editor/attach/20100812/QSycLPT8dyvQG.gif
CDS Pattern - Problem
■ 문제(Problem)
- 분산된 서버간 통신할 방법을 제공해야 한다.
- 핵심 기능과 세부 구현은 분리되어야 한다.
이미지 출처 : http://www.comixest.com/bbs/view.php?id=news&type=all&r_page=1&key=&no=1396
CDS Pattern - Problem
■ 문제(Problem)
- 클라이언트는 서버의 위치를 알 필요가 없다.
- 서버 위치 변경 및 장애 허용성을 제공한다.
CDS Pattern – Problem(Force)
■ 문제에 내포된 영향력(Force)
- 컴포넌트는 서비스 제공자의 위치와 상관없이
서비스를 사용할 수 있어야 한다.
- 서비스 소비자의 핵심 기능을 구현하는 코드는
서비스 제공자와 연결 설정을 위한 코드와
분리 되어야 한다.
CDS Pattern – Solution
■ 해법(Solution)
- 클라이언트와 서버 간의 중간 레이어 역할을
하는 디스패처 컴포넌트를 제공한다.
CDS Pattern – Solution
■ 해법(Solution)
- 디스패처 컴포넌트는 네임 서비스를 구현한다.
- 네임서비스를 제공하여 위치 투명성을 제공한다.
- 디스패처는 클라이언트와 서버간 통신 채널을
설정하는 책임을 맡는다.
CDS Pattern – Structure
■ 구조(Structure)
- 각 컴포넌트는 다음과 같이 구성된다.
CDS Pattern – Dynamic
■ CDS 동작 묘사
- 서버는 디스패처 컴포넌트에 자신을 등록시킨다.
CDS Pattern – Dynamic
■ CDS 동작 묘사
- 클라이언트는 지정된 서버에 통신 채널을 설정할 수 있는지
디스패처에 묻는다.
CDS Pattern – Dynamic
■ CDS 동작 묘사
- 디스패처는 자체 레지스트리에서 클라이언트가 지정한
이름과 연결된 서버를 검색한다.
CDS Pattern – Dynamic
■ CDS 동작 묘사
- 디스패처는 서버와 통신 링크를 설정한다.
- 링크 성공시 채널을 반환, 실패하면 오류를 반환한다.
CDS Pattern – Dynamic
■ CDS 동작 묘사
- 클라이언트는 반환된 통신 채널을 사용해 서버에 직접
요청을 보낸다.
CDS Pattern – Dynamic
■ CDS 동작 묘사
- 서버는 들어온 요청을 받아들인 다음, 적절한 서비스를
실행한다.
CDS Pattern – Dynamic
■ CDS 동작 묘사
- 서버스 실행이 완료되면, 서버는 클라이언트에 결과를
보낸다.
CDS Pattern – Implementation
■ 구현(Implementation)
- 1단계 애플리케이션을 서버 및 클라이언트로부터 분리한다.
 서버 및 클라이언트 컴포넌트를 분리하여 설계한다.
 역할이 분리되어야 나중에 유연하게 통합할 수 있다.
- 2단계 어떤 통신 기능이 필요한지 파악한다.
 동일 머신에서는 공유메모리가 가장 빠르다.
 클라이언트 서버간 통신은 소켓을 사용하는 것이 가장
적당하다.
CDS Pattern – Implementation
■ 구현(Implementation)
- 3단계 컴포넌트 간의 상호작용 프로토콜을 정의한다.
 서버와 디스패처 간에는 DSprotocol이 필요하다.
- 서버가 어떻게 디스패처에 등록되는지 정의한다.
- 서버에 통신 채널을 설정할 때 필요한 동작을 결정한다.
 클라이언트와 디스패처 간에는 CDprotocol이 필요하다.
- 4단계 서버의 이름을 어떻게 지을 것인지 결정한다.
 IP 주소는 위치 투명성을 지원하지 않는다.
 고유하게 식별 가능한 이름을 도입해야 한다.
CDS Pattern – Implementation
■ 구현(Implementation)
- 5단계 디스패처를 설계하고 구현한다.
 디스패처가 클라이언트 주소공간 내에 있을 경우
로컬 프로시저 사용
 그외의 경우 TCP 포트나 공유 메모리 같은 기능을 사용.
- 6단계 클라이언트 컴포넌트 및 서버 컴포넌트를 구현한다.
 계획한 해법과 디스패처 인터페이스에 맞게 시스템을
구성한다.
CDS Pattern – Variant
■ 변형(Variant)
- Distributed Dispatcher
 네트워크 환경에서 분산 디스패치 컴포넌트를 여러 개를
사용할 수 있다.
 원격 디스패처는 요청받은 서버와의 연결을 초기화한
다음 원래 디스패처에 통신 채널을 되돌려 보낸다.
 다른 방식은 클라이언트가 원격 디스패처와 직접
통신하는 방법이다.
- 위치 투명성에 제약을 받는다.
- 이런 경우엔 Broker 아키텍처 패턴을 먼저 검토한다.
CDS Pattern – Variant
■ 변형(Variant)
- Client-Dispatcher-Service 변형
 클라이언트가 서버가 아니라 서비스에 연결된다.
 디스패처가 요청을 받으면 자체 리포지토리 안에서
적절한 서비스를 검색한다.
 적절한 서비스를 찾으면 연결을 설정한다.
 연결 설정에 실패할 경우 동일한 다른 서비스에
연결을 시도한다.
CDS Pattern – Consequence
■ 결과(Consequence)
- 서버의 교환가능성이 보장된다.
- 위치 투명성과 마이그레이션 투명성이 보장된다.
- 재구성이 가능하다.
CDS Pattern – Consequence
■ 결과(Consequence)
- 장애 허용성이 보장된다.
- 명시적이며 우회적인 연결을 설정하기 때문에
효율성이 낮다.
- 디스패처 컴포넌트의 인터페이스에 발생하는 변경에
민감해진다.
Client dispatcher server_pattern

Weitere ähnliche Inhalte

Andere mochten auch

리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기Heo Seungwook
 
리팩토링 10장 p357_p369
리팩토링 10장 p357_p369리팩토링 10장 p357_p369
리팩토링 10장 p357_p369Heo Seungwook
 
리펙토링 6장 p147_p158
리펙토링 6장 p147_p158리펙토링 6장 p147_p158
리펙토링 6장 p147_p158Heo 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
 
리펙토링 11장 p389_p400
리펙토링 11장 p389_p400리펙토링 11장 p389_p400
리펙토링 11장 p389_p400Heo Seungwook
 
리펙토링 10장 p316_p324
리펙토링 10장 p316_p324리펙토링 10장 p316_p324
리펙토링 10장 p316_p324Heo Seungwook
 
2010 연말행사 온라인스터디
2010 연말행사 온라인스터디2010 연말행사 온라인스터디
2010 연말행사 온라인스터디Heo Seungwook
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가Heo Seungwook
 
Abstract factory pattern
Abstract factory patternAbstract factory pattern
Abstract factory patternminjin00
 
Studyforprogrammer
StudyforprogrammerStudyforprogrammer
Studyforprogrammerguest0a0b14
 
HolubOnPatterns/chapter3_2
HolubOnPatterns/chapter3_2HolubOnPatterns/chapter3_2
HolubOnPatterns/chapter3_2Vong Sik Kong
 
데브루키 스터디 발표
데브루키 스터디 발표데브루키 스터디 발표
데브루키 스터디 발표dagri82
 
Adapter pattern 한진수
Adapter pattern 한진수Adapter pattern 한진수
Adapter pattern 한진수진수 한
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)hyun soomyung
 
Command pattern 김우진
Command pattern 김우진Command pattern 김우진
Command pattern 김우진Woo Jin Kim
 
[0820 석재호]headfirst디자인패턴
[0820 석재호]headfirst디자인패턴[0820 석재호]headfirst디자인패턴
[0820 석재호]headfirst디자인패턴Jaeho Seok
 
프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장hyun soomyung
 

Andere mochten auch (20)

리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기
 
리팩토링 10장 p357_p369
리팩토링 10장 p357_p369리팩토링 10장 p357_p369
리팩토링 10장 p357_p369
 
리펙토링 6장 p147_p158
리펙토링 6장 p147_p158리펙토링 6장 p147_p158
리펙토링 6장 p147_p158
 
Pac pattern
Pac patternPac pattern
Pac pattern
 
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
 
리펙토링 11장 p389_p400
리펙토링 11장 p389_p400리펙토링 11장 p389_p400
리펙토링 11장 p389_p400
 
리펙토링 10장 p316_p324
리펙토링 10장 p316_p324리펙토링 10장 p316_p324
리펙토링 10장 p316_p324
 
2010 연말행사 온라인스터디
2010 연말행사 온라인스터디2010 연말행사 온라인스터디
2010 연말행사 온라인스터디
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가
 
Abstract factory pattern
Abstract factory patternAbstract factory pattern
Abstract factory pattern
 
Studyforprogrammer
StudyforprogrammerStudyforprogrammer
Studyforprogrammer
 
misspattern
misspatternmisspattern
misspattern
 
HolubOnPatterns/chapter3_2
HolubOnPatterns/chapter3_2HolubOnPatterns/chapter3_2
HolubOnPatterns/chapter3_2
 
Solid
SolidSolid
Solid
 
데브루키 스터디 발표
데브루키 스터디 발표데브루키 스터디 발표
데브루키 스터디 발표
 
Adapter pattern 한진수
Adapter pattern 한진수Adapter pattern 한진수
Adapter pattern 한진수
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
 
Command pattern 김우진
Command pattern 김우진Command pattern 김우진
Command pattern 김우진
 
[0820 석재호]headfirst디자인패턴
[0820 석재호]headfirst디자인패턴[0820 석재호]headfirst디자인패턴
[0820 석재호]headfirst디자인패턴
 
프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장
 

Ähnlich wie Client dispatcher server_pattern

오픈소스 소프트웨어 성능 최적화 보고서 6장
오픈소스 소프트웨어 성능 최적화 보고서 6장오픈소스 소프트웨어 성능 최적화 보고서 6장
오픈소스 소프트웨어 성능 최적화 보고서 6장JamGun
 
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Larva - 멀티클라우드 인프라 및 응용을 위한 네트워킹 (Networking f...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Larva - 멀티클라우드 인프라 및 응용을 위한 네트워킹 (Networking f...Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Larva - 멀티클라우드 인프라 및 응용을 위한 네트워킹 (Networking f...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Larva - 멀티클라우드 인프라 및 응용을 위한 네트워킹 (Networking f...Cloud-Barista Community
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Sung-jae Park
 
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)KH Park (박경훈)
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)uEngine Solutions
 
요즘 웹 배포
요즘 웹 배포요즘 웹 배포
요즘 웹 배포명호 박
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...Cloud-Barista Community
 
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...Taekyu Lim
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista Community
 
AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3Keeyong Han
 
TestCloud2018-1(answer)
TestCloud2018-1(answer)TestCloud2018-1(answer)
TestCloud2018-1(answer)Yong Heui Cho
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약세빈 정
 
도메인 주도 설계 - DDD
도메인 주도 설계 - DDD도메인 주도 설계 - DDD
도메인 주도 설계 - DDDMyeongdon Joo
 
[OpenInfra Days Korea 2018] (Track 2) - OpenStack 기반의 IaaS, PaaS 통합 Orchestra...
[OpenInfra Days Korea 2018] (Track 2) - OpenStack 기반의 IaaS, PaaS 통합 Orchestra...[OpenInfra Days Korea 2018] (Track 2) - OpenStack 기반의 IaaS, PaaS 통합 Orchestra...
[OpenInfra Days Korea 2018] (Track 2) - OpenStack 기반의 IaaS, PaaS 통합 Orchestra...OpenStack Korea Community
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista Community
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetesSangSun Park
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
멀티티어 애플리케이션 개발과 배포
멀티티어 애플리케이션 개발과 배포멀티티어 애플리케이션 개발과 배포
멀티티어 애플리케이션 개발과 배포Devgear
 
04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)Hankyo
 

Ähnlich wie Client dispatcher server_pattern (20)

오픈소스 소프트웨어 성능 최적화 보고서 6장
오픈소스 소프트웨어 성능 최적화 보고서 6장오픈소스 소프트웨어 성능 최적화 보고서 6장
오픈소스 소프트웨어 성능 최적화 보고서 6장
 
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Larva - 멀티클라우드 인프라 및 응용을 위한 네트워킹 (Networking f...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Larva - 멀티클라우드 인프라 및 응용을 위한 네트워킹 (Networking f...Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Larva - 멀티클라우드 인프라 및 응용을 위한 네트워킹 (Networking f...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Larva - 멀티클라우드 인프라 및 응용을 위한 네트워킹 (Networking f...
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
 
요즘 웹 배포
요즘 웹 배포요즘 웹 배포
요즘 웹 배포
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Larva - Cloud-Barista 인큐베이터(Cloud-Barista Incu...
 
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
 
AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3AWS의 하둡 관련 서비스 - EMR/S3
AWS의 하둡 관련 서비스 - EMR/S3
 
TestCloud2018-1(answer)
TestCloud2018-1(answer)TestCloud2018-1(answer)
TestCloud2018-1(answer)
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
도메인 주도 설계 - DDD
도메인 주도 설계 - DDD도메인 주도 설계 - DDD
도메인 주도 설계 - DDD
 
[OpenInfra Days Korea 2018] (Track 2) - OpenStack 기반의 IaaS, PaaS 통합 Orchestra...
[OpenInfra Days Korea 2018] (Track 2) - OpenStack 기반의 IaaS, PaaS 통합 Orchestra...[OpenInfra Days Korea 2018] (Track 2) - OpenStack 기반의 IaaS, PaaS 통합 Orchestra...
[OpenInfra Days Korea 2018] (Track 2) - OpenStack 기반의 IaaS, PaaS 통합 Orchestra...
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetes
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
 
멀티티어 애플리케이션 개발과 배포
멀티티어 애플리케이션 개발과 배포멀티티어 애플리케이션 개발과 배포
멀티티어 애플리케이션 개발과 배포
 
04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)
 

Client dispatcher server_pattern

  • 2. CDS 패턴의 3가지 컴포넌트 Client Component - 클라이언트 컴포넌트 Dispatcher Component - 디스패처 컴포넌트 Server Component - 서버 컴포넌트 클라이언트와 서버간에 디스패처 컴포넌트를 도입하여 위치투명성을 제공하고, 클라이언트서버간 통신을 위한 세부 구현을 숨긴다.
  • 3. CDS Pattern - Context ■ 정황(Context) - 로컬 혹은 네트워크에서 실행되는 분산된 서버들을 통합해야 한다. 이미지 출처 : http://data.ygosu.com/editor/attach/20100812/QSycLPT8dyvQG.gif
  • 4. CDS Pattern - Problem ■ 문제(Problem) - 분산된 서버간 통신할 방법을 제공해야 한다. - 핵심 기능과 세부 구현은 분리되어야 한다. 이미지 출처 : http://www.comixest.com/bbs/view.php?id=news&type=all&r_page=1&key=&no=1396
  • 5. CDS Pattern - Problem ■ 문제(Problem) - 클라이언트는 서버의 위치를 알 필요가 없다. - 서버 위치 변경 및 장애 허용성을 제공한다.
  • 6. CDS Pattern – Problem(Force) ■ 문제에 내포된 영향력(Force) - 컴포넌트는 서비스 제공자의 위치와 상관없이 서비스를 사용할 수 있어야 한다. - 서비스 소비자의 핵심 기능을 구현하는 코드는 서비스 제공자와 연결 설정을 위한 코드와 분리 되어야 한다.
  • 7. CDS Pattern – Solution ■ 해법(Solution) - 클라이언트와 서버 간의 중간 레이어 역할을 하는 디스패처 컴포넌트를 제공한다.
  • 8. CDS Pattern – Solution ■ 해법(Solution) - 디스패처 컴포넌트는 네임 서비스를 구현한다. - 네임서비스를 제공하여 위치 투명성을 제공한다. - 디스패처는 클라이언트와 서버간 통신 채널을 설정하는 책임을 맡는다.
  • 9. CDS Pattern – Structure ■ 구조(Structure) - 각 컴포넌트는 다음과 같이 구성된다.
  • 10. CDS Pattern – Dynamic ■ CDS 동작 묘사 - 서버는 디스패처 컴포넌트에 자신을 등록시킨다.
  • 11. CDS Pattern – Dynamic ■ CDS 동작 묘사 - 클라이언트는 지정된 서버에 통신 채널을 설정할 수 있는지 디스패처에 묻는다.
  • 12. CDS Pattern – Dynamic ■ CDS 동작 묘사 - 디스패처는 자체 레지스트리에서 클라이언트가 지정한 이름과 연결된 서버를 검색한다.
  • 13. CDS Pattern – Dynamic ■ CDS 동작 묘사 - 디스패처는 서버와 통신 링크를 설정한다. - 링크 성공시 채널을 반환, 실패하면 오류를 반환한다.
  • 14. CDS Pattern – Dynamic ■ CDS 동작 묘사 - 클라이언트는 반환된 통신 채널을 사용해 서버에 직접 요청을 보낸다.
  • 15. CDS Pattern – Dynamic ■ CDS 동작 묘사 - 서버는 들어온 요청을 받아들인 다음, 적절한 서비스를 실행한다.
  • 16. CDS Pattern – Dynamic ■ CDS 동작 묘사 - 서버스 실행이 완료되면, 서버는 클라이언트에 결과를 보낸다.
  • 17. CDS Pattern – Implementation ■ 구현(Implementation) - 1단계 애플리케이션을 서버 및 클라이언트로부터 분리한다.  서버 및 클라이언트 컴포넌트를 분리하여 설계한다.  역할이 분리되어야 나중에 유연하게 통합할 수 있다. - 2단계 어떤 통신 기능이 필요한지 파악한다.  동일 머신에서는 공유메모리가 가장 빠르다.  클라이언트 서버간 통신은 소켓을 사용하는 것이 가장 적당하다.
  • 18. CDS Pattern – Implementation ■ 구현(Implementation) - 3단계 컴포넌트 간의 상호작용 프로토콜을 정의한다.  서버와 디스패처 간에는 DSprotocol이 필요하다. - 서버가 어떻게 디스패처에 등록되는지 정의한다. - 서버에 통신 채널을 설정할 때 필요한 동작을 결정한다.  클라이언트와 디스패처 간에는 CDprotocol이 필요하다. - 4단계 서버의 이름을 어떻게 지을 것인지 결정한다.  IP 주소는 위치 투명성을 지원하지 않는다.  고유하게 식별 가능한 이름을 도입해야 한다.
  • 19. CDS Pattern – Implementation ■ 구현(Implementation) - 5단계 디스패처를 설계하고 구현한다.  디스패처가 클라이언트 주소공간 내에 있을 경우 로컬 프로시저 사용  그외의 경우 TCP 포트나 공유 메모리 같은 기능을 사용. - 6단계 클라이언트 컴포넌트 및 서버 컴포넌트를 구현한다.  계획한 해법과 디스패처 인터페이스에 맞게 시스템을 구성한다.
  • 20. CDS Pattern – Variant ■ 변형(Variant) - Distributed Dispatcher  네트워크 환경에서 분산 디스패치 컴포넌트를 여러 개를 사용할 수 있다.  원격 디스패처는 요청받은 서버와의 연결을 초기화한 다음 원래 디스패처에 통신 채널을 되돌려 보낸다.  다른 방식은 클라이언트가 원격 디스패처와 직접 통신하는 방법이다. - 위치 투명성에 제약을 받는다. - 이런 경우엔 Broker 아키텍처 패턴을 먼저 검토한다.
  • 21. CDS Pattern – Variant ■ 변형(Variant) - Client-Dispatcher-Service 변형  클라이언트가 서버가 아니라 서비스에 연결된다.  디스패처가 요청을 받으면 자체 리포지토리 안에서 적절한 서비스를 검색한다.  적절한 서비스를 찾으면 연결을 설정한다.  연결 설정에 실패할 경우 동일한 다른 서비스에 연결을 시도한다.
  • 22. CDS Pattern – Consequence ■ 결과(Consequence) - 서버의 교환가능성이 보장된다. - 위치 투명성과 마이그레이션 투명성이 보장된다. - 재구성이 가능하다.
  • 23. CDS Pattern – Consequence ■ 결과(Consequence) - 장애 허용성이 보장된다. - 명시적이며 우회적인 연결을 설정하기 때문에 효율성이 낮다. - 디스패처 컴포넌트의 인터페이스에 발생하는 변경에 민감해진다.