Data as code
Photo by Lukas Blazek on Unsplash

Trong vài năm qua, việc quản lý dữ liệu đã chuyển từ việc điều chỉnh khối lượng sang tạo ra sự linh hoạt. Mặc dù chúng ta sẽ không bao giờ thực sự rời khỏi Kỷ nguyên Dữ liệu lớn – “Dữ liệu lớn” giờ chỉ đơn thuần là dữ liệu. Sự phát triển của các dịch vụ đám mây và cơ sở hạ tầng như Kubernetes đã thay đổi câu hỏi trọng tâm xung quanh dữ liệu từ “Chúng ta làm gì với tất cả những thứ này?” để “Chúng ta sử dụng nó như thế nào?”

Trong thế giới đám mây với rất nhiều microservice hiện tại, chúng ta đang phát triển và triển khai các ứng dụng phân tán trong các vùng chứa (containers), mỗi ứng dụng có kho dữ liệu riêng. Dữ liệu vẫn “lớn” nhưng nó cũng phải linh hoạt. Giống như code tạo ra các ứng dụng, dữ liệu phải có thể được sử dụng trên các môi trường khác nhau, có thể chia sẻ và có thể thay đổi được.

Và chúng ta cần một kỷ nguyên mới của Dữ liệu: Data as Code.

Data as Code là gì?

Data as Code là một cách tiếp cận cung cấp cho các nhóm đối tượng khác nhau, từ DevOps đến DataOps, Nhà khoa học dữ liệu và hơn thế nữa, khả năng xử lý, quản lý, sử dụng và chia sẻ dữ liệu giống như cách chúng ta làm đối với code trong quá trình phát triển phần mềm. Nó cho phép người dùng cuối kiểm soát dữ liệu của họ để tăng tốc độ lặp lại và tăng cường cộng tác.

Cuộc cách mạng DevOps đã trao quyền cho các nhà phát triển và gây ra “sự chuyển hướng sang trái” (shift left) tập trung vào tăng tốc và ngăn ngừa sự cố trong khi phát triển một thế hệ công cụ mới như GitHub, Jenkins, CircleCI, Gerrit và Gradle cho phép người dùng cuối gửi phần mềm. Chúng ta có công cụ so sánh nào cho dữ liệu? Chúng ta có những quy trình nâng cao nào?

Hãy nghĩ về người dùng cuối trong mỗi tình huống. Khi một ứng dụng cần được triển khai, DevOps Engineer chỉ cần triển khai nó thông qua các đường ống tự động. Khi họ cần cung cấp dung lượng lưu trữ, họ yêu cầu lập trình nó từ nhà cung cấp đám mây và đính kèm vào ứng dụng của họ. Khi họ cần để lộ quyền truy cập ứng dụng trên toàn mạng, họ tạo một điểm cuối dịch vụ và gọi một cổng nhập.

Nhưng điều gì sẽ xảy ra khi một nhà phát triển hoặc chủ sở hữu ứng dụng cần dữ liệu? Nhà phát triển yêu cầu nhóm DataOps hoặc chủ sở hữu ứng dụng lưu trữ cung cấp dữ liệu. Điều gì xảy ra khi họ cần chia sẻ dữ liệu đó với đồng nghiệp hoặc di chuyển dữ liệu đó giữa các đám mây? Họ chờ các kỹ sư DevOps giúp họ. Điều gì sẽ xảy ra khi họ muốn đồng bộ hóa bộ dữ liệu của mình qua các vòng đời? Họ chờ các kỹ sư DevOps giúp họ.

Các quy trình này chủ yếu là thủ công, khóa toàn bộ quy trình công việc vào một chu trình yêu cầu và chờ đợi đã lỗi thời. Giống như một dây chuyền sản xuất tại nhà máy, những quy trình thủ công này chỉ hoạt động nếu mọi người đều có mặt. Nếu thiếu một liên kết trong chuỗi, các yêu cầu sẽ gặp khó khăn trong quá trình chờ đợi.

Bằng cách sử dụng cách tiếp cận Data as Code, các công ty có thể quản lý dữ liệu theo chương trình, thiết lập các đường dẫn tích hợp và triển khai liên tục tự động cho dữ liệu, thêm khả năng phiên bản, đóng gói, sao chép, phân nhánh, khác biệt và hợp nhất dữ liệu, đồng thời làm cho dữ liệu đó cộng tác trên các đám mây khác nhau và không gian làm việc – giống như cách họ làm với code và triển khai của chúng.

Pipelines không chỉ dành cho Code

Có lẽ không ai cảm thấy nỗi đau của quy trình làm việc dữ liệu lỗi thời hơn các nhà khoa học dữ liệu. Không có ứng dụng nào khác phụ thuộc vào dữ liệu như máy học và trí tuệ nhân tạo, nhưng những người tạo ra các ứng dụng đó đang gặp khó khăn khi sử dụng các quy trình lỗi thời. Ngày nay, khi các nhà khoa học dữ liệu xây dựng và đào tạo mô hình, họ chia sẻ dữ liệu mới với các đồng nghiệp học máy (machine learning) của mình và bắt đầu lặp lại quá trình phát triển mô hình của họ trong các công cụ như Jupyter Notebook, Visual Studio Code hoặc R Studio. Các mô hình đó được tinh chỉnh và thay đổi, tất cả đều sử dụng các bản sao của cùng một dữ liệu. Luôn luôn, dữ liệu cần được sửa đổi hoặc một phiên bản cập nhật cần được yêu cầu từ nhóm ứng dụng.

