Jetpack Navigation, Single Activity Architecture

→ 사용 이유 : Single Activity로 앱을 구성하는 것이 앱의 용량을 가볍게 하는 데에도 영향을 미치며, 세미나에서 Jetpack Navigation을 통해 Single Activity 구조를 적용했던 것을 활용하기 위해서, 해당 기술을 적용하기로 결정함.

MVVM

→ 사용 이유 : MVVM 패턴과 MVI 패턴 중, MVI 패턴은 프로젝트에 적용해본 경험이 아직 없고 깊게 공부해보고 싶다는 생각에 MVI 패턴으로 결정했었음. 그러나 우리 프로젝트의 볼륨을 고려하였을 때, 뷰의 양이나 서버 통신의 양, 기능의 난이도 등에 따라, MVI 패턴까지 완벽하게 적용하기에는 무리가 있을 것 같다고 판단함. (2차 대면 회의에서 결정함.) 이에 따라, 앱잼 내에는 MVVM 패턴을 적용하고, 추후 스프린트에서 Event와 Side Effect를 명확하게 분리하는 등 MVI 패턴을 적용하기로 결정함.

Clean Architecture

→ 사용 이유 : 구글 권장 아키텍처와 클린 아키텍처 중에서 결정을 하게 되었는데, 유지보수에 용이하며 조금 더 데이터와 도메인 레이어를 명확하게 분리함으로써 로직을 세세하게 파악할 수 있는, 클린 아키텍처를 선정하게 됨. 팀원 모두 이번 기수를 하면서 클린 아키텍처를 적용해본 경험이 있기 때문에, 해당 아키텍처를 앱잼 내에 적용하는 데에 큰 무리는 없을 것이라고 판단함.

Hilt

→ 사용 이유 : 서버 통신 코드의 양이 많아질 시, 의존성 주입을 수동으로 해주기에는 코드가 다소 복잡해질 것 같다고 판단함. 그리 하여 의존성 분리에 효율적이며 팀원 모두 사용 경험이 있는 DI Module인 Hilt를 사용하기로 결정함.