Netflix có được viết bằng JavaScript không?

Vài năm trước, Netflix đã quyết định tái cấu trúc ứng dụng khách chính của mình thành JavaScript từ C++. Cách tiếp cận này hứa hẹn một giao diện người dùng [UI] nhất quán hơn và cho phép Netflix đổi mới các dịch vụ mới nhanh hơn. Nhưng cách tiếp cận ban đầu dẫn đến một ứng dụng JavaScript lớn dễ vỡ, khó kiểm tra và cập nhật

Semmy Purewal, kỹ sư phần mềm cao cấp của Netflix tại Hội nghị Fluent cho biết, trong năm ngoái, Netflix đã triển khai kế hoạch mô đun hóa mã JavaScript giúp giải quyết nhiều hạn chế này. Điều này cho phép thử nghiệm đơn vị của các mô-đun riêng lẻ, chia sẻ mã tốt hơn giữa các nhóm và cho phép Netflix đẩy các bản cập nhật hàng ngày thay vì sáu tuần một lần

Kiến trúc máy khách Netflix được thiết kế để bắt chước tính linh hoạt của trình duyệt Web trong việc cho phép cập nhật các thiết bị khác nhau. Công ty bắt đầu với một trình duyệt đặc biệt bao bọc WebKit xung quanh mã lõi hỗ trợ giao diện người dùng. Điều này giúp các kỹ sư của Netflix cập nhật giao diện người dùng dễ dàng hơn giống như bất kỳ ứng dụng nào trên Web

Chuyển sang JavaScript

Cách tiếp cận này đã giúp Netflix tạo giao diện người dùng, nhưng nó không hoạt động tốt trên các thiết bị cũ hơn. Tạo các ứng dụng nhất quán trên các thiết bị rất khó vì các thao tác như thao tác DOM phải đi qua một cây khổng lồ để chèn các thành phần giao diện người dùng. Vì vậy, Netflix phải quyết định xem họ có cần toàn bộ DOM và tất cả hành lý đi kèm với nó hay không, Purewal nói.  

Cách họ giải quyết vấn đề này là xây dựng một công cụ hiển thị tùy chỉnh. Kiến trúc này hoạt động giống như Node. js, nhưng trên máy khách chứ không phải máy chủ, Purewal nói. Cách tiếp cận này cho phép ứng dụng kết xuất chính truy cập tài nguyên hệ thống cho nền tảng Netflix trên nhiều thiết bị khác nhau, từ nền tảng trò chơi hiệu suất cao đến TV cơ bản

Nó cần để xử lý các chức năng liên quan đến hệ thống như giải mã và phát lại video, kết nối mạng, ghi nhật ký, bảo mật, kiểm soát nội dung và bộ nhớ đệm. Cách tiếp cận này cho phép Netflix đổi mới trên tất cả các tính năng và dịch vụ khác được hiển thị trên nền tảng chung này. Ví dụ: họ đã thử những cách mới để làm cho phim bắt đầu nhanh hơn, bảo mật thông tin, truyền phát và ghi nhật ký một cách thích ứng

Vấn đề về phạm vi của JavaScript

"Mã của chúng tôi gọn gàng hơn, có tổ chức hơn và dễ kiểm tra hơn. "

Semmy Purewal, Kỹ sư phần mềm cao cấp, Netflix

Vấn đề là phần lớn các chức năng này đã tồn tại trong C++ và một khi mã này đến thiết bị, nó không phải lúc nào cũng được cập nhật trong trường. Mục tiêu là chuyển nhiều nội dung quan trọng không hiệu quả sang JavaScript để cho phép đổi mới nhiều hơn. Họ đã triển khai Lớp bảo mật thư Netflix, MSL JS như một giao thức nhắn tin bảo mật linh hoạt và có thể mở rộng để truyền dữ liệu

Điều này dẫn đến một số khác biệt thú vị về phạm vi giữa các biến trong JavaScript và C++. Các vấn đề xảy ra khi hai biến được cho là độc lập cũng ảnh hưởng đến biến thứ ba mà cả hai có thể truy cập được. Những biến được cho là độc lập này cuối cùng lại ảnh hưởng lẫn nhau, mặc dù chúng không có ý định kết nối với nhau. Kết quả là mã bị ảnh hưởng rất nhiều, Purewal nói

Sự nguy hiểm của quá nhiều kết nối

Do bản chất nguyên khối của cơ sở mã này, Netflix đã không thực hiện các bài kiểm tra đơn vị. Nó để lại tất cả các thử nghiệm cho đến các thử nghiệm tích hợp ở cuối. Thật khó để mô phỏng trạng thái toàn cầu mà mã mới phụ thuộc vào. Ngoài ra, Netflix không thể chia sẻ mã giữa các nhóm. Khi các nhóm JavaScript khác cần chức năng tương tự, họ sẽ phải đưa vào tất cả mã được yêu cầu

Đây là vấn đề tương tự có thể xảy ra với các chương trình hướng đối tượng với hệ thống phân cấp lớp khổng lồ. Các nhà phát triển phải bao gồm một cơ sở mã khổng lồ để có được một lớp. Purewal quan sát thấy đây là tất cả các mô hình chống liên quan đến phạm vi rộng. Vấn đề thực sự là các nhà phát triển không có quyền truy cập vào các tính năng ngôn ngữ giống như trong C++. Tất cả các ngôn ngữ lập trình hiện đại khác đều có ý tưởng duy trì tính độc lập

Làm cho JavaScript hướng đối tượng

