제퍼넷 로고

기술 내부 – Roblox에서 매치메이킹 문제 해결

시간

기술 내부 는 우리와 함께 진행되는 블로그 시리즈입니다. 기술 토크 팟캐스트. 여기에서는 우리가 다루고 있는 주요 기술적 과제에 대해 자세히 알아보고 이를 위해 우리가 취하고 있는 고유한 접근 방식을 공유합니다. 이번 판에서는 기술 내부, Roblox의 매치메이킹에 대해 자세히 알아보기 위해 성장 그룹 기술 이사 Ivan Marcin과 이야기를 나눴습니다.


어떤 기술적 과제를 해결하고 있나요?

매치메이킹은 참여 프로세스에서 Roblox 사용자를 경험 서버에 연결하는 서비스를 구축합니다. 누군가 Roblox 경험을 방문하고 싶어하면 여러 Roblox 엔진 인스턴스에서 수천 개의 데이터 포인트를 살펴보고 순위를 매겨 일치시킵니다. Roblox는 사람과 장소가 끊임없이 변하고 있다는 점에서 독특하며, 우리가 구축하는 시스템은 이러한 변동을 고려해야 합니다. 

이를 위해서는 사용자 만족도 극대화의 핵심인 두 가지 과제를 해결할 수 있는 기술을 개발해야 합니다. 첫 번째는 사람들을 실시간으로 연결하는 장소를 추적하고 순위를 매기는 방법을 결정하는 것입니다. 두 번째는 대규모 효율성을 위해 매치메이킹을 최적화하는 것입니다. 이 하이브리드 시스템은 수백만 명의 동시 사용자를 최소한의 지연 시간으로 경험에 연결하는 동시에 엣지 데이터 센터 전체에서 Roblox 엔진 인스턴스를 조정해야 합니다. 이것이 바로 참여도를 극대화하는 것입니다.

이 프로세스에는 수많은 복잡성이 있지만 특정 문제의 좋은 예는 소위 "천둥 떼 문제"입니다. 이때 우리 시스템은 짧은 시간 내에 엄청난 부하 급증을 경험하게 됩니다. 예를 들어 토요일 아침 수백만 명의 사람들이 동시에 인기 있는 체험에 참여하려고 할 때입니다. 

이러한 경우 요청이 10배 빠르게 증가할 수 있습니다. 이렇게 갑자기 증가한 압력은 우리 시스템에 스트레스를 주며 과거에는 이러한 유형의 이벤트로 인해 플랫폼이 다운되었습니다. 하지만 이제 많은 Roblox 경험에는 이러한 유형의 특별 이벤트, 한정 출시 또는 업데이트가 있습니다. 이는 참여도를 높이는 동시에 우리가 정기적으로 천둥처럼 쏟아지는 무리를 처리할 준비를 갖추도록 강요합니다. 

엄청난 군중 문제가 다른 소셜 네트워크와 플랫폼에도 있는 문제인가요?

어떤 플랫폼이든 갑작스러운 사용자 급증에 직면할 수 있습니다. 하지만 우리의 규모 때문에 이는 특히 어려운 일입니다. 한정 아이템 출시는 단지 경험을 위한 일회성 이벤트일 수 있지만 Roblox에는 수백만 가지의 경험이 있으며 많은 사람들이 이와 같은 인기 있는 이벤트를 개최합니다. 따라서 Roblox의 경우 천둥소리가 나는 무리 사건은 드물거나, 고립되거나, 예측 가능한 것이 아닙니다. 이러한 상황은 우리가 경험하는 모든 과정에서 언제든지 발생할 수 있으므로 준비가 되어 있어야 합니다. 우리는 이러한 패턴에 더욱 의존하도록 매치메이킹 및 기타 시스템을 강화했습니다.

이러한 문제를 해결하기 위해 우리가 구축하고 있는 혁신적인 솔루션에는 어떤 것이 있습니까?

우리는 Roblox 경험을 지속적으로 색인화하고 사람들을 실시간으로 연결하는 맞춤형 조회 및 추천 시스템을 구축해야 했습니다.

Roblox 전역에서 언제 어디서나 사용자를 가장 좋은 장소로 보내고 엄청난 양의 무리를 처리하기 위해 시스템은 사용자의 상태, 위치, 대기 시간 및 기타 플레이어 속성과 같은 입력을 고려합니다. 또한 몇 초마다 모든 Roblox 경험의 상태를 추적하고 새로 고쳐야 합니다.

