본문 바로가기

Android/Architecture12

[Android] 클린아키텍처 vs Google의 앱 아키텍처 안드로이드 앱을 설계할 때 흔히 접하게 되는 두 가지 아키텍처가 있습니다. 하나는 소프트웨어 아키텍처의 고전이라 불리는 클린 아키텍처(Clean Architecture)이고, 다른 하나는 Google이 공식적으로 권장하는 앱 아키텍처(Google App Architecture)입니다. 이 두 구조는 겉보기에 비슷해 보이지만, 그 철학과 구현 방식에서 명확한 차이가 존재합니다. 클린 아키텍쳐 vs Google의 앱 아키텍쳐Google의 안드로이드 문서에서 소개되고 있는 앱 아키텍쳐는 클린 아키텍쳐가 아닙니다.밥 아저씨의 클린 아키텍쳐와 Google의 앱아키텍쳐는 서로 다른 구조입니다. 클린아키텍처는 소프트웨어 시스템을 간단하게 만들기 위한 것입니다. 이 구조는 의존성 역전 원칙(Dependency Inve.. 2025. 4. 4.
[Android] MVI 패턴이란? MVI란 무엇인가?Model, View, Intent의 앞글자를 따와 만든 아키텍쳐 패턴을 말한다. Model: UI에 반영될 상태를 의미한다. 그러므로 MVP 또는 MVVM 모델의 정의와는 다르다.View: UI 그 자체이다. View, Activity, Fragment, Compose 등이 될 수 있다.Intent: 사용자 액션 및 시스템 이벤트 MVI 왜 등장했을까? (MVVM과 비교)MVVM의 문제점1. 상태 관리의 복잡성ViewModel에서 여러 개의 LiveData 또는 StateFlow를 사용하여 상태를 관리해야 한다.이로 인해 관리해야 하는 상태가 많아져 유지보수가 어려워진다.2. 양방향 데이터 흐름으로 인한 상태 충돌 가능성View와 ViewModel이 동시에 상태를 변경할 수 있어 예기.. 2025. 2. 28.
[Android] SAA(Single Activity Architecture)란? SAA(Single Activity Architecture)SAA는 Google I/O 2018  에서 언급된 내용으로,하나의 또는 적은 Activity만을 사용하고 나머지 화면을 Fragment로 구성한 구조로, Jetpack Navigation과 함께 사용되는 구조이다. Jetpack Navigation에 대해 자세한 내용을 알고싶다면 아래 링크를 참고하자https://jtm0609.tistory.com/114 [Android] Jetpack Navigation Component 딥 다이브Navigation ComponentNavigation Component는 안드로이드 JetPack 라이브러리 중 하나로 사용자의 상호작용에 따라 화면간의 이동을 구현하는데 도움을 준다.이를 사용하면 개발자를 대신해.. 2024. 12. 17.
[Android] DTO vs DAO vs Entity 안드로이드에서 클린 아키텍처를 공부해보신 분들이면, 아래 용어들에 대해서 자주 접하게 됩니다.DTO, DAO, Entity각각에 대해서 차이는 무엇이며, 어떤 개념을 가지고 있는지 알아보겠습니다. DTO (Data Transfer Object)DTO는 단어 그대로 데이터 전송 객체를 의미합니다. 쉽게 말해서  HTTP 통신시 JSON 타입의 Request Body와 Response Body를 생각하면 된다.계층 간의 데이터 교환을 하기 위해 사용하는 객체API 호출 시 서버로부터 받은 JSON 형태의 데이터를 매핑할 수 있는 data class화면에 노출시키지 않는 data가 포함된다면 domain 모듈의 model에 필요한 data만 mapping 하는 작업이 필요 DAO (Data Access Obj.. 2024. 12. 14.
[Android] MVVM 패턴 MVVM 패턴이 필요한 이유예를 들어 메모장 앱을 개발했고 동작에 필요한 모든 코드를 Activity에 때려박았다고 생각해보자. 이 때 사용자로부터 한가지 요청을 받는다.👩 : 민감한 메모에 비밀번호도 설정할 수 있게 해주세요요청을 받고 코드를 수정하다보면 이런 생각이 든다.아니... 이거 추가하다보니 이것도 고쳐야 되고... 이건 어떻게 수정해야 될지 모르겠고...위의 방식으로는 코드간의 결합도가 너무 높아져 유지보수가 어려워진다. 따라서 유지보수와 확장을 용이하게 하기 위해 관심사를 분리해 코드의 결합도를 낮춰야 한다.그러기 위해 채택한 디자인 패턴이 MVVM 패턴이다. MVVM 패턴MVVM 패턴은 Model + View + ViewModel 을 합친 용어이다.Model실제 데이터에 접근하는 데이터.. 2023. 9. 19.
[Android] ViewModel 이란? 들어가기전에,,,ViewModel에는 MVVM 패턴 에서 언급되는 ViewModel과,테스트와 유지보수가 쉬운 앱을 만들 수 있도록 도와주는 AAC(Android Architecture Components) ViewModel, 두가지가 있다.MVVM 패턴의 ViewModelView와 Model 사이의 매개체 역할을 하고 View에 보여지게 되는 데이터를 가공하는 역할을 한다.AAC의 ViewModel앱의 Lifecycle을 고려하여 UI 관련 데이터를 저장하고 관리하는 역할을 한다.구글에서는 MVVM 패턴을 사용하여 앱을 만들 것을 권장하고 있고 MVVM의 ViewModel을 구현할 때 AAC ViewModel을 사용해서 구현하는 것이 좋다.이전 포스팅에서 언급한 LiveData와 함께 사용되는 View.. 2023. 9. 19.