본문 바로가기
개발/Architecture & Design Pattern

아키텍처 스타일, 패턴 (Architectural Style and Pattern)

by 피로물든딸기 2024. 7. 19.
반응형

Architecture & Design Pattern 전체 링크

 

아키텍처 스타일 (Architectural Style)

- 시스템의 구조와 구성 요소들 간의 조직된 상호작용 방식을 기술하는 패턴의 집합

- 일반적인 설계 접근 방식을 나타내며, 특정 문제 해결을 위한 구체적인 패턴보다는 더 큰 규모와 범위에서 사용

- Client-Server, Peer-to-Peer, Event-Driven Architecture, Service-Oriented Architecture, ...

 

아키텍처 패턴 (Architectural Pattern)

- 재사용 가능한 해결책을 제공하는 고수준의 설계 템플릿

- 시스템의 기본 구조를 설계하고, 구성 요소 간의 관계와 상호작용을 규정하고, 여러 품질 속성을 동시에 고려

- MVC 패턴, Layered Architecture, Microservices Architecture, ...

 

Data Flow Architecture - Batch Sequential, Pipe and Filter, Process Control

Data Centered Architecture - Repository, Blackboard

Implicit Invocation Architecture - Event-Based Style, Message-Based Style 

Interaction-Oriented Architecture - MVC, PAC

Hierarchical Architecture - Main-Subroutine, Master-Slave, Layered 

Distributed Architecture - Client Server, Multi-Tiers, Broker, Dispatcher, SOA


Data Flow Architecture

- 입력 데이터들에 대한 변환으로 디자인이 정해진다.

- 데이터 흐름의 패턴이 명확하다.

- 프로세스들 간의 다른 상호 작용이 없다.

 

Batch Sequential

Components : 독립적인 프로그램

Connectors : Files

관계 : 하나의 프로그램에서 생성된 파일이 다음 프로그램의 입력으로 사용된다.

제약사항 : 각 프로그램은 다음 프로그램이 시작되기 전에 완전히 실행되어야 한다.

장점 : 단순한 구성, 일괄 처리 최적화, 각 처리 단계 재사용, I/O가 일치하는 경우 처리 단계 교체 가능

단점 : 실시간 처리 불가, 병목 현상, 제한된 가용성

 

Pipe and Filter

Components : Filters 

Connectors : Pipes

관계 : 파이프의 Source의 끝이 출력 포트와 연결되고, Sink의 끝은 입력 포트와 연결된다.

제약사항 : 필터들은 각각 독립적인 개체여야 한다.

장점 : 단순한 구성, 필터 재사용, 시스템 유지보수 및 향상 용이, 필터의 분산 병렬처리

단점 : 장시간 실행 연산은 비적합, fault tolerance가 낮음, 독립된 필터에 의한 연산 오버헤드 발생

 

Process Control

Components : Control Unit, Processing Unit

Connectors : Variables (Set Point, Input 등)

제약사항 : Controlled Variable은 Set Point 만큼 유지되어야 한다.

장점 : 최적의 프로세스 조건 유지, 신뢰성, 견고성

단점 : 복잡한 설계, 처리 및 제어 유닛 실패, 오작동 또는 보안 공격이 제어 시스템을 방해


Data Centered Architecture 

- 중앙 집중식 데이터 저장소를 가진다.

- 주변의 모든 SW 구성 요소가 데이터를 공유한다.

 

Repository

Components : Data Store

Connectors : Data Client

제약사항 : Client 간의 직접적인 상호작용이 없어야 한다.

장점 : 새로운 Data, Client 추가 용이 (확장성), Client 재사용, Client 간의 오버헤드를 줄일 수 있음

단점 : 저장소의 공격으로 인해 시스템의 가용성과 보안이 감소, 데이터 구조에 높은 의존성, 데이터 분산 시 추가 비용

 

Blackboard

Components :  Blackboard, Knowlege Source, Control

장점 : 새로운 Data, Client 추가 용이 (확장성), 특정 Client 변경 및 재사용 가능, 동시성 제공

