Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

ENGINEERS HATE SQL

Nguồn

https://www.facebook.com/khaitranq



Tui là dân database nên đương nhiên là thích SQL, nhưng mà phải ngậm ngùi chấp nhận là phần lớn kỹ sư phần mềm đều ghét SQL. Nói nhẹ nhàng thì chắc là do vấn đề mindsets, nặng hơn thì đó có thể coi là văn hoá, hay tôn giáo. Engineers thích mọi thứ phải theo cấu trúc rõ ràng, nên tự dưng đưa một đống text tự do, tự tại, không biết đúng sai thế nào như nào như mấy cái SQL queries vào trong code thì khó chịu là đương nhiên. Àh mà lại còn cái SQL injection gây ra bao nhiêu phiền phức nữa chứ.

Nhưng mà cứ rạch ròi như thế thì không thấy vẻ đẹp của SQL. SQL là declarative, tức là chỉ diễn tả mình muốn gì chứ không phải làm thế nào để đạt được điều đó. Vì thế nên nó đơn giản, tiện lợi, dễ dùng, dễ vận chuyển. Nên data scientists và data analysts thích dùng nó. Engineers thích code, còn data scientists/data analysts thích SQL. Đấy là văn hoá, là tôn giáo, cấm cãi.
Tui nhận ra cái văn hoá này từ hồi làm ở AWS Dynamo DB, sau đó là ở LinkedIn khi tương tác nhiều với application engineers (thực ra là backend engineers, tui gọi thế để tách biệt với tụi tui, infrastructure engineers).
Tuần trước có mấy cậu engineers bên Stripe sang chia sẻ về việc sử dụng Apache Spark ở cty họ. Một trong những slide họ nói là khi sử dụng Spark họ chỉ khuyến khích sử dụng Scala và hạn chế dùng SQL. Tui bắt bài ngay, hỏi có phải Spark users của bọn mày chủ yếu là engineers, ít data scientists và data analysts phải không? Trúng phóc ngay. Tui hỏi tiếp thế bọn mày đã thử upgrade từ Spark 2 qua Spark 3 chưa. Trả lời đang trong plan, sắp làm. Tui chỉ còn biết cười nham hiểm trong bụng, xin chia buồn về phần việc gian nan trước mắt khi chuyển từ Scala 2.11 qua 2.12 với nhiều thứ không tương thích. Nếu dùng SQL thì việc nâng cấp chỉ trong vòng một nốt nhạc.
Hôm nay lại ngồi chat với một cậu bên Netflix qua cái Slack group cho Spark OSS về SQL.
Tạm dừng chuyện SQL chút để nói về cái Apache Spark, thứ tui bắt đầu vày vò nó cụ thể khi qua Airbnb, thay vì chỉ ngồi đọc papers với architecture designs như trước đây. Việc đóng góp và sử dụng Spark được chia thành 2 nhóm: thứ nhất là Databricks, là bọn tạo ra Spark và giờ đang thương mại hoá nó (lưu ý là Databricks là công ty sắp IPO rất hot, được mong chờ là giống như một Snowflake thứ hai). Còn nhóm thứ 2 là nhóm các công ty thiên về tiêu dùng, sử dụng Spark cho mục đích riêng của mình và tiện thì đóng góp. Vì thế các Slack group này ra đời, hiện đã có tương đối đầy đủ các gương mặt: Stripe, LinkedIn, Airbnb, Uber, Lyft và Netflix.Tui nhận thấy các cty này đều đang có các bài toán giống nhau cần giải quyết: làm thế nào đề shuffle data cho hiệu quả, dùng Spark trên k8s, sử dụng Iceberg, hay nâng cấp Spark 2 lên Spark 3 để tận dụng Adaptive Query Execution...
Spark on Kubernetes, tui rất rất là thích ý tưởng này, vì nó thay thế được AWS EMR, cho đáng đời bọn Amazon tham lam chỉ ngồi ăn sẵn thành quả từ công sức lao động của người khác. Ông AWS này có truyền thống cứ lấy các phần mềm mã nguồn mở về rồi đem bán, không có đóng góp lại gì hết.
Quay lại việc chat chit với cậu bạn ở Netflix, tui đang tản mạn chém về chuyện nâng cấp Spark 2 sang 3 và dùng SQL thì dễ dàng thế nào thì cậu bức xúc bảo tao hôm nay vừa nói chuyện với bọn Stripe sáng nay và không thể tưởng tượng được bọn ngốc ấy lại hạn chế SQL. Há há, tao cũng nói chuyện với tụi nó về vấn đề này từ tuần trước rồi. Chưa thấy quan tài chưa đổ lệ. Hội move fast and break things như FB còn all in cho SQL, tức là bọn nó có leaders tốt, có tầm nhìn khi ra quyết định này.
SQL or not SQL, bọn kỹ sư thường cứng đầu lắm. Nhưng mà nó đã thành tôn giáo rồi, cấm cãi.

Đăng nhận xét

0 Nhận xét