Khi điều đó xảy ra, các nhóm khoa học dữ liệu phải theo dõi thủ công quá trình thử nghiệm mô hình dựa trên cả mô hình và phiên bản dữ liệu, đồng thời đào tạo các mô hình cập nhật dựa trên toàn bộ tập dữ liệu từ đầu. Đó là một sự lãng phí rất lớn về thời gian và tài nguyên.

Thay vào đó, điều gì sẽ xảy ra nếu họ có thể xây dựng, đào tạo và điều chỉnh các mô hình của mình và thúc đẩy chúng triển khai, được đóng gói hoàn chỉnh để các nhóm kỹ sư DevOps và MLOps có thể phát hành thông qua các đường ống CI / CD (CI/CD pipelines) quen thuộc?

Chúng ta cần sự thay đổi này trong phương trình dữ liệu. Data as Code cung cấp cho các nhà khoa học dữ liệu và kỹ sư học máy khả năng quản lý dữ liệu trên bất kỳ đám mây nào, cộng tác trên các nhánh của tập dữ liệu đã được phiên bản hóa và liên tục đào tạo lại mô hình của họ bằng cách hợp nhất các tập hợp khác biệt khi họ thu thập nhiều đầu vào hơn, giống như DevOps đã làm cho phát triển phần mềm.

CI/CD pipelines không chỉ dành cho code. Photo: softobiz.com

Dữ liệu được dân chủ hóa có nghĩa là mọi thứ tốt hơn

Năm 2002, Jeff Bezos đã gửi một email toàn công ty Amazon, được gọi là “Ủy nhiệm API của Bezos (Bezos API Mandate)”. Nó định hướng rằng mọi nhóm trong công ty tương tác với nhau thông qua các giao diện qua mạng – mọi phần dữ liệu, mọi chức năng, bất kể điều gì. Đó là một lời kêu gọi tổ chức công ty xung quanh việc hoàn thành mọi việc, thoát khỏi sự trì trệ của tâm lý yêu cầu và chờ đợi.

Việc phát triển phần mềm đã trải qua một sự tính toán tương tự trong thập kỷ qua do cuộc cách mạng DevOps. Bây giờ, với sự bắt đầu của Kỷ nguyên data as code – dữ liệu dưới dạng mã – đã đến lúc làm điều tương tự đối với việc quản lý dữ liệu. Kỹ sư DevOps và Kỹ sư độ tin cậy của trang web (Site Reliability Engineers) không còn dựa vào quy trình làm việc dựa trên ITIL theo kiểu yêu cầu và chờ đợi cho các quản trị viên cơ sở hạ tầng thì không có lý do gì chúng ta không thể làm như vậy đối với những người làm việc hàng ngày với dữ liệu.

Một tổ chức nơi quyền truy cập dữ liệu được dân chủ hóa – nơi mọi người đều có quyền truy cập an toàn vào dữ liệu có thể chia sẻ bất cứ khi nào họ cần – là một tổ chức nơi các quyết định quan trọng được đưa ra nhanh hơn và thông minh hơn. Đó là một tổ chức nơi các sản phẩm được vận chuyển thường xuyên hơn với chi phí thấp hơn và chất lượng cao hơn và nơi mọi người làm việc trên các sản phẩm đó được trao quyền để trở thành người giỏi nhất trong những gì họ làm.

Đây là lời hứa của thời đại Data as Code.

Data as Code – Dữ liệu dưới dạng Mã – sẽ yêu cầu một sự sắp xếp lại hoàn toàn mang tính triết học trong cách tiếp cận quản lý dữ liệu của chúng ta. Chúng ta sẽ phải loại bỏ rất nhiều quy trình và thực tiễn hiện tại để định hướng lại chúng xung quanh dữ liệu thực sự linh hoạt, nhưng chúng ta có sẵn cơ sở hạ tầng để thực hiện điều này. Kubernetes nói riêng đã mở khóa các con đường làm cho Data as Code trở nên khả thi. Đó là tương lai của con tàu điều khiển ứng dụng và sẽ là nền tảng cho các công nghệ sẽ tạo ra con tàu điều khiển dữ liệu trong tương lai.

Chúng tađã trải qua một sự thay đổi triệt để về cách tạo ra các ứng dụng. Đã đến lúc cho một sự thay đổi triệt để khác trong cách các ứng dụng đượ cung cấp dữ liệu.

Theo https://thenewstack.io/the-coming-era-of-data-as-code/

Đánh giá bài viết

Average rating 5 / 5. Vote count: 6

No votes so far! Be the first to rate this post.

Comments are closed.