단점 : 저장소의 공격으로 인해 시스템의 가용성과 보안이 감소, 데이터 구조에 높은 의존성, 테스트의 어려움


Implicit Invocation Architecture

- 소프트웨어 구성 요소가 느슨하게 결합된 통신 구조를 가진다.

- 구성 요소 간의 결합도가 낮아 확장성과 유연성이 높다.

- Implicit Invocation : 프로시저를 직접 호출하는 대신, 이벤트가 다른 모듈의 호출을 암시적으로 유발하는 것

 

Non-buffered Event-Based

- 옵저버 패턴 (1:N, N:1)

Component : Event Source (Subject), Event Listener (Observers)

제약사항 : 이벤트가 발생하면, 이벤트 리스너는 다른 이벤트를 기다리지 않고 즉시 처리해야 한다. (Synchronous)

 

장점 : 프레임워크 가용성, 컴포넌트 재사용성, 시스템 유지 보수, 유연성

단점 : 리스너는 응답 순서를 예측하고 검증하기 어려움, 간접 호출 오버헤드, 메시지 기반보다 강한 결합

 

Buffered Message-Based 

- Point-to-Point Message Architecture (1:1)

- Publish-Subscribe Messaging Architecture (1:N)

Component : Message Producer, Message Consumer / Publisher, Subscriber

Connector : Queue / Pub-Sub

제약사항 : 일반적으로 비동시식 처리, 동시에 실행될 필요는 없다. (Asynchronous)

 

장점 : 익명성, 동시성, 메시지 전달에 대한 신뢰성 (제어, 우선 순위, 만료 기간 설정)

단점 : Queue의 용량 제한, 간접 오버헤드, 어려운 디버깅


Interaction-Oriented Architecture

- 사용자와 시스템 간의 상호작용을 데이터 추상화 및 비즈니스 데이터 처리와 분리한다.

 

MVC (Model-View-Controller)

- 대화형 애플리케이션 설계에 일반적으로 사용

- 사용자에게 표시될 정보와 내부 정보를 분리하고 UI와 Model 간의 일관성을 보장한다.

- Model : 기본 데이터와 비즈니스 로직을 캡슐화

- View : 정보를 사용자에게 표시, Application Logic을 포함하지 않는다.

- Controller : 사용자 입력을 받아 모델로 변환, Application Logic을 포함하고, Model과 View 사이의 데이터 흐름을 관리

 

장점 : 모델과 뷰, 컨트롤러 객체는 런타임 대체가 가능, Platform에 맞는 뷰와 컨트롤러 구성 요소 구현이 가능

단점 : 복잡도, Model 변경 시 View의 불필요한 업데이트

 

PAC (Presentation-Abstraction-Control)

- 트리 형태의 계층 구조

- 각 PAC 에이전트는 Application 기능의 특정 측면을 담당한다.

- Presentation, Abstraction, Control로 구성

- Presentation : UI를 처리한다.

- Abstraction : Application Data와 Logic을 담당한다.

- Control : Presentation과 Abastraction 사이을 중개, 다른 에이전트의 제어와의 모든 통신을 처리한다.

 

장점 : 관심사 분리, 변경 및 확장 용이성, 다중 작업 지원

단점 : 복잡도 증가, PAC 에이전트 간 통신에 따른 오버헤드 증가


Hierarchical Architecture

- SW 시스템은 계층의 서로 다른 수준에서 논리적 모듈로 분해

- 하위 모듈은 인접한 상위 모듈에 서비스를 제공

 

Main-Subroutine

Components : Procedures, Functions

Connectors : Procedure Calls, Functional Calls

제약사항 : 중앙 집중식 구조, 단일 제어 스레드

장점 : 단순한 구조, 선형적인 제어 흐름, 테스트 용이성, 

단점 : 전역 데이터 공유로 인한 취약점 발생, 긴밀한 결합으로 인한 파급 효과 증가

 

Master-Slave

Master : 서비스의 호출을 구성, 모든 Slave로부터 결과를 받고 특정 전략에 의해 Slave 중 하나의 결과를 선택

