익숙한 사용 |
| | XML | - Compose보다 XML에 대한 지식이 많아 선택했다. |
| Architecture | MVVM | - ViewModel에서의 View 의존성을 끊고, 테스트가 용이해 진다.
View와 Model의 의존성을 줄여서 유지보수가 용이하다. |
| Design Pattern | Repository Pattern | - presentation 계층에서 데이터를 다루는 세부적인 방식을 추상화한다. |
| | Observer Pattern | - xml와 LiveData를 느슨하게 연결할 수 있다.
ViewModel에서의 View 의존성을 끊고, 테스트가 용이해 진다. |
| | Singleton Pattern | - 공통적으로 쓰이는 기능에서, 불필요한 객체 생성을 줄일 수 있다. |
| Jetpack Components | DataBinding | - findViewById보다 속도가 빠르고
컴파일 시 타입 검사를 하여 타입 안정성이 높다.
LiveData와 같은 Observer 패턴과 연계하여, 데이터가 업데이트될 때 UI 업데이트까지 연계할 수 있다.
activity나 fragment의 코드를 크게 간소화시킬 수 있다 |
| | ViewModel | - 액티비티, 프래그먼트 구성 변경 시에도 살아있기 때문에 ui 데이터를 쉽게 관리할 수 있다. |
| | LiveData | - 액티비티나 프래그먼트의 생명주기를 인식하여, 활성 상태인 경우에만 데이터를 업데이트한다. |
| Network | Retrofit | - 애너테이션 기반으로 간단하고 직관적인 인터페이스를 제공한다.
Coroutine과의 연계가 수월하다.
익숙한 사용 |
| | OkHttp | - Interceptor를 통해 공통 헤더를 추가할 수 있다.
캐싱이나 토큰 재발급 기능 등을 추가할 수 있다. |
| Asynchronous | Coroutine(+ Flow) | - 코틀린에서 지원해주는 비동기 라이브러리이기 때문에 안정성이 있다.
RxJava, Thread 등 다른 방법보다 효율적이고 가독성이 좋다.
동기 코드처럼 비동기 코드를 작성할 수 있다. |
| Third-Party Library | Firebase(FCM) | - 안정적으로 특정 사용자에게 실시간 알림을 보낸다.
Android 뿐만 아니라 iOS, 웹을 지원하기 때문에 추후 확장에 용이하다.
Firebase Analytics를 통해 메시지의 도달률, 클릭률 등의 성과를 분석할 수 있다.
Google 공식 문서 등 참고 자료가 충분하다. |
| Serialization | Moshi | - Gson보다 최신화가 되어있고 속도가 빠르다.
코틀린 널 안전성을 활용할 수 있다. |
| CI | Github Action(KtLint, Compile Check) | - 깃허브 레포지토리 코드와 통합해서 CI 기능들을 관리하기 용이하다.
다른 CI 도구 보다 학습 곡선이 낮다. |
| Other Tool | Notion | - 계층 별로 문서화하기 용이하다.
여러명이 동시에 작업하기에 용이하다. |
| | Figma | - 디자인하기 간편한 도구들을 제공한다.
여러명이 동시에 작업하기에 용이하다. |
| | Swagger | - Postman과 달리 계층별 나눠져 있어 한눈에 보기 편하다.
익숙한 사용 |
| | Kakao Map | - 주소 검색이 300,000회까지 무료라 충분하다고 생각해서 선택했다. |