What is Architecture Pattern?

suojae·2023년 11월 19일
0

[iOS] 아키텍쳐

목록 보기
1/11
post-thumbnail


관심사의 분리

  • 여러 특성을 가진 대상을 이해하기 위해서는 한 번에 한 가지 측면에 주의를 집중시켜야합니다 -> 관심사의 분리 사고방식 중요
  • 복잡한 문제를 작게 나누어 하나의 작은 문제를 집중하여 해결합니다
  • 이렇게 해결한 문제를 재조합해서 시스템을 작동시킵니다.
  • 모든 설계의 일반적 원칙은 결국 분리조합으로 이루어지게 됩니다.



아키텍쳐(Architecture)

  • 분리와 조합에 있어 아키텍쳐는 소프트웨어의 계략적인 계층분리 방법입니다.
  • 이 때 "계략적인"이라는 것은 적합한 아키텍쳐는 개발환경, 팀규모, 비즈니스 로직의 크기, 테스트 코드 작성여부 등에 따라 달라지기 때문입니다.



패턴이란?

  • 건축가 크리스토퍼 알렉산더의 사상:
    a. 알람브라 궁전, 중세 이탈리아 다리, 오래된 사찰 등 명확하게 언어로 설명할 수는 없지만 보편적으로 아름답다고 느끼는 요소들이 존재한다.
    b. 시대를 초월한 "무명의 특성"에 도달하기 위해, 자신의 본성에 도달하기 위해서는 패턴언어가 필요하다 주장
    c. 새로운 문제는 많지 않다. 건축에 자주 사용되는 253가지 패턴을 발견하고 올바른 조합을 숙달해 패턴 랭귀지를 구축했다
  • 따라서 패턴이란 반복적으로 나타나는 문제의 해결책이다.



아키텍처 패턴 (Architecture Pattern)

  • 아키텍쳐(계략적인 계층분리 방법)도 완전히 새로운 것은 없다.
  • 아키텍쳐(계략적인 계층분리 방법)도 세부 내용을 패턴화 하여 반복적으로 사용할 수 있다.
  • 정리하자면 아키텍처 패턴이란 반복적으로 활용할 수 있는 해결책으로 구성된 계층분리 방법이다.



GUI(Graphic User Interface) 아키텍쳐

  • 아키텍쳐에는 크게 두 종류가 있습니다 (GUI 아키텍쳐, 시스템 아키텍쳐)
  • GUI Application: 유저와 상호작용할 수 있는 인터페이스를 제공하는 애플리케이션
  • GUI Architecture는 GUI Application의 계층분리방법을 다루고 있습니다. 대표적인 예시로 MVC, MVP, MVVM, Flux등이 있습니다.
  • 대부분의 GUI 아키텍쳐는 M(Model)과 V(View)를 포함하고 있습니다.



GUI 아키텍쳐 패턴 사상 - PDS(Presesntation Domain Separation)

  • 프레젠테이션 (Presentation)
    a. 뷰(View)
    b. UI 배치, 상태, 이벤트 처리 로직을 다루는 계층입니다.
    c. 유저와 상호작용을 위해 입력(터치스크린)과 출력(렌더링) 처리를 담당하고 있습니다

  • 도메인(Domain)
    a. 모델(Model)
    b. 시스템 본래의 관심사항

  • 즉 PDS란 시스템 본래의 관심사항(도메인)을 UI(프레젠테이션)로부터 분리시키는 사상!




PDS의 장점

  • 프레젠테이션 코드는 도메인 코드와 서로 다른 스킬을 요구하기 때문에 나뉘어져 있어야 이해하기 쉽다.
  • 프레젠테이션 코드의 재사용성을 높일 수 있다
  • UI는 테스트가 어렵기 때문에 UI와 모델을 분리시켜 놓으면 테스트가 쉬워진다.
  • 이러한 관점에서 PDS 개념의 구현체이자 GUI 아키텍쳐 시조가 MVC(Model-View-Controller)이다.



시스템 아키텍처

  • PDS는 단순하게 UI인 것과 UI가 아닌 것을 분리하는 것에 그침
  • PDS에 따르면 UI가 아닌 모든 것이 시스템 본래의 관심사항인 도메인이 되어버림
  • 따라서 URLSession 과 같이 네트워크 통신이나 CoreData같은 로컬저장도 시스템 본래 관심이라 보기 힘든 것도 도메인이 되어버린다.
  • 위와 같은 UI도 아니고 도메인도 아닌 것들을 비즈니스 로직의 일종인 애플리케이션 로직이라고 지칭하여 순수한 도메인 로직과 분리합니다.
  • 이렇게 애플리케이션 로직도메인 로직을 나누어 모델 계층을 세부화한 것을 시스템 아키텍쳐라고 부릅니다.
  • iOS에서의 대표적인 시스템 아키텍쳐는 VIPER와 RIBS가 있습니다.

profile
Hi 👋🏻 I'm an iOS Developer who loves to read🤓

0개의 댓글