#268 - Khi nào việc viết code là hạnh phúc nhất?
Câu trả lời của tôi rất đơn giản: trước khi sản phẩm có người dùng
Trong lúc dạo trên mạng tìm các bài viết hay để soạn Grokking Newsletter kỳ này, tôi tình cờ đọc được một đoạn khá là hài mà tôi muốn chia sẻ cùng mọi người:
Programmers often ask: “When is coding the happiest?”
My answer is simple: before the product has users.
Before customers show up, you can just write code. No angry calls, no urgent tickets, no midnight firefights. Pure joy.
But products are for users. That happy time can’t last forever.
Tôi thấy nó hài vì nó khá là phù hợp với những gì tôi đã trải nghiệm những năm qua khi làm các dự án trong công ty. Một nỗi niềm mà tôi nghĩ những bạn coder khác có thể đều đã trải qua một lần.
— CuriousTien —
Ten Years, Starting Again: My Journey with TiDB
Bài viết này nói về hành trình của Liu Tang trong suốt 10 năm làm việc ở TiDB từ ngày dự án được sáng lập. Nhìn lại chặng đường đã qua, tác giả đã có gặp nhiều bất ngờ và thử thách để mà trưởng thành hơn trong con đường sự nghiệp của họ từ một người coder.
Từ tin nhắn Cá Tháng Tư của Max, người thành lập TiDB, cho đến ngày hôm nay khi mà TiDB trở thành một cơ sở dữ liệu phân tán mã nguồn mở được biết đến toàn cầu. Từ việc chạy theo sự hoàn hảo về kỹ thuật đến việc đặt thành công của khách hàng như cốt lõi. Từ một ước mơ khởi nghiệp đơn giản đến một sản phẩm mang tầm vóc toàn cầu trong kỷ nguyên điện toán đám mây. Hành trình này đã mang lại cho tác giả nhiều hơn những gì mà tác giả có thể tưởng tượng.
Mặc dù bài viết này được viết và thông dịch qua từ lời tác giả bằng ChatGPT-5, những trải nghiệm và phân tích của tác giả trong các tình huống và quyết định của TiDB để có được như ngày hôm nay khá là đáng suy nghĩ.
Apache Iceberg: An Architectural Look Under the Covers
Bài viết này của Dremio nói về Apache Iceberg và kiến trúc của định dạng bảng (table format) này như thế nào. Bài viết mở đầu nói về những giới hạn của định dạng bảng truyền thống như Hive table format và lý do tại sao Iceberg table format được ra đời.
Apache Iceberg được giới thiệu như một định dạng bảng mới, tối ưu cho môi trường data lake lớn, với kiến trúc gồm 3 phần chính là: catalog, metadata (gồm manifest và snapshot) và data. Phần catalog lưu trữ snapshot metadata hiện tại, còn phần metadata thì lưu trữ manifest list và manifest file để theo dõi data file của phần data. Khi thực hiện các thao tác như tạo bảng, ghi (insert), cập nhật (merge/upsert), hoặc truy vấn (select), Iceberg sẽ quản lý các snapshot này một cách atomic, đảm bảo tính nhất quán và khả năng mở rộng, đồng thời hỗ trợ tính năng partition ẩn (hidden partitioning) giúp truy vấn hiệu quả hơn.
Trong bài viết, tác giả cũng nêu rõ hơn những phần này hoạt động như thế nào, và uy điểm nhược điểm của định dạng bảng mới này so với các công nghệ cũ.
Introducing Zelos: A ZooKeeper API leveraging Delos
Meta trước đây chủ yếu dùng Apache ZooKeeper để quản lý các primitives phân tán như khóa (locks), semaphore, … Tuy nhiên, khi quy mô tăng lên, ZooKeeper ngày càng khó mở rộng và chỉnh sửa, đa phần là do cách Zookeeper tích hợp chặt chẽ giữa logic giao thức đồng thuận và logic ứng dụng. Điều này dẫn đến việc Meta quyết định tạo ra một phiên bản mô-đun, linh hoạt và hiệu suất cao hơn: Zelos, xây dựng lại API ZooKeeper trên nền tảng Delos nội bộ.
Bài viết này nói về cách Meta xây dựng hệ thống này và cách họ migrate từ ZooKeeper sang Zelos như thế nào để không gây downtime cho client nhiều nhất có thể. Đồng thời, tác giả cũng nêu lên những thử thách trong việc xây dựng Zelos để thay thế ZooKeeper hoàn toàn trong Meta như thế nào.


