본문 바로가기
개발

최종 프로젝트 트러블슈팅

by kks950115 2024. 4. 10.
728x90

Trouble Shooting

지도 사용성 개선

문제 : 너무 많은 마커의 양 때문에 속도가 느려짐

      맵을 축소했을 때 여러 개의 마커가 겹쳐서 시인성이 떨어짐

과정: 클러스터링을 적용하고 화면 안에 마커만 나오게 하기로 결정

   적용하고 나니 화면을 움직이고 난 뒤에 클러스터링하는 속도가 느림

해결 : 데이터를 정렬, Coroutine 영역에 async, await으로 for문을 나눠서 처리하여 속도를 개선

    (카메라 이동 시 처리 시간 약 800ms →  약 500ms)

좌표 검색 방식 변경

문제 : 파이어스토어에 2개의 필드를 중첩하여 검색할 수 없음

과정 : 모두 불러온 뒤 비교하는 방법은 비용 문제 때문에 배제
Geohash 적용 (정확도가 높지 않아서 오차가 크다는 단점이 있음)

해결: 매 호출마다 Geohash값으로 변환하는 것은 비효율적이라 판단 -> Geohash값을 db에 추가

CustomScrollView 사용

문제 : ScrollView 안에 맵뷰에서 위 아래로 터치가 먹지 않음

원인 : 터치 이벤트가 ScrollView에서 소비되어 MapView까지 전달되지 못함

해결 : CustomScrollView를 만들어 MapView에서 터치이벤트를 인터셉트하도록 구현

Decision

리스트 형태의 field를 평탄화

문제 : 태그에 따라 검색이 불가 원인 : Firestore는 field에 저장되어있는 값이 정확히 일치해야지만 검색이 가능 해결 : 보통은 데이터를 전부 가져와서 필터링. 비용적인 문제로 각각의 태그를 세분화해서 저장

유저 데이터 암호화에 AES알고리즘 사용

문제 : 유저 데이터가 firestore에 그대로 노출 과정 : DES 알고리즘을 적용했지만 키길이가 56비트 밖에 되지 않아 보안성이 취약 해결 : DES를 보완한 AES 사용. 256비트 키 길이로 보안성 강화

728x90
반응형

댓글