android-kotlin

kotlin 앱 아키텍처 가이드

cheesecrust1008 2023. 8. 18. 00:55

일반적인 android 앱은 구성 요소, fragment등이 어우러져서 앱을 구성한다.

 

그런데 각각의 구성요소들은 독립적이기 때문에, 비순차적으로 실행될 수 있으며, 운영체제나 사용자가 언제든지 앱 구성요소를 소멸시킬 수 있습니다.

 

이러한 이벤트는 직접 제어할 수 없기 때문에 앱 구성요소에 애플리케이션 데이터나 상태를 저장해서는 안 되며 앱 구성요소가 서로 종속되면 안 됩니다.

 

따라서 앱의 확장성을 고려하여 아키텍처를 적용시킵니다. 

 

맨 처음 할 일은 관심사 분리입니다. 

 

여기서 관심사 분리란?

 

나는 처음에 관심사 분리를 domain을 나누는 의미로 받아 들였다. 그리고 의미가 거의 유사하다는 것을 깨달았다. 

 

각각의 영역은 분리된 관심사를 가지고, 이 기능들이 명확하게 나누어져야 한다.

 

그 이후에는 데이터 모델에서 UI를 도출합니다.

 

데이터 모델은 UI 요소들로 부터 독립적이기 때문에, 먼저 만듭니다.

 

이때에 데이터 모델은 지속가능한 모델을 사용하는 것이 좋습니다.

 

단일 소스 저장소

앱에서 새로운 데이터 유형을 정의할 때는 데이터 유형에 단일 소스 저장소(SSOT)를 할당해야 합니다. SSOT는 데이터의 소유자이며, SSOT만 데이터를 수정하거나 변경할 수 있습니다. SSOT는 이를 위해 불변 유형을 사용하여 데이터를 노출하며, 다른 유형이 호출할 수 있는 이벤트를 수신하거나 함수를 노출하여 데이터를 수정합니다.

이 패턴에는 여러 가지 이점이 있습니다.

  • 특정 유형 데이터의 모든 변경사항을 한곳으로 일원화합니다.
  • 다른 유형이 조작할 수 없도록 데이터를 보호합니다.
  • 데이터 변경사항을 더 쉽게 추적할 수 있도록 합니다. 따라서 버그를 발견하기가 쉬워집니다.

오프라인 중심 애플리케이션의 애플리케이션 데이터 정보 소스는 주로 데이터베이스입니다. 정보 소스가 ViewModel이거나 UI인 경우도 있습니다..

 

'android-kotlin' 카테고리의 다른 글

@OptIn(ExperimentalMaterial3Api::class) 없애기  (0) 2023.08.21
kotlin UDF  (0) 2023.08.21
kotlin 앱 구성요소  (0) 2023.08.17
Kotlin @OptIn(ExperimentalMaterial3Api::class)  (0) 2023.08.15
선언형 UI  (0) 2023.08.10