안드로이드를 공부하다 보면 안드로이드 권장 아키텍처니, MVC, MVP, MVVM 등의 내용을 접할 수 있다. 이것들을 모두 알아보기 전에 아키텍처에 대해서 먼저 알아야 할 것이다.

아키텍처

아키텍처(architecture)는 다들 알다시피 직역하면 건축이다. 건축은 어떤 구조물을 계획하고 설계하고 건설하는 과정과 그 결과물을 의미한다.

소프트웨어 아키텍처에도 같은 정의를 사용할 수 있을 것 같다. 하나의 소프트웨어를 제작하기 위해 필요한 적합한 설계와 과정의 산출물을 소프트웨어 아키텍처 라고 할 수 있을 것이다.

마틴 파울러는 아키텍처를 다음과 같이 설명했다.

아키텍처는 한번 정하면 바꾸기가 힘든 것들을 말한다. 그렇기에 핵심가치를 담고 있기도 하기 때문에 개발에 참여하는 모든 이가 이해하고 합의하는 최소한의 것이다.

노련한 개발자(아키텍트)가 나눠주는 시스템 디자인에 대한 이해이다.

그렇다면 아키텍처는 다음과 같이 정리할 수 있을 것 같다.

결국 아키텍처를 적용하면 어느 정도 검증된 구조의 코드를 작성할 수 있고, 협업을 할 때 지켜야 할 약속으로 사용할 수 있다.

이 내용을 바탕으로 현재 흔히 안드로이드에 존재하는 아키텍처에 대해서 살펴보자. 다 알다시피 MVC, MVP, MVVM 등이 있다.

이것들의 공통점은 다 아키텍처를 계층별로 구성하고, 각 계층이름의 약어로 아키텍처 이름을 정했다는 것이다. 그렇다면 왜 이렇게 계층을 나누었을까?

관심사의 분리