본문 바로가기
Architecture

아키텍처(Architecture)

by 최지철 2023. 8. 13.
728x90
반응형

Architecture의 뜻은 여러가지로 사용된다.

가장 일반적인 뜻은 "건축학"을 뜻하기도 하며 현재에는 "구성", "구조", "설계 방식" 등을 포괄하는 의미로 사용되어진다.

 

Software Architecture는 단어 그대로 "소프트웨어 구조"이다.

 - 소프트웨어의 계략적인 계층 분리 방법이다.

 - 개발 환경, 팀 규모, 비즈니스 로직의 크기, 테스트 코드 작성 여부 등에 따라 적합한 아키텍처가 달라질 수 있다.

    입력과 출력을 어떻게 처리하는가? , 데이터 바인딩 엔진이 있는가? (개발환경)

   ▸ 개발팀의 규모가 어떻게 되는가? (팀 규모) 

   백엔드가 아닌 클라이온트 사이드에 비지니스 로직이 많은가? (비지니스 로직의 크기)

    TDD, 유닛 테스트 등 테스트 코드를 작성할 계획이 있는가? (테스트 코드 작성 여부)

    그 외에도 팀원들의 지식, 선호하는 동기화 방법 등 다양한 요인들에 의해 달라 질 수 있다.

 

관심사의 분리

애플리케이션은 렌더링, 데이터 가공, 네트워크 통신 ,상태 관리 등 성격이 다른 여러 문제들로 구성된 복잡한 프로그램이다

- 복잡한 문제를 더 작은 문제들로 나누고 한 번에 한 가지 문제에 집중하여 해결

- 작게 나누어 해결한 문제들을 재조잡하여 시스템을 작동시키는 것

- 모든 설계의 일반적인 원칙 : "분리" 와 "조합"

 

아키텍처, 패턴, 아키텍처 패턴

아키텍처 패턴 (Architecture pattern)

- 계략적인 계층 분리 방법인 아키텍처도 완전히 새로운 것은 거의 없다

   MVX( MVC, MVP, MVVM, Flue, etc..)

- 계층 분리 방법도 세부 내용들을 패턴화 하여 반복적으로 사용 할 수 있다.

  ▸ 뷰를 구축하는 공간

  ▸ 프레젠테이션 로직을 작성하는 공간

  ▸  비지니스 로직을 작성하는 공간

  여러 개체들 사이에서 중개자 역활을 하는 공간

  ▸ 화면을 이동하는 로직을 작성하는 공간

  ▸ 상태를 동기화 하는 방법

 

두 종류의 아키텍처 패턴

GUI 아키텍처

- GUI(Graphic User Interface) Application

- GUI 아키텍처

  ▸ GUI Application의 계층 분리 방법

  ▸ MVC, MVP, MVVM, Flux등

- 대부분의 GUI 아키텍처는 M(Model)과 V(View)를 포함하고 있다

  ▸ 모델과 뷰가 그만큼 중요한 계층이라는 생각을 기저에 깔고 있음을 알 수 있다.

  ▸ 구체적으로 모델과 뷰가 무엇이기에 중요한 계층으로 생각하는 걸까?

     -> 아키텍처 패턴의 사상이 깔려있다.

 

GUI 아키텍처 패턴의 사상 - PDS

Martin Fowler(2003), PresentationDomainSeparation

 

- 프레젠테이션(Presentation)

  ▸ 뷰(View)

  ▸ UI의 배치, 상태, 이벤트 처리 로직을 다루는 계층

  ▸ 입력( 키보드, 마우스, 터치스크린 등에서 오는 신호를 처리)과 출력(렌더링)

 

- 도메인(Domain)

  ▸ 모델(Model)

  ▸ 시스템 본래의 관심 사항

 

- 시스템 본래의 관심사항(도메인)을 UI(프레젠테이션)으로 부터 분리 시킨다.

 

PDS의 장점

- 프레젠테이션 코드는 도메인 코드와 서로 다른 종류의 스킬을 요구하기 때문에 나뉘어져 있을 때 더 이해하기 쉽다

- 프레젠테이션 코드를 매번 복사/붙여넣기 하지 않고 재사용할 수 있다

- UI는 테스트가 어렵기 때문에 UI와 모델을 분리시켜 놓으면 보다 테스트가 쉬워진다

 

PSD 개념의 구현체이자 GUI 아키텍처의 시조가 MVC( Model - View - Controller) 이다.

 

 

시스템 아키텍처

- GUI 아키텍처의 모델(도메인)

  ▸ PDS에 따라 관심사를 분리한 것은 어디까지나 프레젠테이션을 기준으로 한 것

  시스템 본래의 관심사항이라 하지만, 실제로는 UI와 무관한 모든 처리에 해당

  애플리케이션에는 UI에도 시스템 본래의 관심사항에도 해당되지 않는 작업들이 존재

       - 네트워크 통신으로 데이터 취득(URL Session)
       - 로컬에 데이터를 저장(Core Data)

       - 이런 작업들을 비즈니스 로직의 일종인 '애플리케이션 로직'이라고도 한다

- UI와 무관한 시스템들의 구조를 정형화한 아키텍처를 '시스템 아키텍쳐'라고 한다.

- iOS에서는 VIPER, RIBs가 대표적인 시스템 아키텍쳐이다

728x90
반응형

'Architecture' 카테고리의 다른 글

iOS(UIKit)에서의 Coordinator Pattern  (0) 2023.09.18
iOS(UIKit)에서의 CleanArchitecture+MVVM 예시 뜯어보기  (0) 2023.09.15
MVVM in iOS  (0) 2023.09.04
MVP (Model - View - Present)  (0) 2023.08.28
MVC(Model - View - Controller)  (0) 2023.08.16