DAY 40 | 개인 프로젝트 — 유지보수 (3)

Pt J·약 18시간 전
post-thumbnail

DAY 40 | 개인 프로젝트 — 유지보수 (3)

슬슬 취업 준비 서류 작업도 병행해야 한다. 관심 가는 기업의 채용 공고가 프로젝트를 진행하는 사이에 마감되었다가 다시 올라와서 지원해 볼 수 있을 것 같다. 너무 지체되지 않으면서도 완성도 있는 적절한 시점이 언제가 될련지. 아직은 완성도를 더 높여야 할 것 같다. 일단은 iOS는 스토어에 배포되어 있고 Android는 비공개 테스트 4일 차다. web은 일단 다른 기능 구현에 비해 우선순위가 낮아서 잠시 미뤄두고 있어 관리자 페이지만 존재하는 상태고. 모쪼록 잘 해보자고.

관심 친구

관심 친구로 등록되어 있는 사람의 알림을 켜 놓으면 그 사람이 피드에 스케치를 공유했을 때 알림이 가도록 하면 좋을 것 같다. 기본적으로 친구의 프로필에서 그 상대의 새 스케치에 대한 알림을 켤 수 있고, 푸시 알림 설정에서 일괄적으로 끌 수도 있게 하기로 했다. 프로필 화면의 우상단에 알림 토글 버튼을 넣으면 적절하겠지.

관심 친구 기능은 버그 패치가 아니라 신규 기능이므로 1.0.x 가 아니라 1.1.0 버전으로 올리는 게 좋다고 하더라. 거기서 버그 패치가 이어지면 1.1.x로 가는 거고 기능 구현이 이어지면 1.2.0으로 가는 거고.

이번 배포부터는 슬슬 앱 버전 정책 및 공지사항을 활용할 수 잇을 것 같다. 자동 업데이트가 켜져 있다면 다들 1.0.4까지는 쫒아왔을 테니 말이다. 1.0.4에서 로직 결함은 거의 잡힌 듯하니 최소 버전을 1.0.4로 해두면 될 것 같다.

1.1.0 업데이트 패치를 올리면서 앱 버전 정책 및 공지사항 등록도 해보았는데 잘 뜨는 것 같다. 근데 알림 화면에는 공지사항이 안 오는군. 최근에 받은 공지사항은 알림 화면에 뜨고 누적된 공지사항은 설정에서 인앱브라우저로 띄울 수 있게 하려고 했는데 공지사항 알림 상세 화면만 연결해 놓고 알림 화면에 카드 뜨게 하는 건 구현이 누락되었나? 자꾸 놓치는 부분이 생긴단 말이지.

오프라인 동기화

초기 기획부터 존재했지만 1차 배포 후로 미뤄 놓았던 기능 중 하나다. 네트워크가 단절되거나 불안정한 환경에서 세션 종료 시 Drift에 임시 저장 해놓았다가 서버에 업로드할 수 있는 복구 파이프라인을 만들어야 데이터 유실 위험을 방지할 수 있다. 지금도 세션 완료 직후에는 다시 시도가 존재하지만 경우에 따라서는 다시 시도를 해도 영 연결이 안 되는 상황도 있을 수 있으니 나중에라도 네트워크가 복구되면 서버로 전송할 수 있게 하는 것이다.

스케치 이미지의 경우 path_provider package의 getApplicationSupportDirectory() 를 통해 앱 내부 전용 디렉토리에 저장하여 외부에서는 확인할 수 없는 형태로 저장해 놓고 Drift에는 그 경로만 저장한다. 기기 저장공간을 많이 잡아먹지 않도록 서버에 업로드된 세션 데이터는 스케치 이미지를 포함하여 전부 로컬에서 삭제하도록 한다.

Drift 스키마에 수정이 필요하다. 세션 기록을 임시 저장하는 table을 만들고 그것을 관리하는 DAO 파일을 생성한다. schemaVersion 을 2로 올려야 하는데, 이때 v1 버전의 스키마를 사용하는 기기에서 v2 버전으로 마이그레이션하는 코드를 추가로 작성해야 한다. 첫 번째 버전을 작성할 때부터 느꼈지만 build_runner 를 돌리기 전까지는 빨간 줄이 너무 많아서 이게 맞나 싶어진단 말이지.

관련 Service와 Repository를 구현하고 CompleteSessionUseCase 에서 세션을 마치고 Firestore에 보내기 전에 local-first로 Drift에 먼저 기록을 남긴 후 업로드 시도를 하도록 수정한다. 이제 세션 완료 시점에 네트워크 연결이 안 되어 있어도 로컬에 먼저 기록을 남겨 데이터가 누락되지 않는다. 그리고 네트워크 상태의 실시간 변화를 감지할 때 사용되는 connectivity_plus package를 통해 네트워크가 복구되면 대기열에 있던 로컬 기록 데이터 업로드를 재시도할 수 있다.

이제 세션 완료 화면에서 직전 세션에 대해서만 업로드 재시도를 할 수 있던 것을 넘어, 그대로 종료했더라도 추후에 홈 화면에서 동기화 버튼을 눌러 서버에 저장되지 않은 세션을 업로드할 수 있게 되었다!

>>> GitHub Repository at this point (6b80728)

profile
Peter J Online Space - since July 2020 | 구직 중...

0개의 댓글