안드로이드 개발

안드로이드 개발자 면접 준비 : 안드로이드 아키텍쳐 기본 원칙 (1)

륨륨이 2023. 6. 21. 16:09
반응형

구글에서 공식적으로 추천하는 안드로이드 앱 아키텍쳐에 대해 공부한 내용을 기록합니다.

아키텍쳐란

안드로이드 앱은 유저와의 인터렉션을 담당하는 화면, 네트워크 통신, 받은 데이터를 가공하는 복잡한 연산 로직 등 다양한 역할을 하는 코드 조각들로 이루어져 있습니다.

 

아키텍쳐란 이 코드 조각들을 어떤 식으로 분류하고 관리할지를 설계하는 것입니다. 추상적인 개념이라서 처음엔 막막하게 느껴질수도 있겠지만 다행이도 그동안 많은 컴퓨터 과학자들이 연구해 온 아키텍쳐의 기본 원칙을 먼저 익힌다면 개발 실무에서 충분히 좋은 아키텍쳐를 구성할 수 있습니다.

원칙 1. 관심사 분리 (Separation of concerns)

이 원칙은 가장 중요하고 다행이도 직관적으로 쉽게 이해할 수 있는 내용입니다. 결국은 한 곳에서 너무 다양한 일을 하도록 두지 말고 역할에 따라 분리하자는 원칙입니다.

  • 분리가 된 각 구성 요소는 자신의 역할에 집중하며 독립적으로 변경될 수 있으므로, 코드를 이해하기 쉽고 수정하기도 용이해집니다.
  • 단위 테스트와 통합 테스트를 수행하기 쉬워지므로 품질 관리에도 도움이 됩니다.

 

위 이미지의 가장 바깥쪽 UI Layer, Domain Layer, Data Layer 와 같이 각 관심사에 따라 레이어가 분리되어 있는 모습이 이상적입니다.

 

예를 들어, 하나의 Activity 안에 UI 관련 로직과 함께 그때 필요한 서버 API통신까지 같이 구현이 되어 있는 상태를 가정해 보겠습니다. 만약 새로운 액티비티에서 같은 네트워크 콜을 구현해야 한다는 요구사항이 있다면, 재사용을 할 수가 없어서 재사용 할 방법을 고민하면서 새로운 화면을 만들어야 합니다. 처음부터 액티비티는 UI 관련 로직만 담당하도록 역할을 제한해서 구현하고, 네트워크 콜은 별도의 레이어에서 구현을 함으로써 관심사 분리 원칙을 지켰다면 추가 구현을 하기에 훨씬 쉬웠을 것입니다.

 

관심사 분리 원칙은 객체지향 특징 중 '캡슐화(Encapsulation)' 와도 깊은 관련이 있습니다. 캡슐화란 간단히 말해서 관련된 역할을 하는 함수와 데이터를 한 곳으로 모으고, 공개해야 하는 인터페이스 외에는 숨겨서 외부에서 접근하지 못하게 하는 객체지향 기법을 뜻합니다. 객체지향의 캡슐화를 잘 구현함으로써 관심사 분리의 원칙을 지킬 수 있습니다.

반응형