왜 유튜브 영상의 url은 무작위의 문자들로 구성되어 있을까? (뇌피셜 많이 포함)
유튜브를 보시다 보면 아래와 같은 링크 형태를 흔하게 접하게 됩니다.
https://www.youtube.com/watch?v=Y5viKFgccqc (전체 url)
https://youtu.be/Y5viKFgccqc (간소화한 url)
여기서 굵은 글씨(Y5viKFgccqc)에 주목해보도록 하겠습니다(지금부터는 이 굵은 글씨를 'v값'으로 부르겠습니다.). 이 11개의 문자는 영상을 올릴 때마다 무작위로 정해지며, 각각의 글자는 대/소문자 알파벳(a ~ Z) 또는 숫자(0~9) 또는 하이픈(-) 또는 언더바(_)로 구성되어 있습니다. 제가 유튜브 모든 영상을 아는 것은 아니기 때문에 이 규칙에 어긋나는 영상 url도 존재할 수 있겠습니다만, 일단은 이 규칙에서 어긋나지 않는다고 가정하겠습니다.
그러면 가능한 v 값의 경우의 수는 얼마나 될까요? 단순히 26(소문자 개수) + 26(대문자 개수) + 10(숫자 개수) + 2(하이픈, 언더바) = 64을 11번 곱하면 될 것 같네요. 그 값은 73,786,976,294,838,206,464입니다. 따라서 이론적으로 이 규칙을 변경하지 않는 한 유튜브에는 서로 다른 영상을 위 숫자만큼 제공할 수 있습니다. 약 7000경 정도 되네요. 제가 살면서 유튜브의 영상이 이 정도로 쌓일 날이 올까요? 잘 모르겠습니다.
근데 한 가지 궁금증이 생깁니다. 왜 자신의 동영상을 자신이 직접 url을 설정하지 못하고, 구글이 임의로 정해주는 걸까요? 자신이 직접 url을 설정하면 외우기도 쉬울 것이고, 공유도 좀 더 쉬울 텐데 말이죠. 그렇게 하지 않고 위 규칙을 따르는 데에는 많은 이유가 있겠지만, 자신이 직접 url을 설정할 때 생기는 문제점으로 제가 생각한 것들로는 다음과 같습니다.
1. 유튜브 서버 입장에서, 많은 영상들에서 원하는 영상을 빠르게 찾기에 용이하지 않다.
만약 allaroundground라는 이름을 앞에 두고, 뒤에는 숫자를 두는 방식으로 영상을 구분한다고 가정해보겠습니다. 가령, https://www.youtube.com/watch?v=allaroundground1, https://www.youtube.com/watch?v=allaroundground110과 같은 식으로요.
이제 한 시청자는 v=allaroundground110의 영상을 보고 싶어합니다. 그래서 인터넷 브라우저에 url을 입력하고, 엔터를 누릅니다. 구글 유튜브 서버에서는 수 많은 영상을 중에서 allaroundground110라는 영상을 최대한 빠르게 찾아서 시청자에게 보여줍니다. 근데 컴퓨터는 문자열을 하나하나 비교하는 방식으로 문자열의 동일 여부를 찾아냅니다. 따라서 allaroundground1의 영상과 allaroundground110의 영상이 다르다는 것을 인지하기 위해 왼쪽부터 순서대로 17개의 문자열 비교를 해야 합니다. (물론 빠르게 문자열을 비교하는 많은 유용한 알고리즘이 더러 있습니다만, 여기서는 고려하지 않겠으며, 고려한다 해도 이 예에서 크게 달라지는 건 없을 것입니다.) 이런 영상들이 조금만 있다면 크게 문제가 되지 않겠지만, 만약 allaroundground를 접두어로 가지는 영상이 만 개 정도만 된다고 해도 서버는 17만 개의 문자열 비교를 해야 하고, 이는 시간을 잡아먹는 원인이 될 수 있습니다. 조금 비효율적인 것처럼 보이네요.
정렬을 하면 영상을 찾기가 좀 빨라지지 않을까요? 하지만 수많은 영상들이 지금도 업로드되고 있는 유튜브 입장에서, 계속 업로드되는 영상들의 v값들을 계속 정렬하기란 쉬운 일이 아닐 겁니다.
반면 초기의 언급했던 규칙을 다르면 최악의 경우에 10개의 문자열을 비교해야 하지만, 그런 경우는 거의 없고, 앞선 방법보다 훨씬 더 빠르게 영상을 찾아낼 수 있습니다. 서로 다른 두 영상이 문자열 5째까지 같을 확률이 약 10억 분의 1입니다. 왠만해선 앞의 문자열 몇 개만 비교해도 이 영상이 우리가 찾는 영상인지 아닌지를 바로 빠르게 판별해 낼 수 있다는 것이죠.
2. 서로 중복되는 v 값이 생길 가능성이 매우 높아진다.
저는 IloveU라는 형태로 v값을 만들고 싶습니다. 그런데 이런 이름은 흔하기 때문에 당연히 누군가가 이미 만들어서 사용하고 있겠죠. 운 좋게 제가 이 이름을 썼다고 해도 다른 흔한 이름을 짓는 것이 매우 힘들 것입니다. 따라서 다른 v값을 만들어야 할 겁니다. 마치 저희가 처음 회원가입을 할 때 아이디를 만드는 것처럼 중복되는 값을 쓰면 안 될 겁니다. 계속 중복확인을 해 주는 번거로운 절차 또한 거쳐야 할 겁니다.
근데 영상은 계속 많아지고, 흔해빠진 v값으로는 이제 더 이상 유튜브 영상을 업로드 할 수 없는 지경에 이르게 됩니다. 유튜버는 영상을 올릴 때마다 '어떤 v값을 써야 중복도 안 되면서 사람들이 많이 볼 수 있을까?'를 영상을 올릴 때마다 고민해야 하는 지경에 이릅니다.
제가 언급한 위 두 가지 문제점들을 없애기 위해 이를 방지하기 위해 제한을 둘 수도 있겠습니다. 가령 어떤 접두사 혹은 접미사는 한 유튜버만 쓸 수 있도록 하는 것 등 말이죠. 하지만 이런 식이면 제한 사항은 계속 늘어나게 될 것입니다. 따라서 구글 유튜브는 'v값은 우리가 알아서 정해줄게!, 넌 좋은 영상을 올리는 데 집중하렴!'으로 방식을 간소화시킨 것입니다.
전 구글 유튜브 알고리즘을 잘 모르고, 전문가도 아니기 때문에 위 내용에 오류가 많을 수 있습니다. 틀린 점은 댓글로 남겨주시면 수정하도록 하겠습니다. 읽어주셔서 감사합니다!
댓글
댓글 쓰기