만족

[사이퍼즈 서포터] 프록시/캐시 서버 설치 본문

[사이퍼즈 서포터] 프록시/캐시 서버 설치

Project/사이퍼즈 서포터 Satisfaction 2021. 1. 1. 18:34

기존의 데이터 송수신 방식

기존에는 앱/웹과 사이퍼즈 API 서버가 직접 통신했습니다.

 

매우 간단하고 빠르지만, 치명적인 문제가 있습니다.

 

사이퍼즈 API 서버가 다운되거나,  점검 상태에 들어가면 모든 요청이 실패한다는 것입니다.

 

해결법

중간에 프록시 서버를 하나 두어 요청 성공 시 일정 시간동안 그 정보를 저장하고,

사이퍼즈 API 서버가 죽어버리면 저장된 정보를 돌려주는 것입니다.

 

그러나 이것 역시 문제가 있습니다.

 

첫째로 한 번도 조회되지 않은 데이터는 프록시 서버에도 존재하지 않기 때문에 오류가 발생한다는 것이고,

또한 거쳐야 하는 서버 갯수가 하나 늘어남으로써 데이터 송/수신 속도가 느려진다는 것이죠.

 

두 가지 모두 완벽하게 해결할 수 있는 방법은 없으나, 

후자의 경우는 비교적 쉬운 방법으로 완화시킬 수 있습니다.

 

바로 캐시 서비스를 촘촘하게 구성하는 것입니다.

 

가령 완료된 경기 결과 정보는 시간이 지나도 변하지 않습니다.

(2021-01-01 18:00에 진행된 게임 결과는 2022-01-02 00:00 에도 그대로이다)

 

위와 같이 자주 변하는 정보는 캐시 유효기간을 짧게, 

잘 변하지 않는 정보는 캐시 유효기간을 길게 설정하여,

클라이언트와 서버 단에 캐시 서비스를 설치합니다.

 

클라이언트와 프록시단에 캐시 서비스를 설치함으로써 OPEN API까지 도달하는 횟수를 줄여

결과적으로 프록시 서버 없이 통신할 때와 비슷한 퍼포먼스를 낼 수 있도록 했습니다.

 

프록시 서버 캐시 통계(전체 요청횟수, 캐시 히트, 캐시 미스, 캐시 히트레이트)

주로 20%의 히트레이트를 보이고 있으며,

클라이언트 캐시단에서 히트한 데이터 통계는 포함되지 않았습니다.

 

프록시 서버를 설치하기 전 평균 리퀘스트 횟수는 약 4~5만회 였는데

프록시 서버의 총 요청 횟수는 1.5~2.5만회가 줄어든 약 2.5만회 이므로,

클라이언트 캐시의 히트 횟수는 1.5~2.5만회가 되어

클라이언트와 프록시를 합한 캐시 서비스의 히트레이트는 40~50% 정도가 될 것으로 예상됩니다.

 

클라이언트 단에 캐시된 데이터의 경우엔 네트워크 요청 자체를 하지 않으니 기존보다 훨씬 빠릅니다.

 

 

 



Comments