유튜브에서 영상을 보다보니 노마드 코더 채널에서 위의 제목으로 영상이 올라온 것을 볼 수 있었다. 모르던 내용이기도 하고 흥미로워서 영상 내용 정리 및 추가적으로 정리한다. 영상링크
넷플릭스의 백엔드는 초창기에 JAVA, Oracle 를 이용하여 그들의 데이터 센터에 호스팅되었다. 하드웨어를 직접 사서 관리했다는 의미이다. 이 구조의 문제는 너무 monolithic 했다는 점! monolithic 이란 하나의 거대한 백엔드 어플리케이션이 모든 것을 처리하는 경우를 말한다.
이러한 구조는 보통의 백엔드 구조라고 한다. 단점은 모든 것이 한 곳에 모여있기 때문에 어떠한 이유로 서버에 오류가 발생하면 전체 시스템이 같이 붕괴된다는 위험이 있다는 것이다. 예를 들어 영상 스트리밍에 에러가 발생하면 결제, 회원 가입 같은 전체 서비스가 같이 다운되게 된다. 또한 여러 팀에서 코드를 수정하거나 프로덕트를 배포하기 위해서는 전체 서버를 다시 시작해야하기 때문에 불편하다. 그리고 확장을 하게 될 경우 scale-up, 수직적으로 가능하다. 더 강력한 서버를 구매해야 한다는 의미이다. 따라서 탄력적이라고 보기는 힘들다. 갑자기 트래픽이 급증하면 대응할 수 없고, 반대로 메모리를 많이 구매했지만 유저가 줄어들면 쓸모없기 때문이다. 이러한 이유로 넷플릭스는 마이크로 서비스 아키텍쳐로 변경했다고 한다.
마이크로 서비스 아키텍쳐는 monolithic과 정반대 개념이다. 모두 작고, 독립적인 서비스로 나뉘어 있고 느슨히 결합되어 있고 상호의존적이지 않다. 서비스들이 각기 다른 서버에서 돌아갈 수도 있고 언어가 달라도 된다. 또한 일부 서비스에 에러가 발생해도 전체에 영향을 주지 않는다. 관리와 확장에도 용이하다. 수평적 확장이 가능하다.
그러나 실제로 도입하는 것이 쉽지 않다. 그래서 넷플릭스는 AWS로 이동했다.
회사들은 주로 모놀리식으로 시작해서 그들이 정말 필요성을 느낄 때만 마이크로 서비스로 이동한다고 한다.
고해상도의 영상을 다양한 디바이스로 어떻게 빠르게 전달할까?
모든 영상을 담은 하나의 서버를 이용하게 되면 해당 서버에 문제가 발생할 경우 모두가 영상을 볼 수 없게 된다. 또한 서버의 위치에 따라 영상 로딩이 빠르거나 느릴 것이다. 따라서 CDN(Content Delivery Network)을 이용해서 컨텐츠를 전달했다. CDN은 전세계에 서버를 가지고 있는 회사 같은 것으로 결제를 하면 파일을 가져다 복사하고 전세계에 뿌리고 유저가 영상을 요청하면 가까운 서버에서 응답한다. 그러나 다른 회사의 서버를 최적화시키는 것은 어렵기 때문에 자체 시스템을 개발했다.
360TB의 영상과 시리즈로 채워서 인터넷 회사에 보내는 방식이다. 한국에서 킹덤을 볼 때 영상이 미국에서 오는 것이 아니라 우리의 인터넷 회사 데이터 센터에서 오는 것일 수 있다. 이렇기 때문에 VPN을 이용하면 해당 국가에서 볼 수 없는 컨텐츠도 볼 수 있게 된다. VPN을 쓰면 다른 ISP를 쓰기 때문에 다른 국가의 컨텐츠에 접속 가능한 것이다.
장점
단점
장점
단점