애플리케이션 트래픽 감소
CYBIRD 엔지니어 Advent Calendar의 3일차 책임자@kyorokyoro입니다.
다음날은 @march_f의사과파이를 들고 집에 없어요.였다.
이것은 단지 가볍게 개발하기 위한 엔지니어만이 가지고 있는 재미있는 문장이다!
개요
응용 프로그램과 서버의 통신 횟수를 줄이고 싶습니다!
자기가 마땅히 해야 한다고 생각하는 일을 총결하였다.
카탈로그
기본적으로 데이터는 DB에 저장되어 있기 때문에 통신을 통해 다양한 데이터를 얻어 화면에 표시한다.
예제)
선물 상자 화면으로 전환
앱 "통신을 통해 사용자의 선물 상자 안에 무엇이 있나!"
서버 "이 사용자의 선물 상자 안에 이런 미수령 아이템이 있습니다!"
다시 한 번 선물 박스 화면으로.
앱 "통신을 통해 사용자의 선물 상자 안에 무엇이 있나!"
서버 "에...아까 말씀드렸잖아요..."
이런 느낌은 두 번째 통신이 필요 없겠죠.
통신 횟수가 많아 문제가 된 것은
경제 불황
통신 대기 응답이 필요하고 화면 이동에 시간이 필요합니다.
사용자의 통신 상황에 따라 시간이 더 필요합니다.
서버에 로드됨
DB 액세스나 서버 측 컴퓨팅 등 다양하다.
한 번의 통신이라면 문제없지만 많은 이용자가 통신하면 통신량이 늘어 부담이 된다.
2. 줄이는 방법
통신의 종류는 크게 업데이트 시스템과 검색 시스템으로 나뉜다.
시스템 업데이트
선물을 받는 등 사용자의 데이터 상태가 달라지는 것.
검색 시스템
선물을 받지 못한 데이터 등 사용자 상태를 획득한 물건.
시스템 업데이트와 관련해서는 DB 등 통신을 업데이트해야 하므로 통신 횟수를 줄이지 않는다.
검색 시스템도 두 부분으로 나뉘는데 주 데이터 취득과 사용자 데이터 취득이 있다.
모판 데이터
모든 사용자 공통 데이터
사용자 데이터
사용자별 데이터
주 데이터는 기본적으로 데이터의 업데이트가 매우 적기 때문에 일단 통신을 얻은 후에 다시 업데이트하지 않기 때문에 통신 횟수가 본래 매우 적다.
문제는 사용자 데이터
이것은 사용자가 매번 행동할 때마다 각종 데이터를 업데이트하는 것이다.
따라서 최신 데이터를 얻으려면 통신이 필요하다.
하지만 위에서 말한 바와 같이 두 번째 이후에도 통신이 필요 없는 곳이 있다.
이런 상황에서 어떻게 하면 좋을지 말하자면, 첫 번째 통신을 응용 프로그램에 저장하면 된다.
예제)
선물 상자 화면으로 전환
앱 "통신을 통해 사용자의 선물 상자 안에 무엇이 있나!"
서버 "이 사용자의 선물 상자 안에 이런 미수령 아이템이 있습니다!"
앱 "다른 화면으로 옮겨도 잊지 말고 기억해!"
다시 한 번 선물 박스 화면으로.
앱 "통신을 통해 사용자의 선물 상자 안에 무엇이 있나!"
응용 프로그램: "내 생각에는 이렇다. 그러나 위의 데이터는 아직 남아 있기 때문에 통신할 필요가 없다."
되다
다만 사용자 데이터는 일이 있을 때마다 업데이트된다.
예를 들어 선물박스라면 선물을 받거나 트집을 잡으면 선물박스에 물건이 추가된다.
아무것도 하지 않으면 응용 프로그램에 저장된 데이터를 계속 사용하기 때문에 화면이 업데이트되지 않는다.
따라서 선물박스가 변경된 통신 시 데이터를 업데이트해야 한다.
1.선물 받기
선물을 받는 동시에 선물 상자를 얻는 통신을 진행한다.
받은 후 바로 선물 일람표를 표시하기 위해 동시에 진행한다.
2. 트집을 잡는다
트집을 잡아 통신에 저장된 선물 상자의 정보를 삭제하다.
트위스트 화면에는 선물함 정보가 필요 없기 때문에 이곳에서는 통신하지 않고 정보만 삭제한다.
선물 상자 화면으로 옮길 때 정보가 없어 트위스트로 업데이트된 선물 상자의 정보를 통신을 통해 얻는다.
3. 운영자가 프로젝트 제공
이런 상황에서 사용자는 시기를 모른다.
따라서 운영자가 업데이트한 시간과 사용자가 저장한 시간을 비교한다.
예제)
선물 상자 화면으로 전환
앱 "통신을 통해 사용자의 선물 상자 안에 무엇이 있나!"
응용 프로그램: "내 생각에는 이렇다. 그러나 위의 데이터는 아직 남아 있기 때문에 통신할 필요가 없다."
앱 "그런데 운영자 업데이트 시간은 저장된 시간보다 새로워요. 업데이트됐으니 통신하세요!"
3. 해보고 난감한 일
어떤 갱신 시스템을 사용해야 하는지 통신 갱신 검색 시스템의 통신에 대한 조사는 매우 어렵다
모든 통신을 확인하고 다음과 같이 정리한다(응용단과 서버단 모두 지식이 필요하다)
(선물 이외의 배지 수를 받아야 하기 때문에 관리가 번거롭다...여러 가지 테이블을 참조해야 하기 때문에 처리가 무겁다.)
어떻게 통신을 통해 최신 데이터를 얻어 게임 규격과 상담할 수 있는지.
시험에서 누락된 것을 발견하기가 매우 어렵다
업데이트가 있어도 오류가 없어서 디버깅원이 눈치채지 못했습니다.
→New Relic 등 관측 도구를 통해 통신 횟수를 확인하고 많아졌는지 확인한다.
파라미터가 있는 통신을 어떻게 저장합니까
매개 변수로 페이지 수를 전달해 페이지당 표시된 선물 박스만 받는 경우 같은 통신이라도 매개 변수에 대한 정보를 저장해야 하기 때문에 메모리 사용량이 늘고 관리가 어려워진다.
→파라미터가 있는 경우 통신을 하지만 여기는 앞으로 수정할 것입니다.
최후
통신 횟수를 줄이고 편안한 UX를 목표로 하자!
이번엔 코드를 안 썼지만 필요하면 다른 기사가 나올지도 몰라
내일CYBIRD 엔지니어 Advent Calendar 2021 넷째 날은
@chikako_ikeda씨의 "TargetSDK30에 반한 일".
매년 TargetSDK의 업무를 향상시켜야 하기 때문에 무슨 일로 고생했는지 참고해 주세요!
감사합니다.
Reference
이 문제에 관하여(애플리케이션 트래픽 감소), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kyorokyoro/items/3d357661613a6cb89d3e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)