vs code 기준 터미널 위쪽에 문제가 있는 것을 확인하셨나요?
문제 번호가 999+로 표시되는 경우를 보신적이 있나요?
저도 보고 싶지 않았습니다.
처음에 회사에 입사해서 Flutter을 접했을 때는 문제 번호가 크게 신경쓰이지 않았습니다. 기존에 운영 중이던 서비스의 로직을 이해하느라 바빴으니까요. 하지만 지금은 9개월이 지나 서비스를 안정화시키고 추가 기능을 개발하며 무수한 이슈에 부딪히다 보니, 이제는 서비스의 안정성을 확보한 상태입니다.
저는 본능적으로 느꼈습니다 추가 기능 개발을 하면 정신이 없을꺼라는걸. 그래서 이제 시작해야 할 단계는 성능 최적화입니다.
자, 그럼 본론으로 들어가보겠습니다.
앱의 성능을 최적화하기 위해서 다음 10가지 주요 부분에 대해 신경을 써야 합니다.
렌더링 최적화: Flutter는 위젯 기반의 UI 렌더링을 사용합니다. UI 위젯을 효율적으로 관리하여 불필요한 렌더링을 최소화하고, Repaint 영역을 최소한으로 유지하여 성능을 향상시킬 수 있습니다.
비동기 작업 관리: 네트워크 호출이나 데이터베이스 액세스와 같은 비동기 작업은 UI 쓰레드를 차단하지 않도록 주의해야 합니다. async/await를 활용하거나 FutureBuilder와 같은 위젯을 사용하여 비동기 작업을 효율적으로 처리하세요.
메모리 관리: 불필요한 메모리 사용을 최소화하여 앱의 안정성과 성능을 향상시킬 수 있습니다. 불필요한 객체 생성을 피하고, 사용하지 않는 리소스는 적절하게 해제하세요.
이미지 최적화: 큰 크기의 이미지 파일은 로딩 시간을 증가시키고 메모리를 낭비할 수 있습니다. 이미지 최적화 기법을 활용하여 이미지 크기를 줄이거나 필요한 크기로 리사이징하여 사용하세요. 필요한 경우 이미지 캐싱을 구현하여 반복적인 다운로드를 최소화할 수 있습니다.
상태 관리: 효과적인 상태 관리 패턴을 선택하여 앱의 상태 변경을 효율적으로 관리할 수 있습니다. Provider, Riverpod, Bloc 등의 상태 관리 라이브러리를 검토하여 적합한 것을 선택하세요.
레이아웃 최적화: 복잡한 레이아웃 계산은 성능에 영향을 미칠 수 있습니다. 불필요한 위젯 중첩을 피하고, 스크롤이 필요한 경우 ListView, GridView와 같은 위젯을 사용하여 레이아웃을 최적화하세요.
코드 스플리팅: 앱의 규모가 커지면 코드 스플리팅을 활용하여 필요한 코드만 로딩되도록 분할할 수 있습니다. 이를 통해 초기 로딩 시간을 단축시킬 수 있습니다.
프로파일링과 테스팅: 앱의 성능을 평가하기 위해 프로파일링 도구를 사용하여 병목 현상을 분석하고 최적화할 부분을 확인하세요. 또한 다양한 디바이스에서 테스팅하여 일관된 성능을 유지하세요.
핫 리로딩 사용 제한: 개발 중에는 핫 리로딩을 유용하게 활용할 수 있지만, 성능 테스트나 최종 릴리스 시에는 비활성화하여 앱의 실제 동작을 더 정확하게 평가하세요.
외부 패키지 최적화: 사용하는 외부 패키지가 앱의 크기나 성능에 영향을 미칠 수 있습니다. 필요한 패키지만 사용하고, 불필요한 패키지는 제거하거나 대안을 고려하세요.
이러한 퍼포먼스 최적화 방법을 적용하여 Flutter 앱의 완성도를 한 단계 더 높일 수 있을 것입니다. 그러나 모든 최적화를 동시에 시도하는 것이 아니라, 우선순위를 정하고 단계적으로 진행하는 것이 좋습니다.
다음 포스팅에서는 렌더링 최적화에 대해 자세히 알아보겠습니다. 기대해주세요!
좋은 정보 얻어갑니다, 감사합니다.