[Dev Submmit] 주관적인 DI 가이드

Harry The Great
해리의 유목코딩
3 min readOct 25, 2019

본 내용은 Google Dev Submit 19에서 발표된 An Opinionated Guide to Dependency Injection on Android 내용의 요약을 중점으로 작성하였습니다.

DI(Dependency Injection)의 장점

다분히 고리타분한 이야기지만 의존성 주입 즉 DI는 코드의 재사용성을 높이고 테스트를 쉽게 하며 코드 간의 상호의존성을 유연하게 유지할 수 있습니다.

올바른 툴선택

역시 구글은 대거를 강력추천했습니다 😣

직접 주입은 작은 규모의 프로젝트에서 매우 유용하지만 프로젝트의 규모가 커지면 커질수록 코드의 양이 기하급수적으로 많아지고 중복되는 코드도 많아질 수밖에 없습니다. 반면 서비스 로케이터는 이런 문제를 어느 정도 해결할 수 있지만 서비스 로케이터 역시 근본적으로는 주입하는 대상이 많아지면 많아질수록 유지보수에 대한 문제가 커지게됩니다. 특히 Koin의 경우도 프로젝트의 규모가 커질수록 런타임 에러로 인한 앱의 불안정성이 상당히 큰 문제 되고 유지보수비용 역시 높아지게 됩니다.

반면 대거는 초기 프로젝트를 구성함에 있어 높은 비용이 들어가지만 어느 정도 프로젝트의 규모가 커진다면 유지보수에 대한 비용이 크게 증가하지 않습니다. 대거는 DI가 빌드 과정에서 주입되기 때문에 다른 두 방법에 비해 프로덕션 환경에서 매우 안정적으로 작동합니다.

세션의 전반적인 내용은 “다른 거 쓰지 말고 대거를 써라”였습니다. 물론 세션제목이 주관적인 가이드(An Opinionated Guide)였지만 사실상 대거 사용가이드(…)

Dagger-android

대거 안드로이드는 대거 위에서 작동하는 플러그인으로 액티비티와 프래그먼트 등에서 대거를 더 쉽게 사용할 수 있도록 도와줍니다. 구글에서는 안드로이드에서 대거를 에 많은 노력을 기울였지만 여전히 많은 개발자들이 사용에 어려움을 겪고 있어 새로운 기능들을 추가하기보다는 조금 더 쉽고 심플하게 사용할 수 있는 쪽으로 중점을 두고 있다고 합니다.

마치며

개인적으로 좋아하는 Koin프로젝트가 구글 DI세션에서는 언급조차 안된 게 조금 서운하긴 하지만 그만큼 Dagger가 구글에서 믿고 쓰는 DI툴이라는 걸 어필하는 것 같기도 합니다. 현재 구글은 지메일, 구글 포토, 유튜브 등 많은 주력 애플리케이션을 Dagger를 사용하여 개발하고 있다고 합니다.

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.