Medium - 10 Common Software Architectural Patterns in a nutshell
in Trend
Trend 파악을 Medium 기고문 요약 포스팅 - 일반적인 소프트웨어 아키텍쳐 패턴 10가지 요약
큰 단체의 시스템이 어떻게 디자인 되는지 궁금해 하신적이 있나요? 대부분 소프트웨어 개발 착수 전에 우리는 요구되는 기능과 속성들의 질을 충족시키는 적절한 아키텍쳐를 선택해야합니다. 따라서 우리는 아키텍쳐를 디자인에 적용하기 전에 다양한 아키텍쳐에 대해 이해하고 있어야 합니다.
What is an Architectural Pattern?
위키피디아를 참고하자면,
아키텍쳐 패턴은 일반적으로 소프트웨어 구조에서 발생하는 문제를 주어진 상황에서 해결하는 재사용 가능한 솔루션 입니다. 아키텍쳐 패턴은 소프트웨어 디자인 패턴과 비슷하지만 좀 더 넓은 영역입니다.
이 기사에서는 다음 10가지의 아키텍쳐 패턴에 대해서 장점과 단점, 사용예를 간략히 설명하겠습니다.
- Layered pattern
- Client-server pattern
- Master-slave pattern
- Pipe-filter pattern
- Broker pattern
- Peer-to-peer pattern
- Event-bus pattern
- Model-view-controller pattern
- Blackboard pattern
- Interpreter pattern
1. Layered pattern
이 패턴은 하위 작업의 그룹이 특정 레벨의 추상화로 나눌 수 있는 프로그램 구조에 사용할 수 있습니다. 각 레이어는 상위 레이어에게 서비스를 제공합니다.
일반적인 정보 시스템에서 찾을 수 있는 가장 흔한 4개의 레이어들은 다음과 같습니다.
- Presentation layer (또는 UI layer)
- Application layer (또는 service layer)
- Business logic layer (또는 domain layer)
- Data access layer (또는 persistence layer)
사용예
- 일반적인 데스크탑 응용 프로그램
- 인터넷 상업용 웹 응용 프로그램
Layered pattern
2. Client-server pattern
이 패턴은 두 파티로 구성됩니다. 하나의 서버와 다수의 클라이언트 입니다. 서버 컴포넌트는 다수의 클라이언트 컴포넌트들에게 서비스들을 제공합니다. 클라이언트는 서버에게 서비스를 요청하고 서버는 관련된 서비스를 클라이언트에게 제공합니다. 게다가 서버는 계속해서 클라이언트의 요청을 확인합니다.
사용예
- 이메일, 문서 공유, 은행 업무와 같은 온라인 응용 프로그램
Client-server pattern
3. Master-slave pattern
이 패턴은 마스터와 슬레이브라는 두 단체로 구성됩니다. 마스터 컴포넌트는 일을 분산하여 슬레이브 컴포넌트에게 전달하고 슬레이브 컴포넌트가 반환하는 결과 값들을 종합하여 처리하고 반환합니다.
사용예
- 자기 복제가 있는 데이터 베이스에서 마스터DB는 원본으로 간주되고 나머지 슬레이브DB는 마스터DB와 동기화 됩니다.
- 컴퓨터 시스템의 버스에 연결된 주변 연결 장치 (마스터와 슬레이브 드라이브)
Master-slave pattern
4. Pipe-filter pattern
이 패턴은 데이터의 흐름을 생산하고 처리하는 시스템 구조에 사용할 수 있습니다. 각 처리 과정은 필터 컴포넌트 내에서 종료됩니다. 처리될 데이터는 파이프들을 통하여 전달됩니다. 이 파이프들은 버퍼링이나 동기화 목적으로 사용될 수 있습니다.
- 컴파일, 어휘분석, 파싱, 의미분석, 그리고 코드 생성
- 생물 정보공학의 워크플로우
Pipe-filter pattern
5. Broker pattern
이 패턴은 분리된 컴포넌트를 가진 분산 시스템에 사용됩니다. 이 컴포넌트들은 원격 서비스 요청에 따라 서로 상호작용할 수 있습니다. Broker 컴포넌트는 컴포넌트 간의 커뮤니케이션을 조정하는 역할입니다.
서버들은 서비스와 특성 같은 정보들을 broker에게 제공합니다. 클라이언트는 broker에게 서비스를 요청하고 broker는 등록된 서버중 가장 적당한 서버를 클라이언트에게 리다이렉트 해줍니다.
사용예
- Apache ActiveMQ, Apache Kafka, RabbitMQ, JBoss Messaging 들과 같은 메시지 브로커 소프트웨어
Broker pattern
6. Peer-to-peer pattern
이 패턴에서 개별의 컴포넌트들은 peers들입니다. 피어들은 클라이언트처럼 다른 피어들에게 서비스를 요청할 수도 있고 서버처럼 다른 피어들에게 서비스를 제공하는 것이 가능합니다. 피어는 클라이언트나 서버 혹은 둘 역할을 모두 수행하며 시간에 따라 동적으로 역할을 바꿉니다.
사용예
Peer-to-peer pattern
7. Event-bus pattern
이 패턴은 이벤트 소스, 이벤트 리스너, 채널, 이벤트 버스라는 4개의 주요 컴포넌트를 가지고 있고 주로 이벤트를 처리합니다. Source들은 특정 채널의 이벤트 버스를 통해 메시지를 전달합니다. 리스너들은 특정 채널을 구독합니다. 리스너들은 구독 중인 채널에 메시지가 전달되면 알림을 받습니다.
사용예
- 안드로이드 개발
- 알림 서비스
Event-bus pattern
8. Model-view-controller pattern
MVC패턴으로 잘 알려져있는 이 패턴은 인터랙티브 응용 프로그램을 다음의 세 파트로 분리합니다.
- model - 데이터와 핵심 기능을 포함
- view - 사용자에게 정보를 표시함, 하나 이상의 뷰가 정의될 수 있음
- contoller - 사용자의 입력을 처리 MVC패턴은 사용자가 표시되어야 할 정보와 입력되는 정보, 그리고 내부적으로 표현되어야 할 정보를 분리합니다. 이것은 컴포넌트의 결합도를 낮추고 효율적인 코드의 재사용을 가능케 합니다.
사용예
Model-view-controller pattern
9. Blackboard pattern
이 패턴은 non-deterministic한 문제에 적합합니다. 블랙보드 패턴은 3가지 주요 컴퓨넌트로 구성됩니다.
- blackboard - 솔루션 공간의 객체를 포함하는 구조화된 글로벌 메모리
- knowledge source - 특수화된 모듈과 리프리젠테이션
- contol component - 선택, 설정, 실행 모듈
모든 컴포넌트는 블랙보드에 접근해야 합니다. 컴포넌트는 블랙보드에 추가될 새로운 정보를 생성할 수 있습니다. 컴포넌트는 블랙보드의 특정 종류의 데이터를 찾거나 존재하는 knowledge source의 패턴과 일치하는 데이터를 찾을 수 있습니다.
사용예
- 음성인식
- 차량 식별 및 추적
- 단밸질 구조 식별
- 음파 신호 해석
Blackboard pattern
10. Interpreter pattern
이 패턴은 전용 언어로 작성된 프로그램을 해석하기 위한 컴포넌트를 디자인 할 때 사용합니다. 그것은 주로 특정 언어로 쓰여진 프로그램을 어떻게 해석하는지 명시합니다. 기본적인 아이디어는 언어의 각 심볼에 대한 클래스를 가지는 것 입니다.
사용예
- SQL과 같은 데이터 베이스 쿼리 언어
- 커뮤니케이션 프로토콜을 설명할 때 사용되는 언어
Interpreter pattern
구조적 패턴 요약
아래의 테이블은 각 구조 패턴의 장점과 단점을 요약한 것입니다.
구조적 패턴 요약
이 기사가 유용했길 바랍니다. 여러분들의 의견이 궁금하네요😇
읽어 주셔서 감사합니다.😊
예이!😃
Summary
- 아키텍쳐 패턴 10가지의 장점, 단점, 사용예 파악