확장 가능한 분산 플랫폼을 실행하려면 고객이 필요할 때 필요한 것을 가질 수 있도록 안정성에 대한 약속이 필요합니다. 종속성은 특히 Roblox만큼 큰 플랫폼에서 다소 복잡할 수 있습니다. 신뢰할 수 있는 서비스를 구축한다는 것은 종속성의 복잡성과 상태에 관계없이 주어진 서비스가 중단되지 않는다는 것을 의미합니다. 가능), 버그 없이 작동합니다(예: 높은 품질) 및 오류 없이(예: 결함 허용).
신뢰성이 중요한 이유
우리의 계정 ID 팀은 우리가 구축한 규정 준수 서비스가 플랫폼의 핵심 구성 요소이기 때문에 더 높은 안정성에 도달하기 위해 최선을 다하고 있습니다. 잘못된 규정 준수는 심각한 결과를 초래할 수 있습니다. Roblox의 자연스러운 작동을 차단하는 비용은 장애 후 복구에 필요한 추가 리소스와 사용자 경험 약화로 인해 매우 높습니다.
안정성에 대한 일반적인 접근 방식은 주로 가용성에 중점을 두지만 경우에 따라 용어가 혼합되어 오용되는 경우도 있습니다. 가용성에 대한 대부분의 측정은 서비스가 실행 중인지 여부만 평가하는 반면 파티션 허용 오차 및 일관성과 같은 측면은 때때로 잊혀지거나 잘못 이해됩니다.
CAP 정리에 따르면 모든 분산 시스템은 이 세 가지 측면 중 두 가지만 보장할 수 있으므로 당사의 규정 준수 서비스는 고가용성 및 파티션 허용을 위해 일부 일관성을 희생합니다. 그럼에도 불구하고, 우리 서비스는 거의 희생하지 않았고 아래에 설명된 합리적인 아키텍처 변경으로 좋은 일관성을 달성하기 위한 메커니즘을 찾았습니다.
더 높은 신뢰성에 도달하기 위한 프로세스는 반복적이며, 사고가 발생하기 전에 결함을 예방, 발견, 감지 및 수정하기 위해 엄격한 측정과 지속적인 작업이 일치합니다. 우리 팀은 다음 사례에서 강력한 가치를 확인했습니다.
- 올바른 측정 – 고객에게 품질이 제공되는 방식과 종속성이 우리에게 품질을 제공하는 방식에 대한 완전한 관찰 가능성을 구축합니다.
- 적극적인 기대 – 아키텍처 검토 및 종속성 위험 평가와 같은 활동을 수행합니다.
- 우선 수정 – 당사 서비스에 연결된 서비스 및 종속성에 대한 사고 보고서 해결에 더 많은 주의를 기울입니다.
더 높은 신뢰성을 구축하려면 품질 문화가 필요합니다. 우리 팀은 이미 성능 중심 개발에 투자하고 있었고 프로세스의 성공이 채택에 달려 있다는 것을 알고 있습니다. 팀은 이 프로세스를 완전히 채택하고 관행을 표준으로 적용했습니다. 다음 다이어그램은 프로세스의 구성 요소를 강조 표시합니다.
올바른 측정의 힘
메트릭에 대해 자세히 알아보기 전에 서비스 수준 측정에 대해 신속하게 설명해야 합니다.
- SLO(Service Level Objective)는 우리 팀이 목표로 하는 신뢰성 목표(예: 99.999%)입니다.
- SLI(Service Level Indicator)는 일정 기간(예: 지난 99.975월 XNUMX%)에 달성된 신뢰도입니다.
- SLA(Service Level Agreement)는 주어진 기간(예: 주당 99.99%)에 소비자가 제공하고 기대하는 신뢰도입니다.
SLI는 가용성(처리되지 않거나 누락된 응답 없음), 내결함성(서비스 오류 없음) 및 달성된 품질(예기치 않은 오류 없음)을 반영해야 합니다. 따라서 우리는 SLI를 서비스에 전송된 총 요청과 비교한 성공적인 응답의 "성공 비율"로 정의했습니다. 성공적인 응답은 시간과 형식에 따라 발송된 요청입니다. 연결, 서비스 또는 예기치 않은 오류가 발생했습니다.
이 SLI 또는 성공률은 소비자의 관점(즉, 클라이언트)에서 수집됩니다. 의도는 SLA가 충족되었다고 확신할 수 있도록 소비자에게 전달되는 실제 종단 간 경험을 측정하는 것입니다. 그렇게 하지 않으면 고객과 연결하기 위한 모든 인프라 문제를 무시하는 잘못된 신뢰감을 갖게 됩니다. 소비자 SLI와 마찬가지로 종속성 SLI를 수집하여 잠재적인 위험을 추적합니다. 실제로 모든 종속성 SLA는 서비스 SLA와 일치해야 하며 직접적인 종속성이 있습니다. 한 사람의 실패는 모두의 실패를 의미합니다. 우리는 또한 서비스 자체(예: 서버)의 메트릭을 추적하고 보고하지만 이는 높은 안정성을 위한 실질적인 소스가 아닙니다.
SLI 외에도 모든 빌드는 CI 워크플로에서 보고하는 품질 지표를 수집합니다. 이 관행은 품질 게이트(즉, 코드 적용 범위)를 강력하게 시행하고 코딩 표준 준수 및 정적 코드 분석과 같은 다른 의미 있는 지표를 보고하는 데 도움이 됩니다. 이 주제는 이전에 다른 기사에서 다루었습니다. 성능 중심의 마이크로서비스 구축. 우수한 점수에 도달하는 데 더 많이 투자할수록 불리한 조건에서도 시스템이 실패하지 않을 것이라는 확신이 생기기 때문에 품질에 대한 철저한 준수는 신뢰성에 대해 이야기할 때 더해집니다.
우리 팀에는 두 개의 대시보드가 있습니다. One은 소비자 SLI와 종속성 SLI 모두에 대한 모든 가시성을 제공합니다. 두 번째는 모든 품질 메트릭을 보여줍니다. 우리는 모든 것을 하나의 대시보드로 병합하는 작업을 진행하고 있으므로 관심 있는 모든 측면이 통합되어 지정된 시간에 보고할 준비가 됩니다.
실패 예상
하기 건축 리뷰 신뢰할 수 있는 기본적인 부분입니다. 먼저 중복성이 있는지 여부와 종속성이 다운될 때 서비스가 생존할 수 있는 수단이 있는지 확인합니다. 일반적인 복제 아이디어 외에도 대부분의 서비스는 향상된 이중 캐시 수화 기술, 이중 복구 전략(예: 장애 조치 로컬 대기열) 또는 데이터 손실 전략(예: 트랜잭션 지원)을 적용했습니다. 이러한 항목은 다른 블로그 항목을 보증할 만큼 충분히 광범위하지만 궁극적으로 가장 좋은 권장 사항은 재해 시나리오를 고려하고 성능 저하를 최소화하는 아이디어를 구현하는 것입니다.
예상해야 할 또 다른 중요한 측면은 연결성을 향상시킬 수 있는 모든 것입니다. 즉, 클라이언트에 대한 짧은 대기 시간에 대해 적극적으로 대응하고 캐시 제어 기술, 사이드카 및 시간 초과, 회로 차단기 및 재시도에 대한 고성능 정책을 사용하여 매우 높은 트래픽에 대비해야 합니다. 이러한 사례는 HTTP 및 gRPC의 캐시, 저장소, 대기열 및 상호 종속 클라이언트를 포함한 모든 클라이언트에 적용됩니다. 또한 서비스의 정상 신호를 개선하고 상태 확인이 모든 컨테이너 오케스트레이션에서 중요한 역할을 한다는 것을 이해하는 것을 의미합니다. 대부분의 서비스는 상태 확인 피드백의 일부로 성능 저하 신호를 더 잘 수행하고 정상 신호를 보내기 전에 모든 중요한 구성 요소가 작동하는지 확인합니다.
서비스를 중요한 부분과 중요하지 않은 부분으로 나누는 것은 가장 중요한 기능에 집중하는 데 유용한 것으로 입증되었습니다. 우리는 동일한 서비스에 관리자 전용 엔드포인트를 사용했으며 자주 사용되지는 않았지만 전체 대기 시간 지표에 영향을 미쳤습니다. 이들을 자체 서비스로 이동하면 모든 지표에 긍정적인 영향을 미쳤습니다.
의존성 위험 평가 종속성과 관련된 잠재적인 문제를 식별하는 중요한 도구입니다. 즉, SLI가 낮은 종속성을 식별하고 SLA 조정을 요청합니다. 이러한 종속성은 통합 단계에서 특별한 주의가 필요하므로 벤치마킹에 추가 시간을 할애하고 새 종속성이 계획에 대해 충분히 성숙되었는지 테스트합니다. 한 가지 좋은 예는 Roblox SaaS(Storage-as-a-Service)를 조기에 채택한 것입니다. 이 서비스와 통합하려면 버그 티켓을 제출하고 정기적인 동기화 회의를 통해 결과와 피드백을 전달해야 했습니다. 이 모든 작업은 "신뢰성" 태그를 사용하므로 소스와 우선 순위를 빠르게 식별할 수 있습니다. 새로운 종속성이 준비되었다는 확신을 가질 때까지 특성화가 자주 발생했습니다. 이 추가 작업은 공통의 목표를 위해 함께 행동하는 데 필요한 수준의 안정성으로 종속성을 끌어내는 데 도움이 되었습니다.
혼돈에 구조를 가져오다
사건이 발생하는 것은 결코 바람직하지 않습니다. 그러나 이런 일이 발생하면 더 신뢰할 수 있도록 수집하고 배워야 할 의미 있는 정보가 있습니다. 우리 팀은 일반적인 전사 보고서를 넘어서 생성된 팀 사건 보고서를 가지고 있으므로 영향의 규모에 관계없이 모든 사건에 집중합니다. 우리는 근본 원인을 불러내고 모든 작업의 우선 순위를 지정하여 향후에 이를 완화합니다. 이 보고서의 일부로 우리는 다른 팀을 불러 우선 순위가 높은 종속성 문제를 해결하고 적절한 해결 방법을 따르고 우리에게 적용될 수 있는 패턴을 회고하고 찾습니다.
팀은 서비스별 월간 안정성 보고서 여기에는 여기에 설명된 모든 SLI, 신뢰성 때문에 열었던 모든 티켓 및 서비스와 관련된 모든 가능한 사건이 포함됩니다. 우리는 이러한 보고서를 생성하는 데 너무 익숙해서 다음 단계는 추출을 자동화하는 것입니다. 이 정기적인 활동을 수행하는 것이 중요하며, 개발 과정에서 안정성이 지속적으로 추적되고 고려되고 있음을 상기시켜줍니다.
당사의 계측에는 알려진 문제와 예상되는 문제가 발생할 때 가능한 한 빨리 호출할 수 있도록 사용자 지정 메트릭과 향상된 경고가 포함됩니다. 가양성을 포함한 모든 알림은 매주 검토됩니다. 이 시점에서 모든 문서를 다듬는 것이 중요합니다. 그래야 소비자가 알림이 트리거되고 오류가 발생할 때 무엇을 예상해야 하는지 알 수 있고 모든 사람이 무엇을 해야 하는지 알 수 있습니다(예: 플레이북 및 통합 지침이 자주 조정되고 업데이트됨).
궁극적으로, 우리 문화에서 품질을 채택하는 것은 더 높은 신뢰성에 도달하는 데 가장 중요하고 결정적인 요소입니다.. 일상 업무에 적용된 이러한 관행이 이미 어떻게 성과를 거두고 있는지 관찰할 수 있습니다. 우리 팀은 신뢰성에 집착하며 이것이 우리의 가장 중요한 성과입니다. 우리는 잠재적인 결함이 미칠 수 있는 영향과 언제 도입될 수 있는지에 대한 인식을 높였습니다. 이러한 사례를 구현한 서비스는 지속적으로 SLO 및 SLA에 도달했습니다. 우리가 수행한 모든 작업을 추적하는 데 도움이 되는 안정성 보고서는 우리 팀이 수행한 작업에 대한 증거이며 다른 팀에 정보를 제공하고 영향을 줄 수 있는 귀중한 교훈입니다. 이것이 바로 안정성 문화가 우리 플랫폼의 모든 구성 요소에 영향을 미치는 방식입니다.
더 높은 안정성으로 가는 길은 쉽지 않지만 사람들이 함께 모이는 방식을 재구성하는 신뢰할 수 있는 플랫폼을 구축하려면 필요합니다.
Alberto는 Roblox 계정 ID 팀의 수석 소프트웨어 엔지니어입니다. 그는 확장성이 뛰어난 아키텍처에 중점을 둔 많은 AAA 게임 타이틀 및 소셜 미디어 플랫폼에 크레딧을 제공하면서 오랫동안 게임 산업에 종사해 왔습니다. 이제 그는 최고의 개발 관행을 적용하여 Roblox가 성장하고 성숙해지도록 돕고 있습니다.
포스트 대규모 플랫폼 안정성 제공 첫 번째 등장 Roblox 블로그.
- "
- 소개
- 계정
- 달성
- 방과 후 액티비티
- 활동
- 부가
- 추가
- 양자
- 협약
- All
- 분석
- 다른
- 아무것도
- 접근
- 건축
- 약
- 기사
- 유효성
- 가능
- 전에
- 기준
- BEST
- 더 나은
- 블로그
- 곤충
- 빌드
- 캐시
- 전화
- 한
- 가지 경우
- 원인
- 확인하는 것이 좋다.
- 클라이언트
- 암호
- 코딩
- 공통의
- 소통
- 복잡성
- compliance
- 구성 요소들
- 자신
- 입/출력 라인
- 결과
- 소비자
- 소비자
- 컨테이너
- 끊임없는
- 수
- 만들
- 만든
- 크레딧
- 임계
- 문화
- 고객
- 계기반
- 데이터
- 데이터 손실
- 배달하다
- 배달
- 개발
- 곧장
- 재앙
- 아래 (down)
- 구동
- 시
- e
- 초기의
- 기사
- 오류
- 경험
- 추출
- 고장
- 피드백
- 먼저,
- 수정
- 초점
- 집중
- 따라
- 잊어
- 형태
- 가득 찬
- 미래
- G
- 경기
- 게임 산업
- 게이츠
- 생성
- 주어진
- 좋은
- 성장
- 가이드 라인
- 건강
- 도움
- 여기에서 지금 확인해 보세요.
- 높은
- 더 높은
- 방법
- HTTPS
- i
- 확인
- 통합 인증
- 영향
- 구현
- 중대한
- 개선
- 개선
- 개선
- 포함
- 산업
- 영향
- 정보
- 인프라
- 완성
- 소개
- 투자하다
- 투자
- IT
- 배우다
- 레벨
- 지방의
- 긴
- 사항
- May
- 측정
- 미디어
- 회의
- 통계
- 혼합 된
- 배우기
- 목표
- 오케스트레이션
- 주문
- 기타
- 자신의
- 사람들
- 성능
- 플랫폼
- 플랫폼
- 놀이
- 포인트 적립
- 관점
- 정책
- 긍정적인
- 가능한
- 가능성
- 힘
- 제시
- 교장
- 방법
- 품질
- 빨리
- 도달
- 복구
- 회복
- 신고
- 보고서
- 요청
- 제품 자료
- 리뷰
- 연락해주세요
- 위험
- 도로
- Roblox
- 달리는
- 확장성
- 규모
- 감각
- 섬기는 사람
- 예배
- 서비스
- 비슷한
- So
- 사회적
- 소셜 미디어
- 소셜 미디어 플랫폼
- 소프트웨어
- 소프트웨어 엔지니어
- 예정입니다.
- Status
- 상점
- 전략
- 성공
- 성공한
- SUPPORT
- 생존
- 체계
- 말하는
- 함께 해보세요
- 기법
- test
- XNUMXD덴탈의
- 시간
- 함께
- 공차
- 이상의 주제
- 선로
- 교통
- 신뢰할 수있는
- us
- 가치
- 관측
- 가시성
- 주
- 뭐
- 작업
- 워크플로우
- 일하는