Twitter đã deploy widgets JavaScript của họ như thế nào
Bài viết này được dịch từ nguồn https://blog.twitter.com/engineering mà mình mới đọc, để mô tả một công việc tưởng chừng như đơn giản mà lại không hề dễ chút nào. Deploy là 1 công việc khó và dễ làm nản lòng bất kỳ người nào phải làm nó. Rất nhiều bugs có thể xuất hiện trong quá trình ...
Bài viết này được dịch từ nguồn https://blog.twitter.com/engineering mà mình mới đọc, để mô tả một công việc tưởng chừng như đơn giản mà lại không hề dễ chút nào.
Deploy là 1 công việc khó và dễ làm nản lòng bất kỳ người nào phải làm nó. Rất nhiều bugs có thể xuất hiện trong quá trình deploy, nhất là khi bạn có một số lượng lớn các dòng code thay đổi. Đặc biệt hơn nữa là khi với mỗi phiên bản release được deploy sẽ tới tay hàng triệu người dùng, mũi tên đã bắn không bao giờ quay trở lại (orz), bạn cứ tưởng tượng xem sẽ tồi tệ thế nào nếu sản phẩm có bug bị hàng triệu người dùng phàn nàn 1 lúc =)) Dưới đây là câu chuyện về việc Twitter đã làm thế nào để công việc deploy diễn ra một cách an toàn và dễ dàng.
Các nhà xuất bản web, người viết blog (gọi chung là Publishers) sử dụng 1 file JavaScript, widgets.js, để nhúng nội dung Twitter vào website của họ. Link file: https://platform.twitter.com/widgets.js cùng hướng dẫn sử dụng tại đây.
Chẳng hạn ta có thể nhúng vào website nội dung twitter của ai đó:
Dù chỉ dùng 1 file Javascript widgets.js này nhưng lại có thể nhúng Tweets, Timelines, và Tweet buttons, một công việc quá đơn giản và dễ dàng để các web publishers có thể tích hợp ** Twitter widgets** vào website của họ. Cùng với đó, để cải thiện chất lượng dịch vụ, chúng tôi cập nhật code cho file widgets.js hàng tuần để fix bug, thêm tính năng mới mà không làm ảnh hưởng cũng như yêu cầu các publishers phải làm thêm bất cứ công việc nào để nhận được các update mới này.
Nhưng để đảm bảo người sử dụng không mất công mà vẫn làm mọi việc đơn giản, thì công việc của nhà cung cấp sẽ trở nên phức tạp. Cụ thể, khi nhìn vào đường dẫn https://platform.twitter.com/widgets.js chắc hẳn chúng ta cũng đoán được phần nào việc phải làm. Bạn cần deploy:
- 1 file duy nhất
- Unversioned (Không có kiểu v1, v2, hoặc các mã hash phức tạp kèm theo)
- Well-known
Để các publishers có thể tin tưởng mà sử dụng trên website của họ. Theo như ước tính, widgets.js code được thực thi khoảng 300.000 lần mỗi giây trôi qua, bởi hơn một tỷ người truy cập mỗi tháng. Điều này làm chúng tôi hiểu rằng: đây là một trách nhiệm lớn đối với chúng tôi và đó là lý do tại sao gần đây chúng tôi đã đầu tư nâng cấp quá trình deploy widgets.js để bắt bug sớm, đồng thời tránh các ảnh hưởng xấu tới người dùng.
A safe deploy
Chúng tôi bắt đầu project này bằng mối liên kết giữa những tiêu chuẩn deploy lý tưởng. Cụ thể, chúng tôi xác định 3 tính chất của một safe deploy mà chúng tôi đang theo đuổi:
- Reversibility (Tính thuận nghịch): ‘Rollback first, debug later’ là phương châm của chúng tôi. Rollback cần phải nhanh, dễ dàng và đơn giản. Lý tưởng nhất là một button màu đỏ khổng lồ làm giảm nhịp tim của chúng ta xuống mỗi lần deploy