Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

공부해보잠

아키텍처 패턴 본문

자격증/정보처리

아키텍처 패턴

heejk 2025. 1. 29. 01:52
아키텍처 패턴(Patterns)의 개요

아키텍처 패턴은 소프트웨어 시스템을 설계할 때 참조할 수 있는 전형적인 해결 방식이나 예제를 의미합니다. 이를 통해 아키텍처의 기본 구조와 서브시스템 간의 관계를 정의하고 지침을 제공합니다.

 

특징:

  • 소프트웨어 시스템의 구조를 구성하기 위한 기본적인 윤곽 제시.
  • 서브시스템과 그 역할, 서브시스템 사이의 관계, 설계 규칙과 지침 포함.
  • "아키텍처 스타일" 또는 "표준 아키텍처"라고도 불림.
  • 기존 컴포넌트를 활용하여 개발 시간 단축 및 비용 절감 가능.

아키텍처 패턴의 장점

개발 효율성 향상

  • 시행착오를 줄여 개발 시간을 단축하며 고품질의 소프트웨어 생산 가능.

안정성 보장

  • 검증된 구조를 바탕으로 안정적인 개발 진행 가능.

의사소통 용이

  • 이해관계자 간 공통된 아키텍처 공유로 소통이 간편.

유지보수 용이성

  • 구조를 쉽게 이해할 수 있어 유지보수 작업이 간편.

특성 예측 가능

  • 개발 전에 시스템의 특성을 예측할 수 있어 안정적인 설계 가능.
패턴 설명 적용 예
레이어 패턴 시스템을 여러 계층(Layer)으로 나누어 각 계층이 특정 역할을 담당하도록 구성. OSI 7 계층, 소프트웨어 모듈 구조 등.
클라이언트-서버 패턴 서버와 클라이언트로 구성된 분산 시스템 아키텍처로, 클라이언트는 요청, 서버는 응답. 웹 서버와 브라우저, 데이터베이스 시스템.
파이프-필터 패턴 데이터를 처리하는 필터와 데이터 흐름을 나타내는 파이프로 구성된 구조. 컴파일러, 스트리밍 데이터 처리.
모델-뷰-컨트롤러 패턴 데이터를 관리하는 모델, 사용자 인터페이스를 나타내는 뷰, 상호작용을 제어하는 컨트롤러로 구성. 웹 애플리케이션, GUI 기반 애플리케이션.

부가설명:
아키텍처 패턴은 개발의 가이드라인 역할을 하며, 이를 활용해 표준화된 방식으로 안정적이고 유지보수 가능한 시스템을 설계할 수 있습니다.


레이어 패턴(Layers Pattern) 

레이어 패턴은 시스템을 계층(Layer)으로 구분하여 구성하는 대표적인 소프트웨어 아키텍처 패턴입니다.

 

특징:

  • 서브 시스템들이 계층 구조를 이루며, 하위 계층은 상위 계층에 서비스를 제공하고, 상위 계층은 하위 계층을 클라이언트로 사용.
  • 두 개의 마주보는 계층 사이에서만 상호작용이 이루어지므로 변경 사항 적용이 용이.
  • 특정 계층만 교체하여 시스템을 개선할 수 있어 유지보수성과 확장성이 뛰어남.
  • 대표적인 예로 OSI 참조 모델이 있으며, 웹 애플리케이션에서도 흔히 사용됨.

 

 

이미지는 레이어 패턴의 계층 구조를 나타냅니다.

  • Layer n → 최상위 계층으로, 하위 계층을 클라이언트로 사용, n은 최상위 계층을 의미
  • Layer n-1 → 중간 계층으로, 상위 계층의 요청을 처리하고 하위 계층과 연결, n-1은 n보다 한단계 아래인 계층
  • Layer 1 → 최하위 계층으로, 데이터베이스나 하드웨어 같은 물리적 리소스와 직접 연결, 1은 최하위 단계를 의미
  • 실선(→): 기본적인 계층 간 데이터 흐름.
  • 점선(⋅⋅⋅→): 선택적 혹은 예외적인 계층 간 상호작용.

