NewTrack 서비스 개발
배달대행 서비스 NewTrack 관리자 및 기사앱 설계 및 개발
Observer 패턴을 사용하여 실시간으로 들어오는 주문들을 State에 맞게 분류
2진 탐색 알고리즘을 사용하여 수시로 바뀌는 필터에 맞춰서 리스트 정렬
Kotlin, Courutine, MVVM, Room, DataBinding, Paging2, Retrofit2, Glide 등 사용
- Observer 패턴을 사용하여 실시간 이벤트를 처리하는 데이터 모델링
1. 문제점 도출
- MQTT에서 실시간 이벤트를 받아서 View에 바로 보내주던 방식에서 활성화 문제가 발생하여, 오류와 잘못된 데이터를 보여주는 문제 발생
- 엑티비티 활성화와 같은 라이프사이클 문제를 고려하지 않은 방식이 문제점 도출의 시작이었다.
2. 해결방법 도출
- 현재 팀원들이 익숙한 방법으로 구현해서 팀원들 이해도가 높아야 했음
- LiveData를 사용해 Observer 패턴으로 라이프사이클 문제를 고려한 실시간 이벤트 처리 방식 도출
- 하나의 싱글톤 클래스에서 MQTT 이벤트를 받아서 LiveData를 이용하여 View에게 이벤트를 보내준다.
3. 구현
- MQTT 이벤트를 받는 싱글톤 클래스에서 LiveData를 이용하여 View에게 이벤트를 보내준다.
- View에서는 ViewModel을 이용하여 데이터를 처리하거나, state에 따라 바로 사용할 수 있다.
4. 결과
- 기존에 발생하던 오류와 잘못된 데이터 문제를 해결하였다.
- 라이프사이클 문제를 고려한 실시간 이벤트 처리 방식을 도입하여 안정적인 앱을 구현하였다.
- 2진 탐색 알고리즘을 사용하여 수시로 바뀌는 필터에 맞춰서 리스트 정렬
1. 문제점 도출:
- 주문데이터가 MQTT를 이용하여 실시간으로 빠르게 들어오다보니 여러 필터에 맞추어 리스트를 정렬해야 하는 문제점 발생
- 기존에는 주문이 들어올때마다 모든 리스트를 처음부터 다시 정렬해서 RecyclerView에 밀어넣는 방식으로 구현되어, 정렬 시간과 계산량이 많아짐에 따라 렉이 걸리거나 OOM 에러가 발생하였음
- 여러 데이터를 종합하여 View에 보여줄 데이터들을 계산해서 보여주면서 사용자가 리스트 스크롤링 할때 특히 문제가 되었음
2. 해결방법 도출:
- 2진 탐색 알고리즘을 사용하여 실시간으로 데이터를 받으면 여러 필터에 따라 리스트 정렬을 하도록 수정
- 각 섹션에 맞게 정렬하기 위해 각 필터에 따른 조건을 복잡하게 구현하는 것이 필요
3. 구현:
- 실시간으로 들어오는 주문데이터에 대해 2진 탐색 알고리즘을 사용하여 필터에 따라 리스트 정렬
- 각 섹션에 맞게 정렬하기 위해 필터별로 조건문을 구현하여 각 섹션에 맞게 데이터 정렬
4. 결과:
- 2진 탐색 알고리즘을 사용하여 리스트 정렬 시간과 계산량을 최적화하여 렉이 걸리거나 OOM 에러가 발생하는 문제 해결
- 각 필터에 따른 복잡한 조건문 구현을 통해 각 섹션에 맞게 데이터 정렬하여 사용자가 불편함을 느끼지 않도록 함
- 데이터 계산을 최적화하여 빠르게 정렬된 데이터를 사용자에게 보여주어 사용자 경험을 향상시킴
개발문화 및 프로세스 도입
Jira, Slack Github, Gitflow, 코드리뷰 등 프로세스 도입
JiraAutomation 및 Slack 연동을 이용한 프로세스 편의성 증가
`코드리뷰를 리뷰하다.` 사내 기술세미나 진행
'TIL스터디' 사내 스터디 운영
스타트업 구인글 직접 작성 및 진행
Misity
- 리팩토링하면서 MVP를 이용한 설계 및 개발
Gember, Flover
- MVVM을 이용한 설계 및 개발
RxJava, Glide 등 도입
더보기