[ad_1]
MLOps: Điều phối đường ống dữ liệu
Phần 1 của Dataform 101: Nguyên tắc cơ bản của một kho lưu trữ, Dataform đa môi trường với cơ sở hạ tầng và kiểm soát truy cập có đặc quyền thấp nhất khi thiết lập mã
Mẫu dữ liệu là một dịch vụ mới được tích hợp vào bộ dịch vụ GCP cho phép các nhóm phát triển và vận hành các đường dẫn dữ liệu dựa trên SQL phức tạp. Dataform cho phép áp dụng các phương pháp hay nhất về công nghệ phần mềm như thử nghiệm, môi trường, kiểm soát phiên bản, quản lý phụ thuộc, điều phối và tài liệu tự động vào đường ống dữ liệu. Nó là một công cụ điều phối luồng công việc SQL không có máy chủ trong GCP. Thông thường, như trong hình trên, Dataform lấy dữ liệu thô, chuyển đổi dữ liệu đó bằng tất cả các phương pháp thực hành tốt nhất về mặt kỹ thuật và xuất ra dữ liệu có cấu trúc phù hợp sẵn sàng để sử dụng.
Cảm hứng cho bài đăng này đến khi tôi đang di cư một trong những Biểu mẫu dữ liệu kế thừa của dự án của chúng tôi từ giao diện người dùng net đến GCP BigQuery. Trong quá trình di chuyển, tôi nhận thấy các thuật ngữ như cấu hình phát hành, cấu hình quy trình làm việc và không gian làm việc phát triển thực sự khó hiểu và khó hiểu. Đó là động lực để viết một bài giải thích một số thuật ngữ mới được sử dụng trong Biểu mẫu dữ liệu GCP. Ngoài ra, tôi sẽ đề cập đến một số luồng cơ bản nhấn mạnh các hoạt động của Biểu mẫu dữ liệu đa môi trường kho lưu trữ đơn lẻ trong GCP. Có nhiều cách để thiết lập Dataform, vì vậy hãy nhớ kiểm tra thực hành tốt nhất từ Google.
Đây là Phần 1 của loạt bài gồm hai phần đề cập đến các nguyên tắc cơ bản và thiết lập Dataform. Trong Phần 2, tôi sẽ cung cấp hướng dẫn thiết lập Terraform cho biết cách triển khai kiểm soát ít quyền truy cập nhất khi cung cấp Dataform. Nếu bạn muốn xem qua điều đó, hãy nhớ xem qua kho lưu trữ.
Việc triển khai trong Dataform gần giống với quy trình làm việc của GitHub. Tôi sẽ đối chiếu sự tương đồng giữa hai điều này và tạo ra sự tương tự để làm cho nó dễ hiểu. Thật dễ dàng để hình dung Dataform như một kho lưu trữ GitHub cục bộ. Khi Dataform đang được thiết lập, nó sẽ yêu cầu cấu hình kho lưu trữ từ xa tương tự như cách GitHub cục bộ được ghép nối với nguồn gốc từ xa. Với ý tưởng thiết lập kịch bản này, hãy nhanh chóng xem qua một số thuật ngữ Dataform.
Không gian làm việc phát triển
Điều này tương tự với chi nhánh GitHub địa phương. Tương tự như cách tạo một nhánh từ GitHub important, không gian làm việc phát triển Dataform mới sẽ kiểm tra bản sao có thể chỉnh sửa của mã repo Dataform chính. Các không gian làm việc phát triển độc lập với nhau tương tự như các nhánh GitHub. Việc phát triển và thử nghiệm mã sẽ diễn ra trong không gian làm việc phát triển và khi mã được cam kết và đẩy, một nhánh từ xa có tên tương tự với không gian làm việc phát triển sẽ được tạo. Điều đáng nói là kho lưu trữ GitHub mà từ đó mã có thể chỉnh sửa được kiểm tra vào không gian làm việc phát triển có thể định cấu hình được. Nó có thể từ nhánh chính hoặc bất kỳ nhánh nào khác trong repo từ xa.
Cấu hình phát hành
Dataform sử dụng kết hợp .sqlx
tập lệnh với Javascript .js
để chuyển đổi dữ liệu và logic. Do đó, trước tiên, nó tạo ra một bản biên dịch cơ sở mã để có được bản trình bày đường dẫn tiêu chuẩn và có thể tái tạo của cơ sở mã, đồng thời đảm bảo rằng các tập lệnh có thể được cụ thể hóa thành dữ liệu. Cấu hình phát hành là quá trình tự động mà quá trình biên dịch này diễn ra. Tại thời điểm được định cấu hình, Dataform sẽ kiểm tra mã trong kho lưu trữ chính từ xa (mã này có thể định cấu hình và có thể sửa đổi để nhắm mục tiêu bất kỳ nhánh từ xa nào) và biên dịch mã đó thành tệp cấu hình JSON. Quá trình kiểm tra mã và tạo phần biên dịch là những gì cấu hình phát hành bao gồm.
Cấu hình quy trình làm việc
Vì vậy, đầu ra của cấu hình phát hành là một .json
tập tin cấu hình. Cấu hình quy trình làm việc xác định thời điểm chạy tệp cấu hình, danh tính nào sẽ chạy tệp đó và đầu ra tệp cấu hình sẽ được hiển thị hoặc ghi vào môi trường nào.
Vì cấu hình quy trình làm việc sẽ cần đầu ra của cấu hình phát hành nên việc đảm bảo rằng nó chạy muộn hơn cấu hình phát hành là điều hợp lý. Lý do là cấu hình phát hành trước tiên sẽ cần xác thực với kho lưu trữ từ xa (đôi khi không thành công), kiểm tra mã và biên dịch mã. Các bước này diễn ra trong vài giây nhưng có thể mất nhiều thời gian hơn trong trường hợp kết nối mạng bị lỗi. Vì cấu hình quy trình công việc cần .json
được biên dịch được tạo bởi cấu hình phát hành, nên lên lịch muộn hơn cấu hình phát hành. Nếu được lên lịch cùng lúc, cấu hình quy trình làm việc có thể sử dụng quá trình biên dịch trước đó, nghĩa là những thay đổi mới nhất không được phản ánh ngay lập tức trong các bảng BQ cho đến khi cấu hình quy trình công việc tiếp theo chạy.
Môi trường
Một trong những tính năng của Dataform là chức năng cho phép hiển thị mã vào các môi trường khác nhau như phát triển, dàn dựng và sản xuất. Làm việc với nhiều môi trường mang lại thách thức về cách thiết lập Dataform. Kho lưu trữ nên được tạo trong nhiều môi trường hay chỉ trong một môi trường? Google đã thảo luận tốt nhất về một số sự cân bằng này trong Dataform thực hành phần. Bài đăng này trình bày cách thiết lập Dataform cho môi trường dàn dựng và sản xuất với cả dữ liệu được cụ thể hóa vào cả hai môi trường từ một kho lưu trữ duy nhất.
Các môi trường được thiết lập dưới dạng dự án GCP với mỗi tài khoản dịch vụ tùy chỉnh. Dataform chỉ được tạo trong môi trường/dự án chạy thử vì chúng tôi sẽ thực hiện nhiều thay đổi và tốt hơn là nên thử nghiệm trong môi trường chạy thử (hoặc không sản xuất). Ngoài ra, môi trường chạy thử được chọn làm môi trường trong đó mã phát triển được hiển thị. Điều này có nghĩa là tập dữ liệu và bảng được tạo từ không gian làm việc phát triển được hiển thị trong môi trường chạy thử.
Sau khi quá trình phát triển hoàn tất, mã sẽ được cam kết và đẩy đến kho lưu trữ từ xa. Từ đó, PR có thể được nâng lên và hợp nhất vào repo chính sau khi xem xét. Trong quy trình làm việc đã lên lịch, cả cấu hình phát hành và cấu hình quy trình công việc đều được thực thi. Dataform được cấu hình để biên dịch mã từ nhánh chính và thực thi nó trong môi trường sản xuất. Do đó, chỉ mã được đánh giá mới được đưa vào sản xuất và mọi mã phát triển vẫn ở trong môi trường chạy thử.
Tóm lại, từ luồng kiến trúc Dataform ở trên, mã được phát triển trong không gian làm việc phát triển được hiển thị trong môi trường chạy thử hoặc được đẩy tới GitHub từ xa, nơi mã được xem xét ngang hàng và hợp nhất vào nhánh chính. Cấu hình phát hành biên dịch mã từ nhánh chính trong khi cấu hình quy trình làm việc lấy mã được biên dịch và hiển thị dữ liệu của nó trong môi trường sản xuất. Do đó, chỉ mã được xem xét trong nhánh chính GitHub mới được hiển thị trong môi trường sản xuất.
Xác thực cho Dataform có thể phức tạp và phức tạp, đặc biệt khi thiết lập cho nhiều môi trường. Tôi sẽ sử dụng ví dụ về môi trường dàn dựng và sản xuất để giải thích cách thực hiện việc này. Hãy chia nhỏ nơi cần xác thực và cách thực hiện việc đó.
Hình trên cho thấy quy trình làm việc Dataform đơn giản mà chúng ta có thể sử dụng để theo dõi nơi cần xác thực và đối với những tài nguyên nào. Luồng ghi lại những gì xảy ra khi Dataform chạy trong không gian làm việc phát triển và đúng lịch trình (cấu hình phát hành và quy trình công việc).
Người sử dụng máy
Hãy nói về người sử dụng máy. Dataform yêu cầu thông tin xác thực để truy cập GitHub khi kiểm tra mã được lưu trữ trên kho lưu trữ từ xa. Có thể sử dụng thông tin xác thực cá nhân nhưng cách tốt nhất là sử dụng người dùng máy trong một tổ chức. Cách thực hành này đảm bảo rằng việc điều phối quy trình Dataform độc lập với các danh tính riêng lẻ và sẽ không bị ảnh hưởng bởi sự khởi hành của chúng. Thiết lập người dùng máy có nghĩa là sử dụng danh tính không gắn với cá nhân để thiết lập tài khoản GitHub một cách chi tiết đây. Trong trường hợp Dataform, mã thông báo truy cập cá nhân (PAT) được tạo cho tài khoản người dùng máy và lưu trữ dưới dạng bí mật trên trình quản lý bí mật GCP. Người dùng máy cũng phải được thêm làm cộng tác viên bên ngoài vào kho lưu trữ từ xa Dataform với quyền truy cập đọc và ghi. Chúng ta sẽ xem cách Dataform được cấu hình để truy cập bí mật sau trong mã Terraform. Nếu người dùng quyết định sử dụng danh tính của họ thay vì người dùng máy, mã thông báo sẽ được tạo dưới dạng chi tiết đây.
Luồng xác thực GitHub
Dataform sử dụng tài khoản dịch vụ mặc định của nó để triển khai nên khi thực hiện một hành động Dataform, nó sẽ bắt đầu bằng tài khoản dịch vụ mặc định. Tôi giả sử bạn đã thiết lập người dùng máy, thêm người dùng làm cộng tác viên vào kho lưu trữ từ xa và thêm PAT người dùng làm bí mật cho trình quản lý bí mật GCP. Để xác thực với GitHub, tài khoản dịch vụ mặc định cần trích xuất bí mật từ người quản lý bí mật. Tài khoản dịch vụ mặc định yêu cầu người truy cập bí mật vai trò truy cập bí mật. Sau khi bí mật được truy cập, tài khoản dịch vụ mặc định hiện có thể mạo danh người dùng máy và vì người dùng máy được thêm làm cộng tác viên trên kho lưu trữ Git từ xa nên tài khoản dịch vụ mặc định hiện có quyền truy cập vào kho lưu trữ GitHub từ xa với tư cách là cộng tác viên. Luồng được hiển thị trong hình quy trình xác thực GitHub.
Xác thực không gian làm việc phát triển
Khi quá trình thực thi được kích hoạt từ không gian làm việc phát triển, tài khoản dịch vụ mặc định sẽ giả định tài khoản dịch vụ tùy chỉnh của môi trường chạy thử để hiển thị đầu ra trong môi trường chạy thử. Để có thể mạo danh tài khoản dịch vụ tùy chỉnh môi trường dàn dựng, tài khoản dịch vụ mặc định yêu cầu iam.serviceAccountTokenCreator vai trò trên tài khoản dịch vụ dàn dựng. Điều này cho phép tài khoản dịch vụ mặc định tạo mã thông báo tồn tại trong thời gian ngắn, tương tự như PAT được sử dụng để mạo danh người dùng máy, cho tài khoản dịch vụ tùy chỉnh dàn dựng và do đó mạo danh nó. Do đó, tài khoản dịch vụ tùy chỉnh dàn dựng được cấp tất cả các quyền cần thiết để ghi vào bảng BQ và tài khoản dịch vụ mặc định sẽ kế thừa các quyền này khi mạo danh nó.
Xác thực cấu hình quy trình làm việc
Sau khi kiểm tra repo, cấu hình phát hành sẽ tạo cấu hình đã biên dịch .json
tệp mà cấu hình quy trình làm việc sẽ tạo ra dữ liệu. Để ghi dữ liệu vào bảng BQ sản xuất, tài khoản dịch vụ mặc định yêu cầu iam.serviceAccountTokenCreator vai trò trên tài khoản dịch vụ tùy chỉnh sản xuất. Tương tự như những gì được thực hiện đối với tài khoản dịch vụ tùy chỉnh dàn dựng, tài khoản dịch vụ sản xuất được cấp tất cả các quyền cần thiết để ghi vào bảng BQ của môi trường sản xuất và tài khoản dịch vụ mặc định sẽ kế thừa tất cả các quyền khi mạo danh nó.
Bản tóm tắt
Tóm lại, tài khoản dịch vụ mặc định là nhân vật chính. Nó mạo danh người dùng máy để xác thực với GitHub với tư cách là cộng tác viên bằng cách sử dụng PAT của người dùng máy. Nó cũng xác thực với môi trường dàn dựng và sản xuất bằng cách mạo danh tài khoản dịch vụ tùy chỉnh tương ứng của họ bằng cách sử dụng mã thông báo tồn tại trong thời gian ngắn được tạo cùng với vai trò dịch vụTài khoảnTokenCreator. Với sự hiểu biết này, đã đến lúc cung cấp Dataform trong GCP bằng Terraform. Hãy xem Phần 2 của bài đăng này để biết điều đó và hoặc xem phần kho lưu trữ cho mã.
Tín dụng hình ảnh: Tất cả hình ảnh trong bài viết này đều do Tác giả tạo ra
Người giới thiệu
[ad_2]
Source link