Trước đây, JavaScript thiếu các nguyên mẫu ngôn ngữ quen thuộc hỗ trợ ẩn dữ liệu và chức năng như các lớp. Netflix đã chuyển sang các mô-đun để tạo các cấu trúc giống như lớp để giới hạn phạm vi. Trong trường hợp này, các lập trình viên xác định bên trong các đối tượng, cung cấp cho chúng một API và cuối cùng xuất chúng. Ý tưởng về các mô-đun đã được phổ biến trong Node. js và hiện có sẵn rộng rãi hơn. ECMAScript 6 cũng có các mô-đun được tích hợp sẵn

Lập trình mô-đun là siêu tập hợp của lập trình hướng đối tượng dựa trên lớp. Có thể làm cho một mô-đun xuất một lớp cụ thể. Lập trình mô-đun cũng là một tập hợp con của lập trình thủ tục. Các thủ tục nên được thu thập dưới dạng các mô-đun. Lợi ích của việc sử dụng phong cách lập trình này là các nhà phát triển có thể phát triển độc lập với hệ thống. Chúng nhỏ, cụ thể và có thể được đưa vào trình quản lý gói

Purewal cho biết cách tiếp cận này hỗ trợ hai trong số những ý tưởng hay của lập trình OO xung quanh lập trình theo hợp đồng và lập trình cho một giao diện. Điều này giúp nhà phát triển dễ dàng thay đổi một mô-đun mà không ảnh hưởng đến các mô-đun khác và cho phép sử dụng các trình quản lý gói như npm

Chuyển đổi dần dần

Netflix đã tái cấu trúc mã của mình thành các mô-đun trong suốt một năm. Họ đã chuyển từ CMake sang Grunt để tạo các tạo tác JavaScript. Browserify đã giúp Netflix xây dựng các gói JavaScript một cách hiệu quả. Jasmine đã đơn giản hóa quy trình kiểm tra đơn vị mô-đun mới. Mô-đun đầu tiên là EventEmitter, được mô phỏng gần đúng theo Node. API js

Các chức năng mới đã được triển khai dưới dạng các mô-đun JavaScript phổ biến. Netflix cũng lấy tất cả các hệ thống con đơn cũ và tái cấu trúc chúng thành các hệ thống con dựa trên phiên bản trong JavaScript. Nội xạ phụ thuộc đã được sử dụng khi được yêu cầu chia sẻ các hệ thống con này thay vì sử dụng các thuộc tính toàn cầu

Purewal ủng hộ các doanh nghiệp khác thực hiện quá trình chuyển đổi tương tự sang JavaScript bằng cách sử dụng các công cụ đi kèm như Browserify hoặc webpack. Ngoài ra, bạn nên bắt đầu từ quy mô nhỏ bằng cách xuất API của một hoặc hai mô-đun rồi thiết lập chính sách triển khai các tính năng mới dưới dạng mô-đun. Purewal lưu ý: “Phần lớn, mã của chúng tôi phát triển nhanh đến mức rất nhiều thứ đó biến mất.

Sau quá trình chuyển đổi này, Netflix đã chuyển từ chu kỳ ba tuần sang triển khai hàng ngày. Purewal nói: “Đó là một thứ thay đổi cuộc chơi đối với chúng tôi. “Mã của chúng tôi gọn gàng hơn, có tổ chức hơn và dễ kiểm tra hơn. ”

Netflix có được xây dựng trên JavaScript không?

*Một cách dễ dàng để viết, gỡ lỗi và thiết kế API. Netflix quyết định tái cấu trúc ứng dụng khách chính của mình thành JavaScript từ C++ . Cách tiếp cận này hứa hẹn một giao diện người dùng [UI] nhất quán hơn và cho phép Netflix đổi mới các dịch vụ mới nhanh hơn.

Netflix được viết bằng ngôn ngữ nào?

Netflix sử dụng Java và Scala để triển khai nhiều tác vụ phụ trợ. Để thiết kế ứng dụng web của mình, Javascript đã được sử dụng. Các ngôn ngữ và công nghệ lập trình khác được Netflix sử dụng bao gồm Node. js, React, MySQL, PostgreSQL, Amazon RDS, Presto, CloudBees, Pig, Amazon EC2, Amazon S3, Cassandra, v.v.

Giao diện người dùng Netflix được viết bằng gì?

Giao diện người dùng Netflix được viết bằng ReactJS vì ba lý do chính… tốc độ khởi động, hiệu suất thời gian chạy và tính mô-đun.

Netflix có được xây dựng bằng NodeJS không?

NodeJS không chỉ dành cho các dự án nhỏ. Netflix sử dụng nó , PayPal, Walmart và nhiều công ty khác cũng vậy. Nói như vậy, NodeJS cũng là một lựa chọn tốt cho các dự án nhỏ.

Netflix được xây dựng bằng gì?

Ứng dụng Netflix dựa trên nhiều ngôn ngữ lập trình. Python, nút. JS, Java, Kotlin và Swift . Điều này được thực hiện để đảm bảo khả năng tương thích toàn diện của ứng dụng Netflix trên nhiều nền tảng. trình duyệt, TV thông minh, điện thoại thông minh và bảng điều khiển trò chơi.

JavaScript được sử dụng như thế nào để tạo Netflix?

Bằng cách sử dụng cùng một khung JavaScript ở mặt trước và mặt sau, các nhà phát triển đã giảm khối lượng công việc và tăng chất lượng của ứng dụng web cuối cùng. Bằng cách sử dụng các API riêng biệt được viết bằng Node. js , Netflix đã có thể giảm tổng thời gian phát triển và cải thiện tốc độ ứng dụng của họ.

Chủ Đề