Search
Close this search box.

#앱 개발

#아키텍처

#안드로이드 개발자

 

 

2024년 2월, 구글이 배포한 ‘Now in android’ 앱 예제가 개발자들 사이에서 큰 논란을 불러일으켰습니다.

구글의 앱 예제가 기존의 클린 아키텍처와 SOLID 원칙을 따르지 않는다는 이유에서였는데요.

 

 

Yazon2006 이라는 개발자가 구글의 앱 구조는 의존 관계를 역전시켜, 도메인 계층이 데이터 계층에 의존하도록 설계되었다며 클린 아키텍처의 핵심 원칙을 위반했다고 주장했습니다.

 

→ 클린 아키텍처는 비즈니스 로직을 포함한 도메인 계층이 데이터 계층에 의존해서는 안된다는 원칙이 있으며, 이 원칙에 따르면 데이터 계층은 도메인 계층에 의존해야 하고 도메인 계층은 기술적 세부 사항에 독립적이어야 합니다.

 

따라서 Now in android가 클린 아키텍처를 따르고 있지 않기 때문에 이를 참고하는 안드로이드 주니어 개발자에게 혼동을 줄 수 있으니 클린 아키텍처를 따르도록 프로젝트의 구조를 변경하거나, 클린 아키텍처를 따르지 않는다고 명시하라고 주장했고,

 

 

이로 인해 구글은 문서에 “구글 가이드에 나와있는 아키텍처는 클린 아키텍처와 다를 수 있다” 는 내용을 추가합니다. 

 

하지만, “안드로이드 앱 아키텍처” 구글링을 통해 공식 아키텍처 가이드를 찾고, 구글 안드로이드 가이드에 있는 예제를 찾아서 권장 사항을 맹목적으로 따라하던 주니어 앱 개발자들은 

클린 아키텍처에 대한 각기 다른 해석과 설명으로 어떤 아키텍처를 써야할지 혼란에 빠지게 되는데요.

 

그렇다면, 구글 가이드의 아키텍처와 기존의 클린 아키텍처 중 어느 것을 사용해야 하는 걸까요?

 

 | 구글 가이드의 아키텍처 vs 클린 아키텍처

 

 

앞서, 구글 가이드에 있는 앱 아키텍처는 기존에 알던 클린 아키텍처와는 다르다고 말씀드렸는데요. 

구글 가이드에서 제시하는 아키텍처와 클린 아키텍처는 모두 안드로이드 앱 개발에서 각각 중요한 역할을 하지만, 설계 철학과 구조적인 차이점이 있습니다.

1. 구조적 차이

– 구글 가이드: 구글은 안드로이드 개발을 위해 MVVM(Model-View-ViewModel) 패턴을 기반으로 한 아키텍처를 권장합니다. MVVM은 앱의 데이터와 UI를 분리하여 ViewModel을 통해 데이터를 관리하고, UI와 비즈니스 로직 사이의 의존성을 줄이는 것을 목표로 하는데요. 이 방식은 간결한 구조와 빠른 개발 속도를 중시하며, 안드로이드 앱 개발에 최적화된 경량화된 패턴을 제공합니다.

– 클린 아키텍처: 클린 아키텍처는 소프트웨어를 여러 계층(Layer)으로 나누어 구조화하는 패턴을 가지고 있습니다. 이를 통해 비즈니스 로직(도메인), 애플리케이션 로직 및 UI를 명확하게 분리하는데요. 클린 아키텍처는 의존성 역전(Dependency Inversion)을 통해, 상위 계층이 하위 계층에 의존하지 않고 인터페이스를 통해 상호작용하게 하여, 유연성과 확장성을 극대화합니다.

 

(출처 ㅡ Medium – Now in android는 클린 아키텍처와 SOLID를 따르지 않는다”)



2. 의존성 관리

– 구글 가이드: 구글에 가이드에 있는 아키텍처는 주로 의존성 주입(Dependency Injection)을 통해 클래스 간 의존성을 관리하며, ViewModel과 LiveData 같은 안드로이드 프레임워크에 의존하는 경우가 많습니다. 이러한 의존성은 빠르게 코드를 작성하는 데 유리하지만, 특정 프레임워크에 종속될 수 있습니다.

– 클린 아키텍처: 클린 아키텍처는 의존성 역전 원칙(Dependency Inversion Principle, DIP)을 따르며, 상위 계층이 하위 계층에 직접 의존하지 않도록 인터페이스를 사용합니다. 비즈니스 로직이 외부 UI나 데이터베이스 같은 인프라 계층에 의존하지 않기 때문에, 각 계층은 독립적으로 테스트하거나 변경할 수 있습니다.

 