Slave : 동일한 기능의 복제된 서비스를 Master에게 제공

장점 : Slave 구성 요소가 실패하더라도, 다른 Slave로 재할당 (장애 허용, Fault Tolerance), 병렬 처리, 확장성, 정확성

단점 : Master가 Single Point of Failure가 될 수 있음, 분산 환경에서의 통신 오버헤드 발생

 

Layered

Layer : 동일한 수준의 컴포넌트의 집합

관계 : 한 Layer의 컴포넌트가 다른 Layer의 컴포넌트를 사용할 수 있다.

제약 조건 : 비순환 구조, 최소 2개 이상의 Layer가 존재

장점 : Layer 간의 독립성, 병렬 처리, 테스트 용이성, 보안성, 재사용성

단점 : Layer가 많아질수록 성능 감소, 복잡성 증가, 너무 적은 Layer는 재사용, 변경 용이성, 이식성이 감소


Distributed Architecture

- 통신 네트워크를 통해 연결된 컴퓨팅 및 스토리지 장치의 모음으로 구분

- 메시지 전달, 원격 프로시저 호출, 원격 메소드 호출 등으로 통신

 

Multi-Tiers (2T : Client-Server, 3T : Middleware, ...)

Component : Client, Server, ...

Connetor : Request, Reply Connector

 

장점 : 책임 분리, Server Component의 재사용성, 병행성, 확장성, 효율적 자원 이용

단점 : Server 성능에 따라 병목 발생, Server가 Single Point of Failure가 될 가능성, 제한된 테스트, 보안 취약

 

Broker 

- 분산 컴퓨팅에 등록된 서버와 클라이언트 간의 통신을 조정하는 미들웨어 아키텍처

- Broker Comonent : 적절한 서버를 찾고, 요청 전송 및 분배, 클라이언트로 응답을 보내는 역할

- Server : 브로커에 등록하고 클라이언트에 대한 인터페이스를 제공

- Client : 브로커를 통해 서버에 Access

 

장점 : Location Transparency (클라이언트는 서버의 위치를 알 필요가 없음), 변경용이성, 확장성, 이식성, 재사용

단점 : 간접 접근으로 인한 비효율, 낮은 장애 허용 (Low Fault-Tolerance), 테스트 및 디버깅이 어려움

 

SOA (Service Oriented Architecture)

- 서비스 : 잘 정의되고, 다른 서비스들로부터 독립적이고 표준 프로그래밍 인터페이스를 통해 이용 가능한 비즈니스 기능

- SOA는 Application 구성 요소에 의해 네트워크 통신 프로토콜을 통해 다른 구성 요소에 서비스를 제공한다.

- Service Provider : 공개된 인터페이스로 하나 이상의 서비스를 제공하고, Intermediary Component 에 등록

- Intermediary Component : Service Consumer에게 서비스 관련 정보를 제공, 메시지 라우팅

- Service Consumer : 서비스를 직접 호출하거나 Intermediary를 통해 요청

 

장점 : 구성 요소가 독립적이므로 변경 용이성, Evolution 증가, 상호운용성, 재사용성, 확장성

단점 : 구축이 복잡하고, 미들웨어에 대한 오버헤드, 병목 현상, 성능 보장 미제공

 

Edge Computing

- Data 연산과 Storage를 Data의 Source에 가깝게 가져와서 대역폭을 절약하고 성능을 개선할 수 있다.

- Edge Device : 데이터를 수집하거나, Edge Data와 상호작용하는 실제 장치 (카메라, 센서 등)

- Edge Node : 데이터의 생성 지점과 가까운 위치에서 실행되는 시스템

- 클라우드 / 원격 데이터 센터 : Application을 호스팅하거나 서비스를 처리하고 Data를 저장하는 백엔드 인프라

 

장점 : Privacy, 속도, 가용성

단점 : 코어 외부에서 데이터가 처리되므로, 보안 사고가 날 가능성이 큼, 로컬 HW로 인한 비용

반응형

댓글