컴퓨터과학/0 + 소프트웨어 아키텍처(디자인 패턴)

[소프트웨어 아키텍처] 1-3) 아키텍처 패턴 스타일

힘들면힘을내는쿼카 2022. 9. 20. 01:48
728x90
반응형

2022.09.20 - [분류 전체보기] - [소프트웨어 아키텍처] 1-2) 소프트웨어 아키텍처 문서화와 평가

 

[소프트웨어 아키텍처] 1-2) 소프트웨어 아키텍처 문서화와 평가

2022.09.20 - [컴퓨터 공학/0 + 소프트웨어 아키텍처] - [소프트웨어 아키텍처] 1-1) 소프트웨어 아키텍처 기초지식 [소프트웨어 아키텍처] 1-1) 소프트웨어 아키텍처 기초지식 ✅ 아키텍처 기초 소프트

howisitgo1ng.tistory.com

 

 

아키텍처 패턴 스타일 왜 등장했는가???

 개발은 보통 완료된 후에도 오랜 시간 지속적으로 업그레이드되면서 향상된 서비스와 새로운 서비스를 제공해야 하는데,설계 없이 이런 유지보수, 진화의 작업을 하는 것은 장기적으로 큰 비용의 낭비를 가져오게 됩니다.

그래서 크고 복잡한 소프트웨어 시스템을 만드는 방법이 발전하게 되었습니다.

 

 

소프트웨어 아키텍처에 본격적으로 공부하기에 앞서

아키텍처 패턴 스타일의 주요 스타일에 대해서 간략하게 알아보자.!!

참고 사이트

 

 

 

🎨 아키텍처 패턴 스타일

시스템 분할, 전체 제어 흐름, 오류 처리 방침, 서브시스템 간의 통신 프로토콜을 포함한다.

  • 시스템 전체 구성 요소, 런 타임 제어, 데이터 전송 패턴 등을 명시한다.

 

먼저 용어 정리부터 간단하게 하자!

용어 정리

  • 모듈
    • 전체 프로그램 기능중에 특정 기능을 처리할 수 있는 소스코드
  • 모듈화
    • 소프트웨어의 성능 향상, 시스템 수정, 재사용, 유지관리 용이성을 위해 시스템의 기능들을 모듈 단위로 다누는 것
  • 추상화
    • 어떤 영역에서 필요로 하는 속성이나 기능을 추출하는 작업
    • 문제를 전체적이고 포괄적인 개념을 설계한 후, 이를 세분화 하여 구체화시켜 나가는 행위
      • 데이터 구조, 표현방법에 대한 추상화
      • 처리 과정에 대한 추상화
  • 상속성
    • 일반적인 개념의 객체에서 보다 구체적인 개념의 객체의 관계 표현
    • 상속관계의 클래스는 부모 클래스의 타입을 내포함
    • 부무 클래스의 속성과 기능을 자식 클래스에서 사용하거나 재정의
  • 다형성
    • 동일한 메시지, 동일한 구현에 대하여 각 객체가 다른 표현과 결과를 나타내는 것
    • 클래스의 상속, 인터페이스의 구현 시, 각각의 다른 구현을 가진 클래스들이 상위 타입으로 업캐스팅 되고
      이 때, 각 클래스에서 오버라이딩한 메서드가 존재하는 경우 동일한 상위 타입으로 선언된다 하더라도 각각 다른 인스턴스의 메서드가 호출되는 것
  • 정보 은닉
    • 모듈간에 데이터를 감춰 접근하거나 변경하지 못하도록 하는 기법
  • 캡슐화
    • 데이터를 감싸서 외부에서 사용 가능한 부분만을 제공
    • 클라이언트가 세부적인 사항을 알 필요 없음 
    • 단순 접근을 제공하여 오류 발생횟수 감소
    • 추상화 단계 중 정보은닉을 포함하는 행위
      • 객체의 속성과 메서드를 하나로 묶고, 실제 구현의 내용 일부를 감춰 은닉

 

주요스타일

 

클라이언트 서버

  • 하나의 서버와 다수의 클라이언트로 구성
  • 서버(1)
    • 자원을 관리하고, 클라이언트가 요청하는 기능이나 자원을 제공
  • 클라이언트(N)
    • 자원 사용을 위해 서버에 접속
  • 장점
    • 데이터 집중, 보안
  • 단점
    • 병목, 비용(서버), 비강인성
  • 활용
    • 이메일, 문서 공유, 기타 온라인 애플리케이션

 

