Skip to content
Hyemin Heo edited this page Jan 10, 2025 · 4 revisions

앱 소개

🌈 📁 문서

팀노션 Wiki 디자인 프로덕트 백로그

리팩토링 계획 구체화

🥸 진단 내용

1️⃣ Instruments로 프로파일링 작업

  • 회원가입 완료 버튼을 누르고 다음 화면으로 넘어가기 까지 로딩 시간이 2-3초 소요되는 문제

    → CPU 프로파일링을 통해 하나의 쓰레드에서만 테스크를 처리하고 있는 것을 파악

  • 간헐적으로 텍스트 필드가 포함된 뷰에서 텍스트 필드를 선택할 때 1초 멈춤 현상이 일어나고 키보드가 올라오는 현상

    → 아직 이유 못 찾음

  • 프로필 이미지를 로드할 때마다 메모리 사용량 급증

    → 이미지 size를 제한하지 않음

    → 원본 이미지를 앱에서 그대로 사용하기 때문

  • 메이트 목록에서 불러오는 데이터의 개수가 많을수록 전반적인 메모리 사용량 증가

    → 현재 DB내 모든 데이터를 한꺼번에 불러오고 있음

2️⃣ 비동기 처리 실태 파악 작업

  • Task 블록 처리 위치가 제각각이었던 점

    → VIPER에서 해당 Task 블록을 처리 역할 통일 필요

  • local persistance에서 데이터를 불러오는 작업이 비동기 처리가 되어 있지 않음

    → 비동기적으로 처리 필요

  • 단일 쓰레드에서 여러 테스크가 수행되거나 순차적으로 비동기 작업이 진행되는 부분 발견

    → 병렬 처리 필요

  • Router 관련 코드가 메인 스레드에서 동작하게 하는 코드가 중복적으로 들어감

    → Router가 MainActor에서 동작하는 클래스를 상속받도록 처리 필요

🧑‍🏫 개선할 포인트 및 목표

1️⃣ 동시성

  • 병렬 처리가 가능한 부분은 별도의 태스크로 분리해서 처리하기
  • P2P 통신 태스크의 선후관계 판단 후 연결 설정, 데이터 통신, 연결 해제 작업이 순서에 맞게 잘 동작하도록 관리하기

2️⃣ 유지보수성

  • 결합도 개선
    • ex. NI/MPC
  • UnitTest 커버리지 비율 60퍼센트까지 높이기
  • UITest 도입하기
  • 에러 타입 및 핸들링 통일하기
  • CI/CD 적용하기

3️⃣ 사용성 높이기

  • 다이나믹 타입 지원하기
  • VoiceOver 적용하기

4️⃣ 시스템 자원 효율적으로 사용하기

  • 네트워크 사용량 줄이기
    • 섬네일 이미지 크기가 평균적으로 프로필 이미지 크기의 10% 이하가 되도록 만들기
    • 섬네일 이미지와 프로필 이미지 분리 저장
  • 메모리 사용량 줄이기
    • 현재 기본 메모리 사용량 170MB / 버그트리아징 위해 고용량 이미지 사용시 600MB
    • 고용량 이미지를 선택하더라도 200MB를 넘지 않도록 개선하기
    • 페이징 기법 적용
    • 이미지 다운샘플링

마지막 수정일 2025.01.10.

Clone this wiki locally