Car-tech

YouTube가 Go 코드로 MySQL을 확장합니다.

[Vietsub+Lyrics] You Know I'll Go Get - DJ Haning & Rizky Ayuba

[Vietsub+Lyrics] You Know I'll Go Get - DJ Haning & Rizky Ayuba
Anonim

YouTube는 이미 Vtocc라는 Vitess 구성 요소를 하나씩 사용하여 모든 서비스의 월간 사용자 8 억 명에게 동영상을 제공합니다. YouTube는 2006 년에 YouTube를 인수했습니다.

Vtocc은 "매우 안정적이어서 프로덕션 환경에서 사용하기 위해 필요한 모든 도구를 갖추고 있습니다."YouTube 아키텍트 인 Sugu Sougoumarane은 YouTube 엔지니어 Mike Solomon과 함께 Vitess 이번 주에 샌디에고에서 열리는 Usenix LISA (Large Installation System Administration) 컨퍼런스에서 Vitess가 Go에 쓰여진 것은 비교적 새로운 프로그래밍 언어가 대규모 프로덕션 환경에서 사용될 수 있다는 아이디어의 유효성을 입증하는 데 도움이 될 수 있습니다. Google은 3 월에 Go의 버전 1을 도입했습니다.

YouTube는 매월 40 억 시간 이상의 동영상을 제공합니다. 분당 약 72 시간 분량의 비디오가 서비스에 업로드됩니다. YouTube는 모든 비디오를 파일 시스템에 직접 저장하지만 MySQL은 사용자 환경 설정, 광고 정보, 국가 사용자 지정 및 기타 필요한 정보와 같이 각 비디오를 제공하는 데 필요한 모든 메타 데이터를 저장합니다.

YouTube는 MySQL을 사용하여 좋아합니다. 이 서비스를 처음 만든 엔지니어 중 한 명인 솔로몬 (Solomon)은 " 그것은 단점을 가지고 있지만, 그 단점은 잘 알려져 있으며 쉽게 완화 될 수 있다고 그는 말했다. 그러나 MySQL은 스케일링에 문제가 있습니다. 적어도 YouTube와 같은 서비스를 수용하기 위해 최소한 규모 조정을해야합니다. "

"MySQL의 주요 문제점은 특정 용도 지점에 도달하면 하드웨어 관리 시간과 인스턴스 수를 늘릴 수있다 "고 말했다. "우리는 그 덩어리를 자동화하고 싶습니다. 복잡하고 오류가 발생하기 쉬운 모든 행동을 취하고 스스로 치료하려고합니다."

MySQL은 대규모 배포에서 사용하면 효율성이 떨어집니다. 일반적으로 MySQL에 연결하려면 서버에 자체 스레드가 필요합니다. 그러나 YouTube 운영 방식에서는 이러한 접근 방식을 사용할 수 없습니다. 솔로몬은 "수만 건의 연결을 실행하는 것은 현실적으로 불가능합니다."라고 말하면서, 회사의 엔지니어들은 핵심 MySQL 코드 자체를 변경하려고 애를 썼지 만, 복잡하고 다소 어려운 점을 지적하면서 - 견해 코드는 종종 예상치 못한 결과를 초래할 수 있습니다. 솔로몬 대변인은 "Vitess는 추가 관리 기능을 제공하기 위해 MySQL과 연계하여 개발 된 제품이기 때문에 문제가 발생하기 시작했다. 예를 들어, Vtocc 구성 요소는 수천 개의 들어오는 SQL 쿼리를 더 적은 수의 일괄 처리로 통합하므로 MySQL은 이러한 요청을 처리하는 리소스를 줄일 수 있습니다. 또한 Vtocc은 쿼리를 구문 분석하여 쿼리를보다 효율적으로 실행하고 다른 동일한 요청을 충족시키기 위해 한 쿼리의 결과를 재사용하여 중복 쿼리로 인해 발생하는 작업을 줄입니다.

Go를 사용하면 YouTube 개발자는 생산성을 향상시킬 수있었습니다 Sougoumarane은 더 전통적인 언어를 사용하고 있다고 말했다.

Go 코드는 빠르게 컴파일된다고 그는 말했다. Vitess에있는 30,000 줄의 코드는 약 30 초 만에 바이너리로 컴파일 될 수 있습니다. 풍부한 라이브러리 덕분에 많은 작업이 프로그래밍을 많이 필요로하지 않습니다. 예를 들어, Sougoumarane은 주기적으로 로그 파일을 트리밍하는 105 행 루틴을 작성했는데 C 또는 C ++을 사용하여 몇 줄 밖에 쓸 수 없었던 기능을 수행했습니다.

"그렇게 표현력있는 방법입니다."Sougoumarane이 말했습니다. "언어 기능은 잘 고려되어있어 전통적인 언어보다 훨씬 세련된 방식으로 작성하는 데 도움이됩니다." Sougoumarane은 또한 Go의 동시성 지원을 칭찬했습니다. 이것은 멀티 코어 프로세서에서 사용하기에 중요합니다. "스레드 관리에 대해 걱정할 필요가 없습니다. 이동은 스레드를 관리합니다"라고 그는 말했습니다.

언어에는 또한 단점이있다. Sougoumarane은 인정했다. 예를 들어 오류 처리가 향상 될 수 있습니다. 예약 및 가비지 수집은 일부 작업에서도 사용할 수 있습니다.

솔로몬은 시간이 지남에 따라 데이터베이스 복제 및 자동 샤딩과 같은 추가 업무를 수행하므로 관리자가 개입하지 않아도 여러 서버에서 데이터베이스가 커질 수 있다고합니다.

Joab Jackson은

The IDG News Service

에 대한 엔터프라이즈 소프트웨어 및 일반 기술 관련 뉴스를 다루고 있습니다. @Joab_Jackson에서 Twitter의 Joab을 팔로우하십시오. Joab의 전자 메일 주소는 [email protected]입니다.