사전 프라이밍: 실제 결과물을 최대한 빨리 유지하는 것은 어려운 일입니다.
좋은 아침이에요
TrueAchievements에서는 Xbox에서 My Year를 출시한 12월에 등록 수가 전년 대비 증가했습니다. 물론 등록할 때마다 더 많은 트래픽과 처리할 게임 플레이 데이터가 추가됩니다!
TrueAchievements는 해당 게임, 업적 또는 연습에서 사용자의 진행 상황을 표시하는 많은 페이지의 맞춤형 버전과 데이터뿐만 아니라 데이터를 수집하는 사용자 프로필 페이지를 제공한다는 점에서 대부분의 게임 사이트와 다릅니다. 또한 그들의 모든 친구들의 것이기도 하다. 이것은 우리가 할 수 없다는 것을 의미합니다 “은닉처” CDN에 있는 이러한 페이지는 누군가(또는 웹 크롤러 또는 봇)가 페이지를 방문할 때마다 빠르게 생성되어야 합니다.
설상가상으로, TA 점수가 각 게임에서 성취의 희소성을 반영해야 한다는 나의 초기 “단순한 생각” 때문에 우리는 거의 매일 성취, 게임 및 플레이어의 점수를 다시 계산해야 합니다.
게다가 우리는 아마도 지구상에서 가장 복잡한 Xbox 순위표 시스템을 보유하고 있을 것입니다. 최대 17,000개의 서로 다른 순위표에서 점수를 찾을 수 있으며, 그 중 대부분은 표시할 수 있을 만큼 빠르게 만들기 위해 매일 미리 생성되어야 합니다. 사이트.
따라서 우리는 캐시할 수 없는 많은 페이지를 보는 엄청난 양의 트래픽(사람만으로 하루에 약 백만 페이지 보기)과 함께 해당 페이지에서 보고 있는 데이터에 대해 수행되는 엄청난 양의 숫자 처리를 수행합니다. 페이지(현재 232,541,069개 게임에서 3,287,979,385개의 업적을 추적했습니다. 데이터베이스에서).
이로 인해 12월에 사이트 속도가 상당히 느려졌으며, 페이지 시간이 초과되거나, 스캔에 오랜 시간이 걸리거나, 사이트를 탐색하는 동안 전반적인 속도가 느려지는 현상이 나타날 수 있습니다.
물론 이러한 과제는 새로운 것이 아닙니다. 코드가 출시된 이후 코드를 거의 다시 작성하거나 리팩토링했습니다. 5,000명의 사용자를 위해 설계된 데이터베이스는 120만 명의 사용자가 있으면 제대로 작동하지 않습니다. 또한 변경 사항을 실제로 측정하고 그 영향이 얼마나 되는지 즉시 확인할 수 있으므로 매우 재미있는 작업입니다. 그것은 나에게 엄청난 행복감을 주고, 그러면 남은 하루 동안 행복함을 느낀다(파크라이프!).
12월 이후 실적 변화
다시 원활하게 작업을 진행하기 위해 12월 중순부터 많은 변경을 했습니다.
TrueAchievement 점수는 이제 데이터베이스에서 정수입니다.
이는 아마도 백엔드 관점에서 볼 때 가장 간단한 변경 사항일 것입니다. 그러나 아마도 가장 먼저 눈에 띄는 변경 사항일 것입니다. TA 성취 점수는 항상 소수점 이하 4자리까지 저장되지만 웹사이트의 모든 곳에 표시되기 전에 반올림됩니다. 따라서 성취도는 17 TA 점수로 나타날 수 있지만 데이터베이스에는 17.3862로 저장됩니다. 이제 17로 저장되었습니다.
성취 수준에서는 이러한 변화를 눈치채지 못하더라도 TA의 각 부분이 해당 게임의 총 점수에서 제거되므로 TA 총계와 게임 드롭을 비교하여 확인할 수 있습니다. 다음 주 정도에 걸쳐 게임을 처리할 예정이며, 그 동안 게임을 완료했더라도 게임의 최대 TA와 해당 게임의 개인 TA에 차이가 있을 수 있습니다. 이 모든 것이 정리되어야 합니다. 주말까지 게임을 진행하고 처리합니다.
이 변경으로 인해 다음과 같은 많은 이점이 있습니다.
- 더 이상 사용자에게 혼란을 주지 않습니다. 우리가 받는 첫 번째 질문 중 하나는 “게임에서 내 점수가 24점인데 어떻게 16TA 가치의 업적과 7TA 가치의 업적을 잠금 해제했습니까?”입니다. 뒷부분을 둥글게 했기 때문이었는데, 그걸 계속 설명해야 하는 게 고통스럽습니다.
- 저장 공간이 감소했습니다. 정수 저장 공간은 이전에 사용했던 소수점 크기의 약 1/3이며 일반적으로 각 게임, 플레이어 게임, 리더보드 및 콘테스트에 대해 3세트의 TA 포인트(DLC 설정으로 인해)를 갖습니다. 그리고 플레이어는 물론 업적까지
- 검사를 받을 때마다 모든 결과를 합산하면 처리 속도가 더 빨라집니다.
- 완료 점수가 1 미만으로 변경될 때 더 이상 게임에 대한 모든 플레이어의 로그를 업데이트할 필요가 없습니다. 이는 아마도 이번 조정으로 인한 가장 큰 성능 향상일 것입니다.
- 더 이상 웹사이트 어디에서나 값을 반올림할 필요가 없습니다.
각 게임이 앞으로 며칠 동안 진행되는 경우 재계산되며, 이 기간 동안 게임 점수와 게임을 완료한 점수 사이의 불일치를 확인할 수 있습니다. 이 결과는 이번 주 동안 정상으로 돌아올 것입니다.
일부 사이트 리더보드에는 이제 최소 게이머 점수 요구 사항이 있습니다.
사이트의 일일 리더보드 생성은 시간이 지남에 따라 증가하여 매일 약 3시간, 주간 보드 생성은 하루 5시간에 달합니다. 이러한 보드를 만드는 동안 사이트 속도가 크게 느려지므로 이 프로세스를 개선할 수 있는 다양한 방법을 찾고 있었습니다.
제가 가장 먼저 한 일은 게이머 점수가 최소 20,000점인 장르/플랫폼 순위표의 플레이어만 포함하는 것이었습니다. 이전에는 이 기준점 미만인 약 350,000명의 플레이어를 포함했습니다. 게이머 점수가 낮기 때문에 아마도 Xbox One의 1인칭 슈팅 게임 순위표에서 207,976위를 차지한 것에 개의치 않는 플레이어에게는 엄청난 양의 처리가 필요했습니다. 오히려 그들은 그것에 대해 전혀 모르고 싶어할 것입니다 🙂 그리고 그들이 다시 순위표에 포함되기를 원한다면 요즘에는 20,000 GS를 넘는 것이 매우 빠르고 쉽습니다.
등록된 모든 플레이어는 여전히 메인 사이트의 모든 순위표에 나열되어 있습니다.
또한 요약 테이블을 더 작고 빠르게 만들기 위해 많은 순위표 빌드 및 빌드 호출을 다시 작성했으며 순위표 생성이 서버 코어에 분산되는 방식에 대해 다양한 조정을 수행했습니다.
이러한 모든 조정을 거쳐 일일 순위표가 생성되는 시간이 12월의 3시간 이상에서 이제 45분 미만으로 늘어났습니다.
이제 플레이어 블로그가 캐시됩니다.
우리에게는 매우 인기 있는 TA 블로거가 있으며, 우리 블로거는 종종 자신의 블로그에 TA 페이지에 대한 방대한 링크 목록을 게시합니다. 이러한 블로그를 볼 때 우리는 이러한 링크를 분석한 다음 성과로 간주되는 게임에 대한 시청자의 진행 상황을 확인한 후 표시합니다. 이로 인해 단일 블로그가 표시되도록 하기 위해 엄청난 수의 데이터베이스 호출(일부 블로그에는 약 1000개의 링크가 있음)이 추가되었습니다. 그래서 우리는 이러한 블로그를 캐시하고 시청자 진행 상황을 더 이상 표시하지 않기로 결정했습니다. 이는 약간의 기능 손실이지만 인기 블로그 게시물에 수백 개의 링크가 포함되어 있는 경우 DDOS 공격으로부터 사이트를 효과적으로 보호합니다.
일부 그림은 이제 로그인해야만 볼 수 있습니다.
지난 몇 년 동안 로봇과 스크레이퍼로 인한 트래픽이 급격히 증가했습니다. 호스팅 회사인 Cloudflare에 따르면, 지난 24시간 동안 검증되거나 의심되는 봇으로부터 TrueAchievements에 대한 약 350만 건의 요청을 받았습니다.. 우리는 가장 명백히 해로운 것 중 일부를 차단하지만 일부는 실제로 통과시키는 데 유용합니다(검색 엔진, Discord 미리 보기 카드, Twitter 등). 그러나 이러한 유용한 봇은 친구의 피드와 같은 매우 복잡한 패널을 볼 필요가 없으므로 매우 무거운 패널 중 일부는 사이트에 로그인한 경우에만 볼 수 있도록 설정했습니다. 즉, 봇은 여전히 페이지를 읽을 수 있지만 서버에 큰 부담을 주지는 않습니다.
앞으로 더 많은 수정이 있을 수 있습니다
TGN 개발팀은 사이트 속도를 최대한 높이기 위해 1월 한 달 내내 성능 작업에 전념했습니다. 이 작업의 대부분은 기대되는 속도 향상 외에는 사용자 관점에서 눈에 띄는 변화로 이어지지 않습니다. 기능이 추가로 변경되면 먼저 다음에서 해당 내용을 읽어보실 수 있습니다. TA 디스코드 서버아직 가입하지 않으셨고 최신 작업에 대한 최신 소식을 받고 싶으시면 가입해 주세요.
새해 복 많이 받으세요!
“맥주 괴짜. 사악한 대중 문화 닌자. 평생 커피 학자. 전문 인터넷 전문가. 육류 전문가.”
More Stories
Microsoft는 Call of Duty: Black Ops 6가 “출시일에 Game Pass 가입자 추가” 수에 대한 기록을 세웠다고 밝혔습니다.
Call of Duty: Black Ops 6 다운로드로 인터넷 사용 극대화
어둠 속에서 전화기를 빛나게 하는 것은 아무것도 없습니다.