Các tác nhân AI tạo mã đang thúc đẩy nhanh chóng lĩnh vực kỹ thuật dữ liệu bằng cách tạo ra các chuyển đổi, đường ống dữ liệu, quy trình điều phối, kiểm thử xác thực và cấu hình hạ tầng từ các câu lệnh. Tuy nhiên, các nền tảng dữ liệu doanh nghiệp từ lâu đã hoạt động trên các hệ thống phân mảnh, thuộc sở hữu của các nhóm khác nhau và được xây dựng trên các công nghệ riêng biệt. Khi các hệ thống này phát triển độc lập, các tổ chức ngày càng gặp khó khăn với logic kinh doanh không nhất quán, triển khai trùng lặp, phân tích tác động xuôi dòng phức tạp và các phụ thuộc ẩn trên toàn nền tảng.
Sự trỗi dậy của "lập trình vibe" (vibe coding) có thể làm trầm trọng thêm các vấn đề này, khi nhiều ngữ cảnh vận hành, quyết định kiến trúc và tri thức kinh doanh bị phân tán qua các câu lệnh, hội thoại, mã được tạo và các quy trình làm việc không liên kết, thay vì trở thành một phần của hệ thống.
Phát triển Hướng Đặc tả (Spec-driven Development - SDD) đang nổi lên như một cách tiếp cận để giải quyết thách thức này. Trong SDD, các câu lệnh, quy tắc kinh doanh, logic xác thực, hành vi điều phối và quy trình triển khai được chuyển đổi thành các đặc tả có thể thực thi và được kiểm soát phiên bản, trở thành một phần của chính hệ thống. Các đặc tả này đóng vai trò là bộ nhớ vận hành bền vững cho cả con người và tác nhân AI, cho phép các hệ thống phát triển nhất quán hơn qua các bản phát hành, đội nhóm và quy trình làm việc có sự hỗ trợ của AI.
Do kỹ thuật dữ liệu doanh nghiệp đã dựa nhiều vào các mẫu có thể tái sử dụng, đường ống dữ liệu dựa trên siêu dữ liệu và quy trình vận hành tiêu chuẩn hóa, nên nó đặc biệt phù hợp với SDD. Bằng cách kết hợp khả năng tạo mã do AI hỗ trợ với các hợp đồng hệ thống xác định và có thể tái sử dụng, SDD có thể cung cấp một lớp vận hành mới để giảm sự phân mảnh và cải thiện sự phối hợp dài hạn trên các nền tảng dữ liệu ngày càng được tạo bằng AI.
Lập Trình "Vibe" Thiếu Bộ Nhớ Hệ Thống Bền Vững 💔
Lập trình "vibe" hoạt động cực kỳ hiệu quả để tạo ra các triển khai độc lập một cách nhanh chóng. Nhưng các câu lệnh (prompts) vốn dĩ chỉ là tạm thời. Chúng chỉ ghi lại các giả định của kỹ sư, ngữ cảnh kinh doanh, logic triển khai và tri thức hệ thống cho cuộc hội thoại và thời điểm cụ thể đó.
Trên thực tế, để các hệ thống do AI tạo ra hoạt động thường đòi hỏi nhiều hơn một câu lệnh đơn giản. Các kỹ sư liên tục cung cấp thông tin nền, quyết định kiến trúc, quy tắc kinh doanh, giả định về lược đồ, phụ thuộc xuôi dòng, ràng buộc vận hành, lịch sử gỡ lỗi và hướng dẫn triển khai trong suốt quá trình phát triển. Những ngữ cảnh này trở thành tri thức vận hành thực sự đằng sau sự phát triển có hỗ trợ của AI.
Tuy nhiên, trong hầu hết các quy trình làm việc của lập trình "vibe", thông tin này vẫn nằm rải rác trong các câu lệnh, cuộc hội thoại, Jira tickets, tài liệu, lịch sử trò chuyện, mã được tạo và các quy trình làm việc không liên kết, thay vì trở thành một phần của chính hệ thống.
Điều này tạo ra một vấn đề lớn cho kỹ thuật dữ liệu doanh nghiệp vì các nền tảng dữ liệu hiện đại vốn dĩ bị phân mảnh trên nhiều hệ thống liên kết, bao gồm các đường ống nhập liệu (ingestion pipelines), kho dữ liệu (warehouses), khung điều phối (orchestration frameworks), các lớp ngữ nghĩa (semantic layers), API, bảng điều khiển (dashboards) và hệ thống học máy (ML). Khi càng nhiều logic và ngữ cảnh được nhúng vào các câu lệnh và triển khai được tạo ra, các tổ chức dần mất khả năng hiển thị về: * Mục đích kiến trúc * Các phụ thuộc xuôi dòng * Các giả định xác thực * Hành vi vận hành * Ngữ cảnh kinh doanh đằng sau các triển khai
Theo thời gian, bản thân hệ thống không còn chứa đựng đầy đủ lý do đằng sau cách nó được xây dựng. Ngữ cảnh kinh doanh quan trọng, các giả định kiến trúc và tri thức vận hành vẫn tồn tại phần lớn trong phán đoán của con người và các cuộc hội thoại rải rác, chứ không phải trong chính nền tảng.
Lập trình "vibe" giúp triển khai nhanh hơn đáng kể, nhưng từ góc độ hệ thống, hiệu suất kỹ thuật tổng thể không cải thiện tương xứng vì phần lớn vòng đời phát triển vẫn phụ thuộc vào xác thực của con người, tri thức miền, phối hợp và ra quyết định.
Quan trọng hơn, các câu lệnh không phải là các tạo phẩm kỹ thuật có thể lặp lại một cách tự nhiên. Các hệ thống doanh nghiệp liên tục phát triển qua các bản phát hành, thay đổi lược đồ, cập nhật logic kinh doanh và phụ thuộc xuôi dòng. Các đội nhóm thường xuyên xem xét và tinh chỉnh hệ thống theo thời gian, nhưng các câu lệnh được tối ưu hóa cho việc tạo ra cục bộ nhanh chóng chứ không phải sự phát triển hệ thống dài hạn. Chúng khó để: * Kiểm soát phiên bản nhất quán * Xác thực một cách có hệ thống * Tái sử dụng giữa các đội nhóm * Phối hợp thông qua quy trình CI/CD * Phát triển tăng dần theo thời gian
Ngay cả cùng một câu lệnh cũng có thể không đáng tin cậy khi tạo ra cùng một triển khai với ngữ cảnh khác trong tương lai.
Đây là nơi SDD bắt đầu trở thành trung tâm của kỹ thuật dữ liệu có hỗ trợ AI. Thay vì để tri thức vận hành nằm rải rác trong các câu lệnh và cuộc hội thoại, SDD tích hợp ngữ cảnh kinh doanh, logic xác thực, hành vi chuyển đổi, yêu cầu điều phối và quy trình triển khai trực tiếp vào các đặc tả có thể thực thi, trở thành một phần của chính hệ thống.
Hệ thống giờ đây có bộ nhớ bền vững về cách nó được thiết kế, tại sao một số quyết định được đưa ra và cách các thành phần khác nhau được kết nối trên toàn nền tảng. Điều này cho phép các đội nhóm và tác nhân AI lặp lại các hệ thống đáng tin cậy hơn theo thời gian, đồng thời giảm sự phân mảnh trong các môi trường dữ liệu ngày càng phân tán.
Phát Triển Hướng Đặc Tả (SDD) Biến Câu Lệnh Thành Bộ Nhớ Hệ Thống 🧠✨
Trong SDD, các hệ thống được xây dựng xung quanh các đặc tả có thể thực thi chứ không chỉ dựa vào các câu lệnh và triển khai phối hợp lỏng lẻo. Thay vì coi các đặc tả như tài liệu thụ động được viết sau khi phát triển, SDD coi chúng là các "hợp đồng" vận hành trực tiếp thúc đẩy quá trình tạo mã, xác thực, kiểm thử, điều phối và các quy trình triển khai.
Theo nhiều cách, SDD mở rộng ý tưởng từ Cơ sở hạ tầng dưới dạng Mã (Infrastructure-as-Code) và GitOps vào kỹ thuật có hỗ trợ AI. Các đặc tả kết hợp các định nghĩa hệ thống khai báo (declarative system definitions) với các quy trình triển khai có thể thực thi. Lớp khai báo cung cấp ngữ cảnh hệ thống, lược đồ, phụ thuộc, ràng buộc và yêu cầu vận hành, trong khi các hướng dẫn định hướng quy trình làm việc hướng dẫn các tác nhân AI cách triển khai và phát triển hệ thống một cách nhất quán.
Khi các ngữ cảnh, quy tắc và mẫu triển khai này được chuyển đổi thành các "hợp đồng" bền vững và được kiểm soát phiên bản, được lưu trữ trong các kho lưu trữ và tích hợp vào các quy trình CI/CD, hệ thống trở nên có khả năng lặp lại và quản lý tốt hơn đáng kể theo thời gian. Các đặc tả này thực sự trở thành bộ nhớ hệ thống dài hạn cho cả con người và tác nhân AI, cho phép các hệ thống phát triển nhất quán qua các bản phát hành, đội nhóm và các quy trình phát triển ngày càng được hỗ trợ bởi AI.
Trên thực tế, cấu trúc của các đặc tả phần lớn phụ thuộc vào loại hệ thống và quy trình làm việc đang được triển khai. Tuy nhiên, các hệ thống hướng đặc tả thường bắt đầu với một "hiến pháp" nền tảng định nghĩa các nguyên tắc và ràng buộc chung cho toàn dự án cần được duy trì nhất quán trên toàn nền tảng, chẳng hạn như tiêu chuẩn công nghệ, quy ước đặt tên, quy tắc kiến trúc, chính sách quản trị và yêu cầu hệ thống cốt lõi. Trên nền tảng này, nhiều lớp đặc tả phục vụ các mục đích vận hành khác nhau trong suốt vòng đời phát triển: * Đặc tả lược đồ (schema specifications) định nghĩa khả năng tương thích cấu trúc. * Đặc tả chuyển đổi (transformation specifications) định nghĩa logic nghiệp vụ. * Đặc tả xác thực (validation specifications) định nghĩa quy tắc chất lượng. * Đặc tả điều phối (orchestration specifications) định nghĩa hành vi thực thi. * Đặc tả ngữ nghĩa (semantic specifications) định nghĩa các định nghĩa nghiệp vụ dùng chung. * Đặc tả quy trình làm việc AI (AI workflow specifications) định nghĩa các hướng dẫn triển khai có thể tái sử dụng cho các tác nhân tạo mã.
Một đặc tả đơn giản có thể trông như thế này: yaml pipeline_spec: source: system: mysql table: order transformation: logic: - load_strategy: scd2 target: platform: snowflake table: dim_order validation: primary_key: order_id
Các tệp quy trình làm việc bổ sung sau đó có thể cung cấp hướng dẫn triển khai có thể tái sử dụng cho các tác nhân tạo mã: 1. Tạo mã Python nhập liệu cho dữ liệu khách hàng từ Salesforce. 2. Tạo các mô hình DBT triển khai logic SCD Loại 2. 3. Tạo các quy trình làm việc Airflow để thực thi hàng giờ. 4. Tạo các kiểm thử xác thực để tương thích xuôi dòng.
Các tài liệu đặc tả này thường được duy trì dưới dạng các tạo phẩm vận hành dựa trên Markdown, được tạo và tinh chỉnh thông qua các quy trình làm việc có hỗ trợ AI. Các kỹ sư có thể cập nhật lặp lại các đặc tả, cung cấp ngữ cảnh kinh doanh bổ sung và cộng tác với các tác nhân tạo mã để cải thiện logic triển khai, quy trình làm việc và hướng dẫn câu lệnh theo thời gian. So với các quy trình tài liệu truyền thống, việc tạo đặc tả có hỗ trợ AI nhanh hơn đáng kể và linh hoạt hơn.
Sự thay đổi quan trọng không chỉ đơn thuần là tài liệu tốt hơn. Các đặc tả trở thành ngữ cảnh vận hành có thể tái sử dụng, cho phép các hệ thống phát triển nhất quán qua các bản phát hành, đội nhóm và các quy trình làm việc có hỗ trợ AI. Mục đích kiến trúc, các giả định kinh doanh và logic triển khai không còn biến mất vào các câu lệnh tạm thời và các triển khai không liên kết, mà thay vào đó trở thành tri thức hệ thống bền vững được tích hợp trực tiếp vào vòng đời phát triển.
Tại Sao Phát Triển Hướng Đặc Tả Đặc Biệt Phù Hợp Với Kỹ Thuật Dữ Liệu? 🎯
SDD về lý thuyết có thể được áp dụng trên nhiều lĩnh vực kỹ thuật phần mềm, nhưng kỹ thuật dữ liệu đặc biệt phù hợp với mô hình này vì bản chất của các nền tảng dữ liệu hiện đại.
Các hệ thống dữ liệu doanh nghiệp tự nhiên trải rộng trên nhiều công nghệ và lớp liên kết, bao gồm các hệ thống giao dịch, khung nhập liệu, nền tảng streaming, kho dữ liệu, hệ thống điều phối, các lớp ngữ nghĩa, API, bảng điều khiển và đường ống ML. Các kỹ sư dữ liệu thường xuyên làm việc trên các ngăn xếp công nghệ dài và các hệ thống phân tán, nơi một thay đổi ở thượng nguồn có thể ảnh hưởng đến nhiều người tiêu dùng ở hạ nguồn.
Các nền tảng dữ liệu doanh nghiệp cũng hỗ trợ nhiều đội nhóm và ứng dụng khác nhau trong các môi trường phân mảnh. Khi các hệ thống phát triển độc lập, việc hiểu rõ tác động xuôi dòng đầy đủ của một thay đổi lược đồ hoặc logic kinh doanh ở thượng nguồn ngày càng trở nên khó khăn. Một sửa đổi tưởng chừng nhỏ có thể âm thầm phá vỡ các đường ống dữ liệu, bảng điều khiển, API, mô hình ngữ nghĩa hoặc quy trình làm việc học máy ở hạ nguồn trên toàn nền tảng.
SDD có thể giải quyết sự phân mảnh này bằng cách giới thiệu các "hợp đồng" vận hành được chia sẻ và kiểm soát phiên bản giữa các hệ thống. Bởi vì lược đồ, phụ thuộc, quy tắc xác thực, logic chuyển đổi và hành vi điều phối được định nghĩa rõ ràng trong các đặc tả, các đội nhóm và tác nhân AI có được khả năng hiển thị tốt hơn nhiều về cách các hệ thống được kết nối và cách các thay đổi lan truyền trên toàn nền tảng.
Ngoài ra, mục tiêu của kỹ thuật dữ liệu không chỉ đơn thuần là cung cấp các đường ống dữ liệu nhanh chóng. Các đội nhóm cũng phải tối ưu hóa cho sự ổn định hệ thống, khả năng mở rộng, tính nhất quán, khả năng duy trì, độ tin cậy vận hành và chi phí hạ tầng. Điều này đòi hỏi công việc thiết kế hệ thống và giải pháp đáng kể từ các kỹ sư. Các đội nhóm phải xác định ngăn xếp công nghệ, tạo lược đồ, mẫu chuyển đổi, hành vi điều phối, quy tắc xác thực, chiến lược lưu trữ và yêu cầu tương thích xuôi dòng một cách cẩn thận trên toàn nền tảng.
Tuy nhiên, một khi các mẫu kiến trúc và vận hành này được thiết lập, phần lớn công việc triển khai trở nên lặp đi lặp lại và tiêu chuẩn hóa cao. Ví dụ, sau khi xác định một mẫu nhập liệu và chuyển đổi có thể tái sử dụng cho dữ liệu khách hàng từ Salesforce, việc tích hợp một bảng mới chỉ có thể yêu cầu thêm một định nghĩa bảng khác vào đặc tả, trong khi phần triển khai còn lại có thể được tạo tự động thông qua các đặc tả và quy trình làm việc hiện có tuân theo cùng một mẫu vận hành: yaml source: system: salesforce tables: - customer - order - product Chỉ từ đặc tả này, các tác nhân tạo mã có thể tạo ra các đường ống dữ liệu mới theo cùng một mẫu triển khai được quản lý trên toàn nền tảng. Sự kết hợp giữa thiết kế kiến trúc do con người điều khiển và các quy trình làm việc triển khai có tính lặp lại cao này làm cho kỹ thuật dữ liệu đặc biệt phù hợp với SDD.
Theo nhiều cách, kỹ thuật dữ liệu luôn hướng tới các cấp độ tự động hóa cao hơn, từ các khung ETL và đường ống dựa trên siêu dữ liệu đến IaC và các hệ thống điều phối khai báo. SDD đại diện cho một bước tiếp theo trong quá trình tiến hóa đó bằng cách kết hợp khả năng tạo mã AI dựa trên câu lệnh với các "hợp đồng" vận hành xác định và được kiểm soát phiên bản.
Thay vì hoàn toàn dựa vào các câu lệnh hội thoại tạm thời hoặc các hệ thống mẫu cứng nhắc, SDD giới thiệu một lớp trung gian nơi các đặc tả có thể tái sử dụng cung cấp cấu trúc, sự phối hợp, xác thực và bộ nhớ hệ thống bền vững cho phát triển có hỗ trợ AI.
SDD Thay Đổi Kỹ Thuật Dữ Liệu Có Hỗ Trợ AI Như Thế Nào? 🚀
SDD giới thiệu một cấp độ tự động hóa cao hơn nhiều vào kỹ thuật dữ liệu doanh nghiệp, đồng thời giúp giảm các vấn đề phân mảnh mà các nền tảng dữ liệu hiện đại ngày càng phải đối mặt.
Bởi vì lược đồ, quy tắc kinh doanh, hành vi chuyển đổi, yêu cầu điều phối, logic xác thực và các phụ thuộc xuôi dòng được định nghĩa rõ ràng bên trong các đặc tả có thể tái sử dụng, các tác nhân tạo mã có thể tạo và phát triển các phần lớn của triển khai một cách nhất quán trên toàn nền tảng. Thay vì liên tục xây dựng lại các đường ống dữ liệu và quy trình làm việc từ các câu lệnh tạm thời và ngữ cảnh không liên kết, các đội nhóm có thể lặp lại các hệ thống thông qua các "hợp đồng" vận hành được chia sẻ và các mẫu triển khai có thể tái sử dụng.
Điều này cải thiện đáng kể tính nhất quán, khả năng truy vết và sự phối hợp trong các môi trường phân tán. Quá trình phát triển lược đồ trở nên dễ quản lý hơn, tác động xuôi dòng trở nên rõ ràng hơn và các hệ thống có thể phát triển tăng dần thay vì thông qua các thế hệ triển khai không liên kết.
Đồng thời, các kỹ sư con người vẫn giữ vai trò thiết yếu trong vòng đời phát triển. Trong khi các tác nhân AI có thể tự động hóa phần lớn công việc triển khai, phán đoán của con người vẫn rất quan trọng để định nghĩa logic kinh doanh, thiết kế kiến trúc, quản lý đánh đổi, xác thực tính đúng đắn và phối hợp sự phát triển hệ thống giữa các tổ chức.
Khi ngày càng nhiều công việc triển khai được tạo bởi AI, vai trò của kỹ thuật dữ liệu cũng bắt đầu thay đổi. Các kỹ sư dành ít thời gian hơn để viết các đường ống dữ liệu và logic điều phối lặp đi lặp lại, và dành nhiều thời gian hơn để định nghĩa các đặc tả, thiết kế các mẫu vận hành có thể tái sử dụng, quản lý các quy tắc xác thực và phối hợp ngữ cảnh kinh doanh giữa các hệ thống.
Điều này cũng có thể dần dần giảm bớt một số ranh giới truyền thống giữa các đội kỹ thuật dữ liệu khác nhau. Bởi vì việc triển khai ngày càng được tiêu chuẩn hóa và có sự hỗ trợ của AI thông qua các đặc tả được chia sẻ, các tổ chức có thể ít phụ thuộc hơn vào các đội triển khai chuyên biệt theo nền tảng và tập trung nhiều hơn vào các "hợp đồng" vận hành được chia sẻ và các mẫu hệ thống có thể tái sử dụng.
Cuối cùng, SDD chuyển đổi kỹ thuật dữ liệu sang một mô hình hướng đặc tả và hướng hệ thống hơn, nơi con người tập trung vào mục đích, kiến trúc và phối hợp kinh doanh, trong khi các tác nhân AI ngày càng xử lý việc triển khai, kiểm thử và tạo ra ở quy mô lớn.