#71 - Sử dụng giao thức QUIC để tối ưu hóa hiệu suất ứng dụng
Cảm ơn bạn dangtunglam đã đóng góp ý kiến cho câu hỏi tuần trước (xem mục YOUR VOICE). Ngoài ra, ban biên tập Grokking Newsletter cũng nhận được các phản hồi tích cực từ bạn tien.phanthe***@gmail.com và các bạn khác. Tuần này, mời các bạn cùng đóng góp ý kiến cho câu hỏi sau nhé:
Theo bạn, cần chuẩn bị những gì trước khi bước vào buổi interview?
Nếu bạn thấy email này bổ ích, hãy forward đến 3 người bạn của bạn nhé (để team biên tập có động lực duy trì và cải tiến newsletter nhiều hơn nữa).
Những bài viết hay
Sử dụng QUIC protocol để tối ưu hiệu suất của ứng dụng Uber — eng.uber.com
Các kỹ sư tại Uber đã nhận thấy HTTP/2 hoạt động không hiệu quả trong một số trường hợp liên quan tới mạng không dây. Các vấn đề về hiệu năng xảy ra với nguyên nhân trực tiếp đến từ giao thức TCP được cài đặt trong hệ điều hành.
Để giải quyết các vấn đề này, Uber đã áp dụng giao thức QUIC, một giao thức hiện đại hơn được triển khai qua UDP. QUIC hiện đang được IETF chuẩn hóa thành HTTP/3.
Sau khi thử nghiệm, việc tích hợp QUIC trong các ứng dụng cho phép giảm độ trễ so với TCP. Một số thí nghiệm cho thấy khả năng giảm 10-30% về độ trễ trong các ứng dụng.
Tinder chuyển sang sử dụng Kubernetes — medium.com
Trong vòng hai năm, team engineer Tinder đã migrate 200 services sang sử dụng Kubernetes với khoảng 1000 node và 48.000 container. Qua đó, giảm thời gian đáp ứng sizing từ vài phút xuống còn vài giây, đồng thời làm tăng tính ổn định cũng như đơn giản hóa việc triển khai. Bài toán đầy thách thức đã được họ giải quyết như thế nào, hãy cùng nhau tìm hiểu nhé.
Release Quality and Mobile Trains
Cứ mỗi hai tuần, SoundCloud đều chuẩn bị cho một phiên bản mới của ứng dụng trên điện thoại và publish lên app store. Mỗi phiên bản như thế có rất nhiều tính năng, code, nhắm vào một lượng rất lớn các thiết bị. Để làm được điều đó, SoundCloud đã xây dựng rất nhiều công cụ hỗ trợ, cũng như xây dựng các quy trình trong việc phát hành sản phẩm.
Trong bài viết này, giới thiệu một số kỹ thuật được sử dụng để luôn đảm bảo chất lương của các ứng dụng Android tại SoundCloud.
Xây dựng niềm tin cho thành viên thông qua nền tảng cài đặt tập trung và có tính mở rộng — engineering.linkedin.com
Vấn đề bảo vệ quyền riêng tư và dữ liệu của người dùng đang là những vấn đề được quan tâm hơn bao giờ hết. Tại LinkedIn, lưu trữ các lựa chọn của user về cách họ dự định sử dụng dữ liệu là rất quan trọng để duy trì và xây dựng niềm tin của user. Bên cạnh đó, việc tôn trọng sở thích của các thành viên về cách họ muốn tương tác với LinkedIn cũng là quan trọng không kém.
Những lựa chọn và sở thích được này thể hiện dưới dạng cài đặt (setting). Bài viết sau trình bày những kiến trúc và thiết kế hệ thống mới để lưu trữ tất cả các cài đặt tại LinkedIn, qua đó cho phép hỗ trợ tốt hơn cho các trường hợp phức tạp. Cho phép lập trình viên phát triển nhanh hơn, và dễ mở rộng trong tương lai.
Bài tập lập trình
Top 20 câu hỏi lập trình String — dev.to
Các câu hỏi lập trình về String là các câu hỏi thường gặp khi tham gia phỏng vấn. Mời bạn cùng thử sức với danh sách 20 câu hỏi sau nhé.
Code & Tools
Vulcanizer: a library for operating Elasticsearch
Visualizing navigation flow progress
Griddb, A Scalable In-Memory, NoSQL Time Series Database
Có thể bạn chưa biết
Sử dụng phương pháp STAR khi trả lời câu hỏi phỏng vấn — www.thebalancecareers.com
Khi tham gia phỏng vấn, chúng ta sẽ hay gặp những câu hỏi có dạng "Describe a time when..." và "Share an example of a situation where....". Để trả lời các câu hỏi trên, ứng viên phải kể lại một thời điểm trong quá khứ mà họ đã gặp phải vấn đề đó. Các ứng viên phải mô tả được vấn đề, và hành động của họ để giải quyết nó và kết quả ra sao.
Để trả lời cho các câu hỏi trên, STAR là một phương pháp rất hiệu quả, STAR là viết tắt của các chữ cái Situation, Task, Action, Result. Mời các bạn cùng đọc bài viết sau để hiểu rõ hơn về phương pháp này nhé.
Danh sách các câu hỏi có thể tham khảo ở đây.
Tin tức kỹ thuật
Rebuild Microsoft Edge with Chromium
Web Server Survey, Nginx is most popular webserver
Google Announces TensorFlow Graphics Library for Unsupervised Deep Learning of Computer Vision Model
Your voice
Chúng tôi đã nhận được ý kiến từ bạn dangtunglam cho câu hỏi “Bạn nghĩ những yêu cầu nào cần đặt ra khi phỏng vấn về thiết kế một hệ thống phần mềm phục vụ cho một nghiệp vụ/chức năng nhất định nào đó”. Xin cảm ơn bạn đã đóng góp ý kiến.
Mình có vài vấn đề mình rút ra sau khi xây dựng phần mềm phục vụ cho bên nghiệp vụ (Ở trường hợp của mình là xây hệ thống in-house app cho Sale/Marketing/Support Team):
1. Xác định đúng đối tượng phục vụ: Hệ thống được xây dựng để phục vụ cả leader và member, mỗi ông lại có một view về hệ thống đó khác nhau, cần phải thu thập đủ ý kiến của tất cả mọi người. Có giai đoạn, bên mình chỉ gặp gỡ leader, lấy requirements từ đó, xong đến lúc áp xuống cho team member bên dưới thì các bạn sử dụng khá khó khăn.
2. Phần mềm là để hỗ trợ cho công việc hàng ngày, nên quy trình làm việc hàng ngày cần được thống nhất, tránh để việc thay đổi nhân sự làm ảnh hưởng đến quy trình làm việc.
3. BA phải bám sát để hiểu bên nghiệp vụ, thậm chí phải ngồi cùng bên đó để xem họ đang xử lý công việc hiện tại như thế nào. Các bạn Sale thường là non-tech, nên phỏng vấn thường nói muốn A, nhưng thực chất là cần B, khi release thì là C thì họ mới dùng được. Cái này có thể gọi là cần đánh giá được nhu cầu sử dụng thực sự đến đâu.
"Every great developer you know got there by solving problems they were unqualified to solve until they actually did it." - Patrick McKenzie