이 패턴을 활용하면 소프트웨어를 구조적으로 설계하고 유지보수성을 높이는 데 유용합니다.


클라이언트-서버 패턴(Client-Server Pattern)

하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴입니다.

 

부가설명 : 컴포넌트(Component)란?
소프트웨어 시스템에서 독립적으로 개발 및 배포될 수 있으며 특정 기능을 수행하는 모듈입니다.

 

특징 :

  • 사용자는 클라이언트를 통해서만 서버와 통신한다.
  • 클라이언트가 요청하면 서버는 응답을 제공하는 방식으로 서비스 제공.
  • 서버는 클라이언트 요청을 항상 대기하는 상태로 유지된다.
  • 클라이언트와 서버는 요청-응답을 제외하면 독립적으로 동작할 수 있다.

 

이 이미지는 클라이언트(Client)와 서버(Server)가 네트워크(TCP/IP)를 통해 요청(Request)과 응답(Response)을 주고받는 구조를 표현한 것입니다.

  • 클라이언트(Client) → 사용자의 요청을 서버에 전달
  • 서버(Server) → 클라이언트 요청을 처리하고 응답 제공
  • TCP/IP 프로토콜 → 클라이언트와 서버가 데이터를 주고받는 통신 방식

파이프-필터 패턴(Pipe-Filter Pattern)

데이터 스트림 절차의 각 단계를 필터(Filter) 컴포넌트로 캡슐화하여 **파이프(Pipe)**를 통해 데이터를 전송하는 패턴입니다.

 

특징

  • 데이터의 연속 처리: 필터들이 순차적으로 데이터를 처리하며 변환
  • 재사용성 증가: 독립적인 필터 컴포넌트를 쉽게 재사용 가능
  • 확장성 용이: 필터를 추가하거나 수정하여 다양한 변형 가능
  • 유연한 조합: 필터들을 재배치하여 새로운 파이프라인을 구축 가능
  • 데이터 변환 비용 발생: 필터 간 데이터 변환으로 인해 오버헤드가 발생할 수 있음
  • 대표적 사례: UNIX의 쉘(Shell) 명령어 파이프(| 연산자)

해당 이미지는 파이프-필터(Pipe-Filter) 패턴을 나타내며, Source(입력) → Filter1 → Filter2 → Sink(출력) 의 순서로 데이터가 이동하는 구조를 보여줍니다.

  • Pipe(파이프): 데이터가 흐르는 통로
  • Filter(필터): 데이터를 변환, 가공하는 역할
  • Sink(출력): 최종 결과를 출력하는 부분

 

부가 설명

  • 파이프라인(Pipeline): 여러 단계를 거쳐 데이터를 처리하는 방식
  • 데이터 스트림(Data Stream): 데이터가 연속적으로 흐르는 형태
  • 캡슐화(Encapsulation): 내부 구조를 감추고 필요한 기능만 제공하는 개념

모델-뷰-컨트롤러 패턴(Model-View-controller Pattern)

서브시스템을 3개의 부분으로 구조화하는 패턴이며, 각 부분의 역할은 다음과 같다.

  • 모델(Model) : 서브시스템의 핵심 기능과 데이터를 보관
  • 뷰(View) : 사용자에게 정보를 표시
  • 컨트롤러(Controller) : 사용자로부터 입력된 변경 요청을 처리하기 위해 모델에게 명령을 보냄

특징:

  • 각 부분이 독립적 → 서로 영향을 받지 않고 개발 가능
  • 여러 개의 뷰(View) 가능 → 동일한 모델을 다양한 방식으로 표시 가능
  • 대화형 애플리케이션(Interactive Application)에 적합

위 이미지는 MVC 패턴의 흐름을 보여주며,

  • Controller가 사용자 입력을 받아 Model을 갱신
  • Model은 데이터가 변경되었음을 View에 알림
  • View는 Model에서 데이터를 요청하여 사용자에게 표시

