270 likes | 662 Views
Pattern-Oriented Software Architecture Microkernel 아키텍처 패턴. Choi Seok Bae 2008-09-03 JAVAJIGI SW STUDY. Contents. Introduce( 소개 ) Example( 예제 ) Context( 정황 ) Problem( 문제 ) Solution( 해법 ) Structure( 구조 ) Dynamics( 동작 ) Implementation( 구현 ) Example resolved( 예제 심화 ) Variants( 변형 )
E N D
Pattern-Oriented Software Architecture Microkernel 아키텍처 패턴 Choi Seok Bae 2008-09-03 JAVAJIGI SW STUDY
Contents • Introduce(소개) • Example(예제) • Context(정황) • Problem(문제) • Solution(해법) • Structure(구조) • Dynamics(동작) • Implementation(구현) • Example resolved(예제 심화) • Variants(변형) • Known Uses(용례) • Consequences(결과) • See Also(관련자료)
Microkernel 아키텍처 패턴 적용 및 역할 * Introduce(소개) * 변하는 시스템 요구사항에 적응할 수 있는 소프트웨어 시스템을 설계할 때에 적용한다. * 최소 핵심 기능(minimal function core)을 확장 기능과 특정 고객에 맞춰진 부분으로부터 분리해낸다. * 확장 부분을 마치 플러그처럼 장착하며 협력 관계를 조정하는 소켓과 같은 역할을 한다.
데스크탑 컴퓨터용 새 운영체제 하이드라(Hydra)를 개발한다고 가정 * Example(예제) * 운영체제 하이드라(Hydra)에 대한 핵심 요구사항 1. 관련 하드웨어 플랫폼에 쉽게 이식되어야 한다. 2. 넥스트스텝, 마이크로소프트 윈도우, 유닉스 시스템 V 처럼 널리 보급되어 있는 운영체제용 애플리케이션을 실행할 수 있어야 한다. 3. 사용자가 애플리케이션을 시작할 때 팝업 메뉴에서 자신이 원하는 운영체제를 선택할 수 있어야 한다. 4. 주요 창 내에 현재 실행되고 있는 모든 애플리케이션을 디스플레이할 수 있어야 한다. 5. 멀티미디어(multimedia), 펜기반 컴퓨텅(pen-based computing), WWW(World Wide Web) 등의 신기술과 쉽게 통합하도록 설계되어야 할 뿐만 아니라 자체 기능을 적응, 개선, 확장하기 쉽도록 설계되어야 한다.
Context(정황) * Context(정황) * 동일한 핵심 기능(core functionality)을 기반으로 비슷한 프로그래밍 인터페이스들을 사용하는 몇 가지 유형의 애플리케이션을 개발해야 한다.
개발 시 문제점 설계 시 고려할 영향력(force) * Problem(문제) 1. 애플리케이션 도메인에서 유사한 표준과 기술을 폭넓게 수용하는 소프트웨어를 개발하는 작업은 결코 쉽지 않다.(운영체제나 그래픽 사용자 인터페이스 등의 애플리케이션 플랫폼) 2. 흔히 이런 시스템은 10년 이상 수명이 길다. 이런 긴 기간 동안에는 새 기술이 등장할 것이며 옛 기술은 변경된다. 1. 애플리케이션 플랫폼은 하드웨어와 소프트웨어의 지속적인 발전에 대비해야 한다. 2. 애플리케이션 플랫폼은 새롭게 대두되는 기술을 쉽게 통합하기 위해 이식가능(portable)하고, 확장가능(extensible)하며, 적응가능(adaptable)해야 한다.
이식, 확장, 적응하기 쉬운 설계를 위한 영향력(force) * Problem(문제) 1. 현재 도메인에서 사용하는 애플리케이션들은 각기 다르면서도 유사한 애플리케이션 플랫폼들을 지원해야 한다. 2. 동일한 핵심 기능을 어떤 방식으로 사용하느냐에 따라 애플리케이션들을 그룹별로 분류할 수 있다. 그러기 위해서는 애플리케이션이 기존 표준들을 애뮬레이션해야 한다. 3. 애플리케이션 플랫폼의 핵심 기능은 최소한의 메모리 크기를 가진 한 개의 컴포넌트로 분리되어야 하며, 가능하면 프로세싱 과정에 적은 부하를 소비하도록 여러 서비스들로 분리해야 한다.
애플리케이션 플랫폼의 기본 서비스를 마이크로커널( microkernel) 컴포넌트로 캡슐화한다. (불필요하게 크거나 복잡성을 증가시키지 않도록 하기 위해) 마이크로커널 내에 구현할 필요가 없는 핵심 기능은 내부 서버(internal server)로 분리시켜야 한다. * Solution(해법) * 마이크로커널(microkernel) 1. 컴포넌트들 간에 서로 통신할 수 있도록 각 컴포넌트를 독립된 프로세스에서 실행할 수 있는 기능을 포함한다. 2. 파일이나 프로세스처럼 시스템 범위(system-wide) 리소스를 저장하는 역할을 한다. 3. 다른 컴포넌트들이 자체 기능에 액세스할 수 있도록 인터페이스를 제공한다.
외부 서버(external server)는 기반 마이크로커널에 대한 외부 서버 자제의 뷰를 구현한다. 클이이언트(client)는 마이크로커널에서 제공하는 통신 기능을 사용함으로써 외부 서버와 통신한다. * Solution(해법) * 외부 서버(external server) 1. 마이크로커널의 인터페이스를 응용하는 메커니즘을 사용한다. 2. 모든 외부 서버는 그 자체로 애플리케이션 플랫폼 역할을 하는 독립된 프로세스이다. 그러므로 Microkernel 시스템은 다른 애플리케이션 플랫폼을 통합하는 애플리케이션 플랫폼으로 간주될 수 있다.
Microkernel 패턴은 다섯 가지 종류의 컴포넌트가 참여하여 구성된다. * Structure(구조) * 내부 서버(internal server) * 외부 서버(external server) * 어댑터(adapter) * 클라이언트(client) * 마이크로커널(microkernel)
Microkernel Internal Server * Structure(구조) • 협력자 • Internal Server • 협력자 • Microkernel 클래스 Microkernel 클래스 Internal Server • 책임 • 핵심 메커니즘을 제공한다 • 통신 기능을 제공한다 • 시스템 종속성들을 • 캡슐화한다 • 리소스를 관리하고 제어한다 • 책임 • 추가 서비스를 구현한다. • 특정 시스템에 맞춰진 • 구현을 갭슐화한다.
External Server Client * Structure(구조) • 협력자 • Microkernel • 협력자 • Adapter 클래스 External Server 클래스 Client • 책임 • 자체 클라이언트를 위한 • 프로그래밍 인터페이스를 • 제공한다. • 책임 • 특정 외부 서버 하나와 • 연결된 애플리케이션 • 역할을 한다.
Adapter * Structure(구조) • 협력자 • External Server • Microkernel 클래스 Adapter • 책임 • 클라이언트와 통신하는 • 기능 등의 시스템 종속성을 • 숨긴다 • 클라이언트를 대신해 • 외부 서버의 메서드를 • 호출한다.
OMT다이어그램 * Structure(구조) Figure. The microkernel pattern (http://www.vico.org/pages/PatronsDisseny/Pattern%20MicroKernel/)
시나리오 I 은 클라이언트가 외부 서버에 서비스를 호출할 때의 동작을 설명 * Dynamic(동작)
시나리오 II 는 외부 서버가 내부 서버에서 제공하는 서비스에 대한 요청을 받았을 때 Microkernel 아키텍처의 동작 설명 * Dynamic(동작)
Microkernel 시스템을 구현하기 위해 다음 단계를 수행한다. * Implementation(구현) 1단계. 애플리케이션 도메인을 분석한다. 2단계. 외부 서버를 분석한다. 3단계. 서비스를 카테고리로 분류한다. 4단계. 카테고리들을 분할한다. 5단계. 1단계에서 파악해낸 모든 카테고리에 대해 일관적이고 완전한 오퍼레이션 집합과 추상집합을 찾는다. 6단계. 요청 전송과 검색(retrieval)을 위한 전략을 결정한다. 7단계. 마이크로커널 컴포넌트를 구조화한다. 8단계. 마이크로커널의 프로그래밍 인터페이스를 정의한다. 9단계. 마이크로커널의 메모리 블록, 디바이스, 디바이스 컨텍스트 등의 모든 시스템 리소스들을 관리하는 책임을 맡는다. 10단계. 내부 서버를 독립된 프로세스나 공유 라이브러리로 설계해 구현한다. 11단계. 외부 서버를 구현한다. 12단계. 어댑터를 구현한다. 13단계. 실행시킬 준비를 모두 마친 Microkernel 시스템을 위해 클라이언트 애플리케이션을 개발하거나 기존에 있던 클라이언트 애플리케이션을 사용한다.
하이드라의 개발이 끝나고 난 후에 애플(Apple)의 맥 OS(Mac OS) 운영체제를 에뮬레이션하는 외부 서버를 통합해야 한다고 가정 * Example resolved(예제 심화) • * 하이드라에서 맥 OS 에물레이션을 제공하려면 다음과 같은 작업이 필요. • 하이드라 마이크로커널 위에 (맥 OS가 제공하는 모든 프로그래밍 • 인터페이스를 구현하는) 외부 서버를 구축한다.물론 외부 서버에는 • 맥킨토시 사용자 인터페이스 정책도 포함시켜야 한다. • 2. (클라이언트에 동적으로 연결되는) 라이브러리 형태로 설계된 어댑터를 • 제공한다. • 3. 맥 OS에 필요한 내부 서버들을 구현한다.
클라이언트-서버 간접 연결 Microkernel 시스템 Distributed Microkernel 시스템 * Variant(변형)
마크(Mach)[Tan92] 아메바(Amoeba)[Tan92] 코러스(Chorus)[Cho90] 윈도우 NT[Cus93] MKDE(Microkernel Databank Engine) * Known use(용례)
장점 Distributed Microkernel 변형의 추가적인 장점 * Consequence(결과) 이식성(portability)이 보장된다. 유연성(flexibility)과 교환가능성(extensibility)이 확보된다. 정책과 메커니즘을 분리할 수 있다. 범위(scalability)이 확보된다. 신뢰성(reliability)이 지원된다. 투명성(transparency)을 제공한다.
단점 * Consequence(결과) 성능(performance) 하락이 우려된다. 설계와 구현이 복잡해진다.
Broker 아키텍처 패턴 Reflection 아키텍처 패턴 Layers 아키텍처 패턴 * See also(관련자료)