3. 확장성과 유지보수

– 구글 가이드: 구글의 권장 아키텍처는 상대적으로 간단하고 빠르게 구현할 수 있으며, 소규모 앱에서 매우 효과적입니다. 하지만 규모가 커질수록 복잡해질 수 있고, 비즈니스 로직과 UI 간의 의존성이 남아있을 가능성이 있어 유지보수가 어렵게 될 수 있습니다.

– 클린 아키텍처: 반면 클린 아키텍처는 여러 계층이 독립적으로 동작하므로, 유지보수와 확장이 용이합니다. 특히, 앱이 커질수록 이 아키텍처의 장점이 극대화되는데요. 테스트 가능성도 높아져, 각 계층을 독립적으로 테스트할 수 있는 구조입니다. 다만 초기 설계와 구현은 구글 가이드 방식보다 복잡할 수 있는 단점을 가지고 있습니다.

 

4. 사용 사례

– 구글 가이드: 구글의 아키텍처 가이드는 안드로이드 개발에서 자주 사용하는 MVVM 패턴을 중심으로 구성되어 있어, 안드로이드 앱 개발에 특화된 방식을 제시합니다. 이는 소규모 프로젝트나 MVP를 빠르게 구현하는 데 유리하죠.

– 클린 아키텍처: 클린 아키텍처는 어떤 플랫폼에서도 적용할 수 있는 일반적인 소프트웨어 설계 패턴으로 안드로이드뿐 아니라 웹, 서버 등 다양한 분야에서 사용할 수 있으며, 특히 대규모 시스템에서 유리합니다. 하지만 안드로이드 앱에 적용하려면, MVVM이나 구글 가이드와의 조화를 잘 고려해야 합니다.

 

결론적으로 구글 가이드에 나와있는 아키텍처는 안드로이드 개발에 최적화된 간결하고 실용적인 구조를 제공하지만, 규모가 커질수록 유지보수와 확장성에서 한계를 느낄 수 있습니다. 반면, 클린 아키텍처는 장기적인 유지보수성과 확장성을 중시하는 설계 방식이지만, 초기 설정과 복잡성이 더 높습니다.

 

따라서, 두 아키텍처의 차이점을 제대로 이해하고 프로젝트의 성격, 규모, 장기적인 목표에 따라 적합한 아키텍처를 선택하는 것이 중요한데요. 그러나 실무에서의 클린 아키텍처는, 사실 국내에선 아직까지 제대로 배울 수 있는 방법이 없었습니다.

 

| 실무에서의 클린 아키텍처, 배우고 싶다면

 

이처럼, 클린 아키텍처에 대한 각기 다른 해석과 설명으로 어떤 아키텍처를 써야할지 혼란에 빠진 주니어 앱 개발자들을 위해 14년차 안드로이드 개발자 테드박이 직접 등판하여 패스트캠퍼스와 함께 “확장성과 유지보수에 용이한 클린아키텍처” 강의를 출시했습니다!

 

[테드박의 안드로이드 앱 개발 : 확장성과 유지보수에 용이한 클린 아키텍처]

 

이 강의에서는 국내 GDE 4인 모두가 인정하는 개발자,

대기업부터 창업, 스타트업 리드까지 다양한 규모의 프로젝트를 이끌었던 14년차 안드로이드 앱 개발자 테드박의 실무에서의 클린 아키텍처 적용 노하우를 공개한다고 하는데요.

 

클린 아키텍처의 기본 원리부터 영화 프로젝트를 통한 실습, 그리고 5가지 상황별 클린 아키텍처의 실무 적용 팁까지, 클린 아키텍처의 모든 것을 알려준다고 합니다.

 

테드박이 직접 답변해주는 질의응답 게시판부터, 강의에서 사용된 프로젝트 코드까지 모두 제공해드린다고 하니 놓치지 마세요!

 

14년차 안드로이드 앱 개발자 테드박에게 클린 아키텍처 노하우를 전수받는 강의!

지금 바로 확인해 보세요.

 

https://bit.ly/3TMe5CL





끝없이 이어질 인공지능의 이야기
AI:ing에서 당신의 커리어 성장이 시작됩니다.

ALL

IT

AI:ING only

AI Double UP

AI 자격증(AICA)

이벤트