부가설명:

대화형 애플리케이션 : 사용자의 입력에 따라 실시간으로 반응하는 소프트웨어, 예를 들어 웹 애플리케이션이나 GUI 프로그램 등이 있다.


기타 패턴 (Other Architectural Patterns)

마스터-슬레이브 패턴 (Master-Slave Pattern)

  • 마스터 컴포넌트가 작업을 여러 개의 슬레이브 컴포넌트로 분할하여 실행한 후, 결과를 수집하는 방식
  • 마스터 : 작업을 분배하고 결과를 조합
  • 슬레이브 : 독립적으로 작업을 수행하고 마스터에게 결과 반환
  • 활용 : 장애 허용 시스템, 병렬 컴퓨팅 시스템
    • 부가설명
      • 장애 허용 시스템 : 일부 컴포넌트에 장애가 발생해도 전체 시스템이 정상적으로 작동하도록 설계된 시스템
      • 병렬 컴퓨팅 시스템 : 여러 개의 프로세서가 동시에 작업을 수행하여 성능을 향상시키는 시스템

브로커 패턴 (Broker Pattern)

  • 사용자가 원하는 서비스를 브로커 컴포넌트를 통해 요청하고, 브로커가 적절한 컴포넌트와 연결
  • 활용 : 원격 서비스 호출, 분산 환경 시스템
    • 부가설명
      • 분산 환경 시스템 : 네트워크를 통해 여러 개의 독립적인 시스템이 서로 협력하여 하나의 작업을 수행하는 환경

피어-투-피어 패턴 (Peer-To-Peer Pattern)

  • 각 피어(Peer) 가 클라이언트와 서버 역할을 동시에 수행
  • 클라이언트 : 서비스를 요청하는 역할
  • 서버 : 서비스를 제공하는 역할
  • 활용 : 파일 공유 시스템, 블록체인 네트워크 등
    • 부가설명
      • 멀티스레딩 : 하나의 프로세스 내에서 여러 개의 스레드를 실행하여 동시 작업을 처리하는 방식

이벤트-버스 패턴 (Event-Bus Pattern)

  • 특정 채널에서 이벤트를 발행(Publish) 하면, 이를 구독(Subscribe)한 리스너(Listener)가 이벤트를 처리
  • 4가지 주요 컴포넌트
    • 소스(Source) : 이벤트를 생성
    • 리스너(Listener) : 이벤트를 수신하고 처리
    • 채널(Channel) : 이벤트가 전달되는 통로
    • 버스(Bus) : 여러 채널을 관리하는 역할
    • 부가설명
      • 메시지(Message) : 시스템 간 데이터를 주고받기 위한 정보 단위로, 이벤트를 전달하는 데 사용됨

블랙보드 패턴 (Blackboard Pattern)

  • 공유 데이터 저장소(블랙보드) 를 여러 컴포넌트가 접근하여 데이터를 검색하고 활용하는 방식
  • 활용 : 음성 인식, 차량 식별, 신호 해석 등의 문제 해결

인터프리터 패턴 (Interpreter Pattern)

  • 특정 언어로 작성된 프로그램 코드를 해석하고 실행하는 방법을 정의
  • 각 기호(Symbol)마다 별도의 클래스를 두어 실행 방식을 결정
  • 활용 : 프로그래밍 언어 해석기, 수식 계산기, 정규 표현식 처리 등

 

출저 및 참고

정보처리 산업기사 기본서(시나공)

728x90

'자격증 > 정보처리' 카테고리의 다른 글

객체지향 분석 및 설계  (0) 2025.01.29
객체지향(Object-Oriented)  (0) 2025.01.29
소프트웨어 아키텍처  (0) 2025.01.28
주요 UML 다이어그램  (0) 2025.01.28
UML(Unified Modeling Language)  (0) 2025.01.28