계층형

  • 소프트웨어의 기능을 수직으로 상호 작용하는 여러 층으로 분할
  • 층 사이는 메시지를 교환
  • 각 하위 모듈은 특정한 수준의 추상화를 제공
  • 각 계층은 다음 상위 계층에 서비스를 제공
  • n-티어 아키텍처라고 불린다.
  • 장점
    • 추상화, 캡슐화, 응집성 높음, 재사용성
  • 단점
    • 이웃 층과의 커뮤니케이션이 제한적
  • 활용
    • 일반적인 데스크톱 애플리케이션
    • 이커머스 웹 애플리케이션

 

✨ 일반적으로 볼수 있는 계층 4가지

프레젠테이션 계층 (Presentation layer) - UI 계층 (UI layer) 이라고도 함

애플리케이션 계층 (Application layer) - 서비스 계층 (Service layer) 이라고도 함

비즈니스 논리 계층 (Business logic layer) - 도메인 계층 (Domain layer) 이라고도 함

데이터 접근 계층 (Data access layer) - 영속 계층 (Persistence layer) 이라고도 함

 

이벤트 기반 아키텍처

  • 이벤트 생산자
    • 이벤트 스트림 생성
  • 이벤트 소비자
    • 이벤트 수신 대기
  • 이벤트
    • 실시간으로 전달되어, 발생 즉시 소비자가 이벤트에 응답한다.
  • 장점
    • 캡슐화, 확장성
  • 단점
    • 복잡성, 테스팅이 어려움

현재 마이크로 서비스 아키텍처(MSA)에서 가장 많이 도입

참고: https://www.samsungsds.com/kr/insights/msa_architecture_edm.html

 

MVC

  • Model, Veiw, Controller로 분리한 패턴
  • View
    • 결과를 표시하기 위한 인터페이스(Model로 데이터를 입/출력)
  • Model
    • View 또는 Contoller가 데이터를 저장하는 저장소
    • Model을 통해서 ViewContoller는 데이터를 교환
  • Contoller
    • View에서 명령을 받으면 Model에 담긴 명령 데이터를 처리하고 결과를 다시 Model에 담아서 View에 제공
  • 장점
    • 확장성(여러개의 View 지원), 비동기, 각자의 역할에 더 충실()
  • 단점
    • 복잡성(메커니즘 이해 필요)
  • 활용
    • 웹 애플리케이션 설계 아키텍처(Spring MVC)

참고: (https://howisitgo1ng.tistory.com/entry/MVC-%ED%8C%A8%ED%84%B4-1-%EA%B9%80%EC%98%81%ED%95%9C?category=1003097)

 

파이프 필터

  • 필터 사이에 데이터를 이동시키며 단계적으로 처리
  • 데이터의 변환을 수행하는 필터로 구성
  • 파이프는 버퍼링 또는 동기화 목적으로 사용가능
  • 장점
    • 단순성, 재사용, 병렬성
  • 단점
    • 자원의 낭비
  • 활용
    • 컴파일러, 파싱, 의미 분석 필터

 

데이터 중심 아키텍처

  • 공유 데이터 저장소공유 데이터 접근자로 구성
  • 접근자는 공유 데이터를 추가, 조회, 삭제, 수정(CRUD)
  • 블랙보드
    • 제어스레드 포함, 옵져버 패턴 사용
  • 저장소
    • 공유 데이터를 질의하여 변경사항 발견
  • 장점
    • 낮은 결합, 확장 용이
  • 단점
    • 단일 장애지점

 

peer to peer 스타일

  • peer(컴포넌트)는 동등하여 서비스를 요청하는 클라이언트인 동시에 서비스를 제공하는 서버
  • 대칭적인 시스템(동일한 전송, 수신 데이터 양을 가지기 때문)
  • 블록체인
    • 각 노드가 상대방 노드를 비교하여 일관성 유지
  • 장점
    • 전담 서버 없음, 확장성, 신뢰성
  • 단점
    • 중앙 제어 불가, 노드 증가시 컴포넌트 성능 저하

 

 

728x90
반응형