여기에서 실시간으로 이러한 일치 추천을 생성해야 합니다. 많은 기존 매치메이킹 시스템에서 사용자는 게임이 시작될 때까지 가상 로비에 연결하고 기다립니다. 몇 분 정도 걸릴 수 있지만 Roblox에서는 사람들이 참여 버튼을 클릭하는 순간 올바른 경험을 제공해야 합니다.

이를 위해서는 몇 초마다 데이터를 다시 색인화하는 경험 시스템을 구축해야 합니다. 로드 급증을 처리하기 위해 캐싱에만 의존하는 것과 같은 표준 분산 시스템 기술을 사용할 수 없기 때문에 대규모로 이를 수행하는 것은 중요한 과제입니다. 대신 우리는 맞춤형 색인 시스템 구축에 의존했습니다. 모든 Roblox 엔진 인스턴스는 지속적으로 이 시스템에 데이터를 푸시합니다. 모든 경험 조인 요청은 모든 활성 장소의 속성을 스캔하고 여러 인덱스에서 순위를 매긴 다음 정확한 시간에 일어나는 일을 기반으로 사용자를 어디로 보낼지 추천합니다.

이 기술 작업을 수행하면서 얻은 주요 교훈은 무엇입니까?

이 기술적인 작업을 수행하면서 얻은 주요 교훈 중 하나는 균형 잡힌 관점에서 사물을 볼 필요가 있다는 것입니다. 우리는 플랫폼의 안정성을 향상시키기 위해 열심히 노력해 왔으며 장기적으로 사용자 경험을 향상시킬 새로운 기능도 개발하고 있습니다. 변화가 일정하기 때문에 앞뒤로 흔들리는 진자와 같습니다. 우리는 장기적으로 구축하는 동시에 단기적으로 무엇을 할 수 있는지 배우고, 적응하고, 알아낼 수 있어야 합니다. 

예를 들어 우리가 엄청난 양의 무리 문제를 어떻게 처리했는지 생각해 보십시오. 우리 개발자 커뮤니티는 주말에 과대 광고를 활용하여 사용자를 자신의 경험으로 끌어들일 수 있다는 것을 깨달았습니다. 이로 인해 토요일 아침에는 수많은 사람들이 체험에 참여하게 되었습니다. 따라서 확장 문제는 쉽게 해결할 수 있는 문제가 아니었기 때문에 엔지니어링 계획을 바꿔야 했습니다. 콘텐츠가 정적인 경우 상단에 캐싱 레이어를 추가하고 최대 사용에 맞춰 용량을 프로비저닝하여 이 문제를 해결합니다. 그러나 우리 시스템의 실시간 특성은 조회를 나누고 동시성을 확장하기 위해 인덱싱 및 검색 시스템을 다시 설계하는 것을 의미했습니다. 

귀하와 귀하의 팀이 기술 문제를 해결하는 방식에 가장 적합한 Roblox 가치는 무엇이라고 생각하시나요?

커뮤니티를 존중하는 것은 우리 팀이 기술적인 문제를 해결하는 방식과 가장 잘 일치합니다. 우리 커뮤니티는 경험을 만들고 기술적 요구 사항을 충족하는 사용자와 제작자로 구성되어 있습니다. 둘 다 똑같이 중요합니다. 따라서 우리가 무언가를 변경할 때 그것이 모든 사람에게 어떤 영향을 미칠지 매우 신중하게 생각해야 합니다. 

예를 들어, 순간 이동에 영향을 미치는 API와 같은 수정을 고려하고 있다면 이것이 사용자와 개발자 모두에게 어떤 영향을 미칠지 이해해야 합니다. 우리는 사람들이 올바른 게임을 플레이하도록 하는 방법뿐만 아니라 개발자에게 더 많은 옵션과 제어권을 제공하는 방법에 대해 생각하는 데 많은 시간을 보냅니다. 우리는 정기적으로 개발자에게 연락하여 새로운 기능에 대해 브레인스토밍합니다. 

Roblox와 팀이 어디로 향하고 있는지에서 가장 흥미로운 점은 무엇인가요? 

세개. 첫째, 우리의 엄청난 성장에 감동받았습니다. 두 번째는 Roblox의 창조와 혁신의 잠재력입니다. 사람들은 끊임없이 새로운 아이디어와 경험을 떠올리고 있으며, 우리가 그 창의성을 확장하는 방법에 대해서도 창의력을 발휘하도록 압력을 가하고 있습니다. 셋째, AI/ML은 호황을 누리고 있으며 Roblox는 이 흐름의 최전선에 있습니다. 예를 들어 Roblox에서는 매치메이킹에 추가 ML을 통합하고 다른 독특하고 최첨단 방식의 생성 AI를 통합하고 있습니다. 정말 흥미롭습니다. 

spot_img

최신 인텔리전스

spot_img