경험 중심 1인칭 답변
졸업 프로젝트로 실시간 위치 공유 기반 약속 관리 앱을 Android로 개발했습니다. 당시 구조는 MVVM 아키텍처를 채택했고, Repository 패턴으로 로컬 DB(Room)와 원격 API 호출을 분리했습니다.
가장 까다로웠던 성능 이슈는 실시간 위치 업데이트 시 배터리 소모와 앱 프리징 문제였습니다. 초기에는 UI 스레드에서 위치 데이터를 직접 처리했는데, 위치 업데이트가 집중되면 UI가 약 0.5초씩 멈추는 현상이 반복됐습니다. 프로파일링 결과 메인 스레드 과부하가 원인이었습니다.
해결 방법으로는 위치 수신 로직을 Coroutine + Flow로 전환해 백그라운드에서 처리하고, UI는 최신 상태만 받아 갱신하도록 분리했습니다. 또 업데이트 주기를 활동 중 5초, 백그라운드 30초로 다르게 설정해 배터리 소모를 줄였습니다. 이후 프리징이 사라지고 배터리 사용량도 약 35% 감소했습니다.
팀원 2명과 함께 진행했고, 저는 아키텍처 설계와 백엔드 연동을 맡았습니다. 주 2회 코드 리뷰로 서로의 코드 품질을 함께 챙기는 습관을 만들었고, 이 경험이 이후 협업 방식의 기준이 됐습니다.