운기의 블로그
안드로이드 모듈 본문
모듈이란?
모듈 시스템에서 독립적인 단위로서의 기능을 하는 부분
모듈은 하나의 시스템 안에서 독립적인 단위로서 그 자체로 하나의 완전한 기능을 수행 할 수 있고, 각기 다른 모듈을 합쳐 하나의 시스템으로 동작 할 수 있다.
모듈의 역사
1950년대에는 단일프로그래밍으로 엄청나게 긴 줄로 코드를 작성했다. 시간이 지나면서 1960년대 서브 루틴 이라는 개념을 도입 하면서 함수들을 분리하면서 코드를 재사용 할 수 있게 진화했다. 1970년대 모듈의 개념이 생기면서 코드의 관리와 재사용을 용이하게 하자는 흐름이 생겼고, 1980년대 들어오면서 객체 지향에 대한 개념이 등장하면서 모듈에 대한 관심이 더욱 커지게 되었고, 현재의 모듈 개념이 정착 된 것이다.
모듈을 왜 사용하는 거야?
<aside>
💡 가구를 구매 할 때, 전체 세트를 사는것이 아니라 부품을 조립해서 만드는 가구를 사서 집을 꾸민다. 이런 방식이 모듈을 사용한 코드랑 비슷한 개념이다.
</aside>
유지보수의 용이성: 고장 난 부품만 교체하기
조립식 가구를 사용하면 가구의 일부 푸품이 고장 났을 때, 전체 가구를 바꿀 필요가 없이 그 부품만 교체하면 된다. 의자의 다리가 고장 났을 때, 의자의 다리만 교체하거나 고쳐서 사용하면 된다.
모듈을 사용한 코드도 동일하다. 특정 기능에 문제가 생겼다면, 코드 전체를 수정하는게 아니라 문제가 있는 모듈로 만들어진 코드 부분만 수정하면 유지 보수가 훨씬 간편해 진다.
재 사용성: 부품을 재사용 할 수 있음
조립식 가구에서 경첩은 책장, 옷장, 서럽장 등 여러 가구에서 동일하게 사용 될 수 있다. 같은 경첩은 사용 되는 가구에 종류에 영향을 받지 않고 사용 할 수 있다.
이처럼 모듈을 사용한 코드에서도 특정 기능을 하나 만들어 두면, 다른 프로젝트에서도 해당 모듈을 가져다가 같은 기능을 반복해서 만들지 않아도 반복해서 사용을 할 수 있다.
확장성: 조립식 가구에 새 부품 추가하기
책장을 맨 처음에는 2단 책장을 사용하다가 추후에 책이 많아지면서 나중에 필요한 부품을 추가로 조립해서 3단, 4단, 5단으로 확장해서 사용 하기 쉽다.
로그인 모듈이라고 할 때, 처음에 기본 로그인만 필요한 상태에서, 소셜 로그인이 필요할 때, 유사 기능에 대해서는 쉽게 추가해서 확장 하는데 용이하다.
협업의 편리함: 여러 사람이 조립식 가구를 함께 조립하기
부품으로 나누어진 조립식 가구는 여러명이서 조립을 하고 합칠 수 있다.
모듈로 나눠진 코드는 기존에 여러줄로 작성된 코드에서 여러명이 작업하고 합칠 때, 많은 충돌이나는 걸 방지해 준다. 여러명이서 모듈로 나누고 각각의 기능을 작업하면 충돌이 날 확률이 줄어든다.
테스트의 간편함: 각 부품을 개별적으로 점검하기
조립식 가구를 테스트 할 때는, 개별 부품을 하나하나 제대로 동작 하는지 테스트를 할 수 있다. 그리고 문제가 발생하면 해당 부품만 수정 하면 된다.
모듈로 나눠진 코드 역시 모듈 단위로 테스트를 진행 할 수 있고, 문제가 발생하면 해당 모듈에 있는 코드만 수정하면 된다.
안드로이드 모듈은?
안드로이드에서 모듈을 생성 할 때 여러 개의 모듈이 존재한다.
Phone & Tablet
스마트폰 과 테블릿에서 실행되는 기본 애플리케이션 모듈이다.
apk 파일을 생성하기 위해서는 해당 모듈이 필요하다.
프로젝트를 생성하면 기본적으로 app 모듈이 생성되는데 이 모듈이 Phone & Tablet 으로 만든 모듈이다. 하나만 있어도 apk 파일을 생성하는데 문제가 없다.
Android Library
하나의 기능들은 만들 때는 Android Library 모듈을 이용해서 만든다.
해당 모듈은 apk 파일이 아니라 aar 파일로 빌드 되기 때문에 apk로 빌드시 크기를 줄일 수 있는 장점이 있다.
Java or Kotlin
도메인 레이어는 한 서비스에서 사용되는 모델과 비즈니스 로직을 관리하는 영역이기 때문에, 순수 자바 또는 코틀린으로 이루어져 있다. 그렇기에 도메인 모듈을 만들 때에는 Java or Kotlin 모듈을 사용해서 만드는 걸 추천한다.
'안드로이드' 카테고리의 다른 글
코루틴 - 기능 (1) | 2024.01.01 |
---|---|
코루틴 - 비동기 / 동시성 (1) | 2023.12.26 |
코루틴 - 코루틴의 뜻 (0) | 2023.12.26 |
안드로이드 - ROOM 사용하기 (0) | 2022.05.02 |
안드로이드 - tableLayout 자동 정렬 (0) | 2022.04.09 |