architecture pattern

강정우·2023년 6월 24일
0

자습

목록 보기
8/11
post-thumbnail
  • 우선 이번에 정보처리기사 공부를 하며 배우는 것들이 신기하고 타 테크 블로그에서 봤던 문구와 단어들이 어렵게 보이고 무섭게 느꼈는데 점점 알아갈 수록 재미있다는 것을 느꼈다.
    그래서 다음엔 내가 우리 회사에 적용해보고싶은 스크럼 회의에 대해 자세히 정리하고 이번에는 공부하며 헷갈렸던 mcv pattern 과 archichecture patter에 대해 정리해보겠다.

아키텍처란?

  • 소프트웨어의 골격이되는 시스템의 구조 또는 구조체이다. 이는 비교적 쉽게 이해하려면 건축에 빗대어 표현하면 훨씬 이해하기쉽다.

  • 아키텍쳐에는 물론 좋은 방법이 계속해서 생기고 있지만 대표적으로 사용되는 특정 아키텍쳐들이 존재하고 이를 작성하는 SW에 맞춰 선택하여 그 구조대로 짜나아가면 된다.

설계 기본 원리

  1. 모듈화 2. 추상화 3. 단계적 분해 4. 정보은닉 정도가 있다.

의미가 불분명항 추상화와 단계적 분해에 대해 간단히 설명하면
추상화는 문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화 시켜나가는 것이다.

단계쩍 분해는 문제를 상위 중요 개념(소프트웨어의 기능)부터 하위 개념(알고리즘, 자료구조 등..)으로 구체화 시키는 분할 기법이다.

설계 과정

  1. 설계 목표 설정 2. 시스템 타입 결정, 3. 아키텍처 패턴 적용 4. 서브시스템 구체화 5. 검토 순으로 진행된다.

SW 아키텍처 패턴

1. Layers pattern

  • 각각의 서브시스템들이 계층 구조를 이루고 하위계층은 상위계층의 "서비스 제공자" 그 반대는 "클라이언트"가 된다.

  • 대표적으로 OSI 참조모델이 있다.

2. client-server patter

  • 하나의 서버와 다수의 클라이언트로 구성되는 패턴이다.

  • 서버와 클라이언트는 각각 독립적이며 res, res를 받기위해 동기화된다.

  • 서버는 항상 대기상태를 유지해야한다는 단점이 있다.

3. pipe-filter pattern

  • 데이터 스트림 절차의 각 단계를 filter 컴포넌트로 캡슐화하여 pipe를 통해 데이터를 전송하는 패턴이다.

  • 필터 컴포넌트는 재사용성이 좋고 확장서잉 좋다. 또한 이를 재배치하여 다양한 파이프라인 구축이 가능하다.

  • 주로 데이터 변환, 버퍼링, 동기화 등에 자주 사용된다.

  • 대표적으로 Unix의 shell이 있다.

4. mvc pattern

  • 사용자 인터페이스, 데이터 처리, 데이터 표현을 분리하여 시스템을 구성하는 패턴이다.

  • 대화형 app에 유리하다.

  • 헷갈리면 안되는게 front-end의 mvc pattern과 전혀 다른 구조이다.

5. master-slave pattern

  • 마스터 컴포넌트와 동일한 구조의 슬레이브 컴포넌트로 작업을 분할한 후, 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 동작한다.

  • 마스터 컴포넌트의 모든 작업의 주체이다.

  • 장애 허용 시스템과 병렬 컴퓨팅 시스템에서 주로 사용된다.

6. broker pattern

  • 우리아는 "브로커" 와 비슷한 일을한다.

  • 클라이언트가 원하는 서비스와 특성을 브러커 컴포넌트에 요청하면 해당 요청에 맞는 컴포넌트와 사용자를 연결해준다.

  • 원격 서비스 호출에 응답하는 컴포넌트들이 여러개 있을 때 적합하다.

  • 주로 분산 환경 시스템에서 활용된다.

7. peer-2-peer pattern

  • 피어 하나를 각각의 컴포넌트로 간주하며 각 피어는 서비스를 호출하는 클라이언트가 될 수도, 서비스를 제공하는 서버가 될 수도 있다.

  • 주로 멀티 스레딩 방식을 사용한다.

8. event-bus pattern

  • 소스가 특정 채널에 이벤트 메시리를 발행하면 해당 채널을 구독한 리스너들이 받아서 이벤트를 서리하는 방식이다.

  • 이 패턴에는 4개의 주요 컴포넌트가 존재한다.

  1. 이벤트를 생성하는 source 컴포넌트
  2. 이벤트를 수행하는 listener component
  3. 이벤트의 통로인 channel
  4. 채널을 관리하는 bus 가 있다.

9. blackboard pattern

  • 모든 컴포넌트들이 공유 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 형태로, 컴포넌트들은 검색을 통해 블랙보드에서 원하는 데이터를 찾을 수 있다.

  • 해결책이 명확하지 않은 문제를 처리하는데 유용한 패턴이다.

  • 주로 음성인식, 차량식별, 신호 해석 등에 주로 사용된다.

10. interpreter pattern

  • 프로그램 코드의 각 라인을 수행하는 방법을 지정하고 기호마다 클래스를 갖도록 구성된다.

  • 주로 특정 언어로 작송된 프로그램 코드를 해석하는 컴포넌트를 설계할 때 사용된다.

11. decorator pattern

  • 객체에 동적으로 기능을 추가할 수 있는 패턴이다.

  • 이 패턴은 상속보다 유연한 방식으로 객체를 확장할 수 있게 해준다.

  • 앞서 배웠던 TS의 decorator를 사용한다.

12. facade Pattern

  • 복잡한 시스템 또는 라이브러리를 단순화하는 인터페이스를 제공하는 패턴이다.

  • 이 패턴은 시스템의 복잡성을 감소시키고 사용자가 쉽게 상호작용할 수 있도록 도와준다.

13. singleton pattern

  • 인스턴스가 오직 하나만 생성되는 패턴이다.

  • 이 패턴은 전역적으로 접근 가능한 공유 인스턴스가 필요한 경우에 사용된다.

14. observer pattern

  • 객체 간에 일 대 다의 의존성을 정의하는 패턴이다.

  • 한 객체의 상태 변경이 다른 객체들에게 통지되고, 이들 객체는 자동으로 갱신된다.

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글