본문 바로가기

Android

[안드로이드] 앱 성능 최적화 : 네트워크 최적화

반응형

네트워크는 사용자 경험에 직접적으로 영향을 주는 중요한 요소이다. 서버로부터의 느린 응답, 잦은 타임아웃, 불필요한 데이터 낭비는 결국 앱 이탈률 증가로 이어질 수밖에 없다. 나 또한 다른 안드로이드 앱을 사용할 때 이런 부분들을 체감하면서, 네트워크 통신 최적화의 중요성을 더욱 느끼게 되었다. 그래서 이번 글에서는 네트워크 최적화에 대해 정리해보려 한다.

 


1. 불필요한 API 호출 줄이기

  • 사용자가 보지 않는 화면에서 지속적으로 데이터를 요청하지 않도록 주의!
  • ViewModel에서 UI 상태 변화에 따라 필요한 데이터만 요청하도록 설계

2. 응답 캐싱 활용

  • Retrofit + OkHttp 조합에서는 캐시 설정을 통해 동일한 요청을 반복하지 않도록 할 수 있다.
val cacheSize = 10 * 1024 * 1024 // 10MB
val cache = Cache(File(context.cacheDir, "http_cache"), cacheSize)

val okHttpClient = OkHttpClient.Builder()
    .cache(cache)
    .addInterceptor { chain ->
        val response = chain.proceed(chain.request())
        response.newBuilder()
            .header("Cache-Control", "public, max-age=60")
            .build()
    }
    .build()

3. 적절한 이미지 사이즈 및 압축 사용

  • 서버에서 내려주는 이미지가 너무 크면 네트워크도, 메모리도 부담됨!
  • 서버단에서 리사이즈 또는 Glide로 리사이징하여 사용
Glide.with(context)
    .load(url)
    .override(300, 300)
    .into(imageView)

4. Gzip 압축 사용

  • 서버에서 Gzip 압축 설정을 하면, 텍스트 기반 데이터(JSON 등)의 용량을 줄여 전송 속도를 높일 수 있다.

5. HTTP/2 사용

  • OkHttp는 기본적으로 HTTP/2를 지원합니다. 동시에 여러 요청을 효율적으로 처리할 수 있어 속도 개선에 효과적이다.

6. 서버 에러 및 재시도 전략

  • 네트워크 실패에 대비해 적절한 재시도 전략을 구현한다.
  • 예: 3초 뒤 1회 재요청, or WorkManager로 백그라운드 처리

7. 마무리

네트워크 최적화는 사용자 경험을 눈에 띄게 개선할 수 있는 중요한 부분이다. 무한 프로그래스바 때문에 답답함을 느끼는 앱보다는, 빠르게 응답하는 앱이 훨씬 좋은 인상을 남긴다. 조금만 신경 써도, "버벅이던 앱"을 "빠릿한 앱"으로 충분히 바꿀 수 있다.

반응형