[ad_1]
Gần đây, tôi could mắn được nói chuyện với một số kỹ sư dữ liệu và kiến trúc sư dữ liệu về các vấn đề họ gặp phải với dữ liệu trong doanh nghiệp của mình. Những điểm khó khăn chính mà tôi nghe đi nghe lại là:
- Không biết tại sao một cái gì đó bị hỏng
- Bị đốt cháy với chi phí điện toán đám mây cao
- Mất quá nhiều thời gian để xây dựng các giải pháp dữ liệu/hoàn thành các dự án dữ liệu
- Cần chuyên môn về nhiều công cụ và công nghệ
Những vấn đề này không phải là mới. Tôi đã trải nghiệm chúng, bạn có thể đã trải nghiệm chúng. Tuy nhiên, chúng ta dường như không thể tìm ra giải pháp giải quyết tất cả những vấn đề này trong thời gian dài. Bạn có thể tự nghĩ, ‘vâng, điểm một có thể được giải quyết bằng {chèn công cụ quan sát dữ liệu}’, hoặc ‘điểm hai chỉ cần một kế hoạch quản trị dữ liệu chặt chẽ hơn’. Vấn đề với kiểu giải pháp này là chúng thêm các lớp phức tạp bổ sung, khiến hai điểm khó khăn cuối cùng trở nên nghiêm trọng hơn. Tổng số điểm khó khăn vẫn giữ nguyên, chỉ có sự phân bổ khác nhau giữa bốn điểm.
Bài viết này nhằm mục đích trình bày một phong cách giải quyết vấn đề ngược lại: sự đơn giản triệt để.
Tóm lại
- Các kỹ sư phần mềm đã đạt được thành công to lớn khi áp dụng sự đơn giản.
- Việc thiết kế quá mức và theo đuổi sự hoàn hảo có thể dẫn đến hệ thống dữ liệu cồng kềnh, chậm phát triển, gây tốn kém cho doanh nghiệp.
- Các nhóm dữ liệu nên cân nhắc hy sinh một số chức năng để có được sự đơn giản và tốc độ.
Bài học từ những anh chàng phần mềm
Năm 1989, nhà khoa học máy tính Richard P. Gabriel đã viết một bài luận khá nổi tiếng về hệ thống máy tính có tên gọi nghịch lý là ‘Tệ hơn là Tốt hơn’. Tôi sẽ không đi sâu vào chi tiết, bạn có thể đọc bài luận đây nếu bạn thích, nhưng thông điệp cơ bản là chất lượng phần mềm không nhất thiết cải thiện khi chức năng tăng lên. Nói cách khác, đôi khi, bạn có thể hy sinh tính hoàn chỉnh để đổi lấy sự đơn giản và kết thúc bằng một sản phẩm ‘tốt hơn’ vốn có vì điều đó.
Đây là một ý tưởng kỳ lạ đối với những người tiên phong trong lĩnh vực máy tính trong những năm 1950/60. Triết lý của thời đó là: một hệ thống máy tính cần phải tinh khiết, và nó chỉ có thể tinh khiết nếu nó tính đến tất cả các tình huống có thể xảy ra. Điều này có thể là do thực tế là hầu hết các nhà khoa học máy tính hàng đầu vào thời điểm đó đều là học giả, những người rất muốn coi khoa học máy tính là một khoa học cứng.
Các học giả tại MIT, tổ chức hàng đầu về máy tính vào thời điểm đó, đã bắt đầu nghiên cứu hệ điều hành cho thế hệ máy tính tiếp theo, được gọi là Đa sắc. Sau gần một thập kỷ phát triển và hàng triệu đô la đầu tư, các chàng trai MIT đã phát hành hệ thống mới của họ. Đây chắc chắn là hệ điều hành tiên tiến nhất thời bấy giờ, tuy nhiên, việc cài đặt rất khó khăn do yêu cầu về máy tính và các bản cập nhật tính năng chậm do kích thước của cơ sở mã. Kết quả là, nó không bao giờ được sử dụng ngoài một số trường đại học và ngành công nghiệp được chọn.
Trong khi Multics đang được xây dựng, một nhóm nhỏ hỗ trợ phát triển Multics đã trở nên thất vọng với các yêu cầu ngày càng tăng đối với hệ thống. Cuối cùng, họ quyết định tách khỏi dự án. Được trang bị kinh nghiệm này, họ đặt mục tiêu tạo ra hệ điều hành riêng của mình, một hệ điều hành có sự thay đổi triết lý cơ bản:
Thiết kế phải đơn giản, cả về triển khai và giao diện. Triển khai quan trọng hơn giao diện. Sự đơn giản là yếu tố quan trọng nhất cần cân nhắc trong thiết kế.
— Richard P. Gabriel
Năm năm sau khi Multics được phát hành, nhóm ly khai đã phát hành hệ điều hành của họ, Unix. Chậm nhưng chắc chắn, nó đã thu hút được sự chú ý và đến những năm 1990, Unix đã trở thành sự lựa chọn hàng đầu cho máy tính, với hơn 90% trong số 500 siêu máy tính nhanh nhất thế giới sử dụng nó. Cho đến ngày nay, Unix vẫn được sử dụng rộng rãi, đáng chú ý nhất là hệ thống nền tảng macOS.
Rõ ràng là có những yếu tố khác ngoài tính đơn giản của nó dẫn đến thành công của Unix. Nhưng thiết kế nhẹ của nó đã và vẫn là một tài sản vô cùng giá trị của hệ thống. Điều đó chỉ có thể xảy ra vì các nhà thiết kế sẵn sàng hy sinh chức năng. Ngành công nghiệp dữ liệu không nên sợ suy nghĩ theo cách tương tự.
Quay lại Dữ liệu trong thế kỷ 21
Nghĩ lại về những trải nghiệm của riêng mình, triết lý của hầu hết các dự án kỹ thuật dữ liệu lớn mà tôi đã làm việc đều tương tự như Multics. Ví dụ, có một dự án mà chúng tôi cần tự động chuẩn hóa dữ liệu thô đến từ tất cả các khách hàng của mình. Quyết định được đưa ra là thực hiện việc này trong kho dữ liệu thông qua dbt, vì khi đó chúng tôi có thể có cái nhìn đầy đủ về dòng dõi dữ liệu từ các tệp thô nhất cho đến phiên bản bảng đơn được chuẩn hóa và hơn thế nữa. Vấn đề là giai đoạn chuyển đổi đầu tiên rất thủ công, nó yêu cầu tải từng tệp khách hàng thô riêng lẻ vào kho, sau đó dbt tạo một mô hình để dọn dẹp tệp của từng khách hàng. Điều này dẫn đến hàng trăm mô hình dbt cần được tạo, tất cả đều sử dụng về cơ bản cùng một logic. Dbt trở nên quá phình to đến nỗi mất nhiều phút để tải biểu đồ dòng dõi dữ liệu trong trang net tài liệu dbt và GitHub Actions for CI của chúng tôi (hội nhập liên tục) mất hơn một giờ để hoàn thành cho mỗi yêu cầu kéo.
Vấn đề này có thể được giải quyết khá đơn giản nếu ban lãnh đạo cho phép chúng tôi thực hiện lớp chuyển đổi đầu tiên bên ngoài kho dữ liệu, bằng cách sử dụng AWS Lambda và Python. Nhưng không, điều đó có nghĩa là dòng dữ liệu do dbt tạo ra sẽ không hoàn thiện 100%. Chỉ có vậy thôi. Đó là toàn bộ lý do để không đơn giản hóa dự án một cách ồ ạt. Tương tự như nhóm đã tách khỏi dự án Multics, tôi đã rời dự án này giữa chừng, thật là quá bực bội khi phải làm việc trên một thứ rõ ràng có thể đơn giản hơn nhiều. Khi tôi viết những dòng này, tôi phát hiện ra rằng họ vẫn đang làm việc trên dự án.
Vậy, sự đơn giản triệt để là gì?
Sự đơn giản triệt để trong kỹ thuật dữ liệu không phải là một khuôn khổ hay bộ công cụ ngăn xếp dữ liệu, mà chỉ đơn giản là một trạng thái tinh thần. Một triết lý ưu tiên các giải pháp đơn giản, dễ hiểu hơn là các hệ thống phức tạp, bao trùm tất cả.
Các nguyên tắc chính của triết lý này bao gồm:
- Chủ nghĩa tối giản: Tập trung vào các chức năng cốt lõi mang lại giá trị cao nhất, thay vì cố gắng đáp ứng mọi tình huống hoặc yêu cầu có thể xảy ra.
- Chấp nhận đánh đổi: Sẵn sàng hy sinh một số mức độ hoàn thiện hoặc hoàn hảo để đổi lấy sự đơn giản, tốc độ và dễ bảo trì.
- Chủ nghĩa thực dụng hơn chủ nghĩa lý tưởng: Ưu tiên các giải pháp thực tế, khả thi để giải quyết hiệu quả các vấn đề kinh doanh thực tế, thay vì theo đuổi các hệ thống hoàn hảo về mặt lý thuyết nhưng quá phức tạp.
- Giảm tải nhận thức: Thiết kế các hệ thống và quy trình dễ hiểu, dễ triển khai và dễ bảo trì hơn, do đó giảm bớt chuyên môn cần thiết trên nhiều công cụ và công nghệ.
- Hiệu quả về chi phí: Áp dụng các giải pháp đơn giản hơn, thường đòi hỏi ít tài nguyên tính toán và nguồn nhân lực hơn, dẫn đến tổng chi phí thấp hơn.
- Tính linh hoạt và khả năng thích ứng: Tạo ra các hệ thống dễ sửa đổi và phát triển khi nhu cầu kinh doanh thay đổi, thay vì các giải pháp cứng nhắc, quá phức tạp.
- Tập trung vào kết quả: Nhấn mạnh vào kết quả cuối cùng và giá trị kinh doanh thay vì bị cuốn vào sự phức tạp của chính quá trình dữ liệu.
Tư duy này có thể trái ngược trực tiếp với các giải pháp kỹ thuật dữ liệu hiện đại về việc thêm nhiều công cụ, quy trình và lớp hơn. Do đó, bạn phải đấu tranh cho lập trường của mình. Trước khi đề xuất một giải pháp thay thế, đơn giản hơn, hãy chuẩn bị sẵn sàng với sự hiểu biết sâu sắc về vấn đề đang gặp phải. Tôi nhớ đến câu trích dẫn sau:
Phải mất rất nhiều công sức để làm cho một cái gì đó trở nên đơn giản, để thực sự hiểu được những thách thức tiềm ẩn và đưa ra những giải pháp thanh lịch. (…) Không chỉ là chủ nghĩa tối giản hay sự vắng mặt của sự lộn xộn. Nó liên quan đến việc đào sâu vào chiều sâu của sự phức tạp. Để thực sự đơn giản, bạn phải đi thật sâu. (…) Bạn phải hiểu sâu sắc bản chất của một sản phẩm để có thể loại bỏ những phần không cần thiết.
— Steve Jobs
Lưu ý: Hãy lưu ý rằng việc áp dụng sự đơn giản triệt để không có nghĩa là bỏ qua các công cụ mới và công nghệ tiên tiến. Trên thực tế, một trong những giải pháp yêu thích của tôi cho kho dữ liệu hiện tại là sử dụng cơ sở dữ liệu nguồn mở mới có tên là vịtDB. Hãy xem thử, nó khá thú vị.
Phần kết luận
Những bài học từ lịch sử kỹ thuật phần mềm cung cấp những hiểu biết có giá trị cho bối cảnh dữ liệu ngày nay. Bằng cách áp dụng sự đơn giản triệt để, các nhóm dữ liệu có thể giải quyết nhiều điểm khó khăn trong các giải pháp dữ liệu hiện đại.
Đừng ngại ủng hộ sự đơn giản triệt để trong nhóm dữ liệu của bạn. Hãy là chất xúc tác cho sự thay đổi nếu bạn thấy cơ hội để hợp lý hóa và đơn giản hóa. Con đường đến sự đơn giản không dễ dàng, nhưng phần thưởng tiềm năng có thể rất lớn.
[ad_2]
Source link