⚜️ [Android] Architecture와 Design Pattern의 차이

yeonjeen·2024년 5월 9일
2

Android

목록 보기
4/10

지난 주 MVVM에 대해서 알아보면서 MVVM을 아키텍처라고 이야기하는 아티클도 있고, 디자인 패턴이라고 이야기하는 아티클도 있어서 그 차이에 대해 알아보고 MVVM은 아키텍처인지 디자인 패턴인지 이야기해보려고 합니다:)


1️⃣ 아키텍처란?


우리가 안드로이드 개발을 하면서 이야기하는 '아키텍처'는 정확히 '소프트웨어 아키텍처'에 해당한다.

그럼 정확히 '소프트웨어 아키텍처'가 무엇인지 알아보자


간단하게 아키텍처에 대해서 설명하면 위의 사진과 같이

시스템을 구성하는 서브 시스템, 컴포넌트와 같이 구성요소 간의 관계를 관리하는 시스템의 구조

라고 이야기 할 수 있다.

우리가 건물을 지을 때 전체적인 구조나 각 부분의 기능, 재료등을 결정하는 것처럼
소프트웨어 아키텍처는 소프트웨어의 구성 요소들이 어떻게 상호 작용하고 동작해야 하는지에 대한 체계적인 계획이다.

2️⃣ 디자인 패턴이란?


우리가 개발을 하면서 접하게 되는 디자인 패턴은 '소프트웨어 디자인패턴'이라고 한다.

정확한 그 개념은

소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 일반적인 해결책

이라고 이야기 할 수 있다.

프로그램 개발 과정 속에서 자주 나타나는 문제들을 쉽게 해결하기 위한 방법으로 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 바탕으로 이후에도 재사용할 수 있기 좋은 형태로 가공하여 정리한 것을 의미한다

3️⃣ 아키텍처와 디자인 패턴의 차이

아키텍처와 디자인패턴 모두 발생하는 문제에 대한 솔루션을 제시한다는 공통점이 있다.

하지만 아키텍처는 프로젝트 전체의 뼈대에 영향을 주는 것이라면


디자인 패턴은 건물의 색이나, 수도공사를 어떻게 진행할지와 같은 좀 더 세부적인 영역이다. 개발에서는 클래스의 범위나 함수의 목적 등이 그 예시가 될 수 있다.

그렇다면 디자인 패턴은 아키텍처의 하위영역인걸까?

내가 이해한 것이 맞다면 하위영역이라기 보다는 조금 더 작은 영역의 개념이라고 생각한다.

둘은 유사성을 가지고 있지만 그 영향력이 어디까지 미치는지에 따라 아키텍처와 디자인 패턴으로 나누는 것 같다.

4️⃣ MVVM은 아키텍처일까? 디자인 패턴일까?

나는 MVVM은 '아키텍처'라고 생각한다. 왜냐하면 MVVM을 적용한다고 하면
Model, View, ViewModel로 패키지를 분리하려고 할 것이다.

즉, MVVM은 프로젝트 패키지까지 영향을 주는 영역이기 때문에 나는 아키텍처라고 생각한다.

그럼에도 사람들이 MVVM에 대해 설명할 때 아키텍처와 디자인 패턴을 모두 언급하는 이유는 MVVM이 디자인 패턴을 사용하여 구현한 아키텍처 패턴이기 때문일것이다.

MVVM은 데이터 바인딩을 통해 View와 ViewModel간의 효율적인 통신을 가능하게 하며, 이것이 디자인 패턴 중 하나인 Observer패턴과 관련있기 때문이다.

0개의 댓글