네트워크 트래픽 도구는 지원 중단되었습니다. Android 스튜디오 3.0 이상을 사용 중이라면 네트워크 프로파일러를 사용하여 앱에서 네트워크를 통해 데이터를 전송하는 방식과 시점을 확인해야 합니다.
이전 섹션에서는 앱 코드를 트래픽 식별자, 실행한 테스트, 수집한 데이터로 태그했습니다. 이 강의에서는 수집한 네트워크 트래픽 데이터를 확인하는 방법을 설명하고 앱의 네트워킹 성능 개선 및 전력 소비 절감을 위한 작업을 안내합니다.
앱 네트워크 트래픽 분석
앱에서 네트워크 리소스를 효율적으로 사용하는 사례의 특징은 네트워크 하드웨어를 사용하지 않는 기간이 상당히 길다는 것입니다. 휴대기기에서는 데이터를 전송하거나 수신하기 위해 무선 기능을 켜고 장기간 무선 통신을 사용하는 것과 관련해 상당한 비용이 발생합니다. 앱이 네트워크에 효율적으로 액세스하고 있다면 네트워크를 통한 앱의 통신이 앱에서 연결 요청을 하지 않는 기간과 함께 균등한 간격으로 조밀하게 그룹화됨을 확인할 수 있습니다.
그림 1에서는 네트워크 트래픽 도구에서 측정한 최적화되지 않은 앱 네트워크 트래픽을 보여줍니다. 앱에서 네트워크 요청을 자주 하고 있습니다. 이 트래픽은 무선이 대기, 저전력 모드로 전환할 수 있는 유휴 시간이 거의 없습니다. 이 앱의 네트워크 액세스 동작으로 인해 무선이 장시간 켜져 있는 것이 배터리 비효율의 원인일 수 있습니다.
그림 2에서는 최적의 네트워크 트래픽 패턴을 보여줍니다. 앱에서 여러 건의 네트워크 요청을 한 번에 전송하며, 각 전송 사이에는 장시간 트래픽이 없어 무선이 대기 모드로 전환할 수 있습니다. 이 차트에서는 그림 1과 동일한 작업량을 보여주지만 무선이 대체로 대기 모드로 유지되는 것을 허용하도록 요청이 이동되고 그룹화되었습니다.
앱의 네트워크 트래픽이 그림 2의 그래프와 비슷하다면 제대로 작동하는 것입니다. 축하합니다. 일반 네트워크 사용 최적화에 설명된 기법을 확인하여 네트워킹 효율을 더 높일 수 있습니다.
앱의 네트워크 트래픽이 그림 1의 그래프와 유사하다면 앱이 네트워크에 액세스하는 방식에 개선할 점은 없는지 자세히 살펴볼 시점입니다. 먼저 앱에서 생성하는 네트워크 트래픽의 유형을 분석하는 것부터 시작해야 합니다.
네트워크 트래픽 유형 분석
앱에서 생성한 네트워크 트래픽을 살펴볼 때 트래픽의 소스를 파악해야 트래픽을 최적화할 수 있습니다. 앱이 사용자 작업에 응답하는 중이라면 앱에서 생성하는 빈번한 네트워크 활동이 매우 적절하지만 앱이 포그라운드에 있지 않거나 기기가 주머니나 지갑에 있다면 전혀 적절하지 않습니다. 이 섹션에서는 앱에서 생성 중인 네트워크 트래픽의 유형을 분석하는 방법을 설명하고 성능 개선을 위해 할 수 있는 작업을 안내합니다.
이전 강의에서는 그림 3과 같이 다양한 트래픽 유형의 앱 코드를 태그하고 네트워크 트래픽 도구를 사용하여 앱의 데이터를 수집하고 활동 그래프를 생성하였습니다.
네트워크 트래픽 도구에서는 이전 과정에서 만든 태그에 따라 트래픽의 색상을 지정합니다. 색상은 앱 코드에서 개발자가 정의한 트래픽 유형 상수에 기반하여 지정됩니다. 앱 코드를 다시 참조하여 사용자, 앱 또는 서버에서 시작된 트래픽을 나타내는 상수를 확인합니다.
다음 섹션에서는 네트워크 트래픽 유형을 확인하는 방법을 설명하고 트래픽 최적화 방법과 관련해 권장사항을 제시합니다.
사용자가 시작한 네트워크 트래픽 분석
사용자가 시작한 네트워크 활동은 사용자가 앱에서 특정 활동을 하는 동안에는 효율적으로 그룹화될 수 있습니다. 그러나 사용자가 앱에 필요한 추가 정보를 요청할 때는 불균등하게 분산될 수 있습니다. 사용자가 시작한 네트워크 트래픽을 분석하는 목적은 시간 경과에 따라 네트워크를 자주 사용하는 패턴을 찾아내고 네트워크에 액세스하지 않는 기간을 만들거나 그러한 기간을 늘리려는 것입니다.
사용자 요청은 예측이 불가능하기 때문에 앱에서 발생하는 이러한 유형의 네트워크 사용을 최적화하기 어렵습니다. 또한 사용자는 앱을 활발히 사용할 때 빠른 응답을 기대하므로 효율성을 높이기 위해 요청을 지연시키면 사용자 환경이 악화될 수 있습니다. 일반적으로 사용자가 앱과 직접 상호작용하는 동안에는 효율적인 네트워크 사용보다 사용자에게 빠르게 응답하는 것을 우선시해야 합니다.
다음은 사용자가 시작한 네트워크 트래픽을 최적화하는 방법입니다.
- 네트워크 데이터 미리 가져오기: 사용자가 앱에서 작업을 실행하면 앱은 그다음 사용자 작업에 필요한 데이터를 예상하여 한 번의 연결을 통해 데이터를 일괄적으로 가져오고 사용자가 요청할 때까지 데이터를 보유합니다.
- 연결 확인 또는 변경사항 수신 대기: 업데이트를 실행하기 전에 네트워크 연결을 확인하거나 연결 변경사항을 수신 대기합니다.
- 연결 수 줄이기 - 데이터를 세트로 다운로드할 수 있게 하는 서버 API를 사용합니다.
앱에서 시작한 네트워크 트래픽 분석
앱 코드에서 시작한 네트워크 활동은 일반적으로 네트워크 대역폭의 효율적인 사용에 큰 영향을 줄 수 있는 영역입니다. 앱의 네트워크 활동을 분석하면서 활동이 없는 기간을 찾고 이러한 기간을 늘릴 수 있는지 여부를 판단하세요. 앱에서 일관된 네트워크 액세스 패턴이 보인다면 기기 무선이 저전력 모드로 전환되도록 액세스 간격을 지정하는 방법을 찾아보세요.
다음은 앱에서 시작한 네트워크 트래픽을 최적화하는 방법입니다.
네트워크 요청 일괄 처리 및 예약: 배터리 수명에 유리한 시간에 한꺼번에 처리할 수 있도록 앱의 네트워크 요청을 연기합니다.
시스템이 연결 상태를 확인하도록 허용: 네트워크 연결을 확인하는 목적으로만 앱을 실행하여 배터리가 소모되는 것을 방지합니다. 앱이 절전 모드일 때 시스템이 네트워크 연결을 확인하도록 할 수 있습니다.
서버에서 시작한 네트워크 트래픽 분석
또한 앱과 통신하는 서버에서 시작한 네트워크 활동은 일반적으로 네트워크 대역폭의 효율적인 사용에 큰 영향을 미칠 수 있는 영역입니다. 서버 연결에서 네트워크 활동을 분석할 때 활동이 없는 기간을 찾고 이 기간을 늘릴 수 있는지 여부를 판단합니다. 서버에서 일관된 네트워크 활동 패턴이 보인다면 기기 무선이 저전력 모드로 전환되도록 활동 간격을 지정하는 방법을 찾아보세요.
다음은 서버에서 시작한 네트워크 트래픽을 최적화하는 방법입니다.
- 서버 업데이트에 FCM 사용: 폴링 대신 서버 측 업데이트에 Firebase 클라우드 메시징 서비스를 사용하는 것을 고려해 보세요.