Nội dung:

Phần I — Review QUIC protocol research paper.

Paper gốc tại đây

0. Kiến thức tiền đề

1. TL;DR — Ý tưởng xuyên suốt paper

Hiện nay, để nâng cao trải nghiệm người dùng, yêu cầu về giảm thiểu tối đa độ trễ trong các ứng dụng web ngày càng quan trọng, bên cạnh đó HTTP thông thường đang dần được thay thế bởi HTTPS. Tuy nhiên thiết kế của HTTPS lại không đáp ứng tốt những yêu…


Bài gốc trên Farnam Street tại đây.

Không ai có thể dạy bạn cách ra quyết định

Tôi bắt đầu làm việc tại một cơ quan tình báo vào ngày 28 tháng 8 năm 2001. Chỉ hai tuần sau, tôi nhận ra thế giới sẽ không bao giờ còn như trước nữa.

Bằng Khoa học Máy tính của tôi mất giá trị chỉ sau một vài lần được thăng chức. Tôi đến từ thế giới của những số 1 và 0, không phải về con người, các gia đình hay mối quan hệ giữa các cá nhân.

Chỉ mới vừa ra trường, tôi đã nhận ra rằng quyết định của…


Link sách https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321

“Công nghệ là một sức mạnh đầy quyền lực trong xã hội của chúng ta. Dữ liệu, phần mềm và thông tin có thể được sử dụng cho mục đích xấu: để cơ cấu quyền lực không công bằng, phá hoại quyền con người và bảo vệ các lợi ích [mà nó] được giao phó. Nhưng nó cũng có thể được sử dụng cho mục đích tốt: làm cho tiếng nói của những người yếu thế được nghe thấy, mang tới cơ hội cho tất cả mọi người và ngăn chặn những thảm họa. …


Chương 1 — Tính tin cậy, dễ mở rộng và bảo trì của ứng dụng.

“Internet đã được phát triển tốt đến mức hầu hết mọi người liên tưởng nó giống một nguồn tài nguyên thiên nhiên dồi dào như Thái Bình Dương, hơn là một thứ do con người tạo ra. Lần cuối có một công nghệ quy mô lớn tương tự mà không gặp phải lỗi là khi nào?”

— Alan Kay, trong buổi phỏng vấn với Dr Dobb’s Journal (2012)

Nhiều hệ thống ngày nay chuyên sâu về dữ liệu (data-intensive), trái ngược với chuyên sâu về tính toán (compute-intensive). Vấn đề của những ứng dụng ấy thường đến từ xử lý…


Link: https://storage.googleapis.com/pub-tools-public-publication-data/pdf/fa380016eccb33ac5e92c84f7b5eec136e73d3f1.pdf

TL;DR — Ý tưởng xuyên suốt paper

Google là một trong những công ty Internet lớn nhất hiện nay, vì vậy họ thường phải xử lý một lượng lớn dữ liệu được phân tán trên nhiều nơi trên thế giới. Để xử lý vấn đề đó, Google có nhiều nền tảng khác nhau để tập trung vào từng bài toán cụ thể của truy vấn dữ liệu. Ý tưởng F1 Engine được ra đời với tham vọng tập trung tất cả những phương pháp truy vấn dữ liệu lớn ấy vào chung một hệ thống duy nhất.

  • Là nền tảng độc lập (standalone) xử lý…


TCP là viết tắt của Transmission Control Protocol để chỉ ra rằng nó thực hiện kết nối kiểm soát việc truyền dữ liệu một cách đáng tin cậy. Nhưng nó vẫn có lỗ hổng cho hacker có thể lợi dụng tấn công từ chối dịch vụ với máy chủ (DoS — Denial-of-Service attack).

Trước khi bắt đầu, cùng tìm hiểu cơ chế 3-way handshake của TCP. Bình thường, một kết nối TCP được thể hiện quy trình 3 bước riêng biệt để tạo được sự kết nối như sau:

Bước 1: máy Client gửi 1 packet tin SYN đến Server…


Trước khi bắt đầu, cùng xét tới một bài toán khá cơ bản:

Cho tập S gồm n phần tử, kiểm tra 𝑥 có là phần tử của tập S (𝑥 ∈ S) hay không.

Bài toán trên tương đối đơn giản và dễ dàng cài đặt. Nhưng nếu như tập S là lớn (cho đến cực lớn) thì sao? Hoặc nói chung hơn, chi phí để duyệt được S là tốn kém, dẫn tới làm cho chi phí kiểm tra cũng là không hề nhỏ. Vậy làm sao để giảm thiểu chi phí này?

Vào năm 1970, Burton Howard…


Procedure to Lambda calculus

Trong lập trình có nhiều mô hình (programming paradigms) dùng để phân loại các ngôn ngữ dựa trên các đặc tính của chúng. Khi tuân theo hướng tiếp cận của một trong số chúng sẽ tác động đến cách ta tư duy về bài toán. Nổi bật trong đó là 2 mô hình Object Oriented và Functional, đại diện cho 2 tính chất Imperative và Declarative.


Trong cuộc sống có nhiều điều mà bạn không hề muốn nghe nhưng đôi khi vẫn buộc phải nghe, một trong số đó đối với tôi là câu “Cái này dễ mà, làm một tí là xong”. Thề có Chúa, tôi sẽ đấm ngay vào mặt gã nào nói câu ấy với tôi mà không trượt phát nào(*).

Hắn cần phải hiểu rằng, trên đời này đ̶é̶o̶ không có vấn đề nào đáng làm mà lại giải quyết dễ dàng cả. Nếu thứ gì dễ để đạt được thì nó sẽ có ít giá trị, và ngược lại, những thứ…


Đây là phần 2 trong loạt bài viết về quá trình chuyển đổi hệ thống của chúng tôi, trong trường hợp bạn chưa biết thì phần 1 nằm tại đây.

Disclaimer: This post is a “Wall of text”. Keep calm, plz.

Phần II: Biến mọi thứ trở nên rõ ràng

Như đã giới thiệu từ trước, kiến trúc khởi dựng của chúng tôi là một hệ thống MVC đơn khối (Monolithic). Tôi cho rằng lựa chọn này của những kỹ sư phát triển dự án khi đó là một quyết định đúng đắn. …

Nguyễn Thanh Tùng

Software Engineer @ Grab

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store