Slide 1

Slide 1 text

Pulumi に⼊⾨してみた chanyou

Slide 2

Slide 2 text

Yu Nakamura - chanyou ‧ DRE ← Data Engineer ← SWE ‧ X: @chanyou0311 ‧ Google Cloud BigQuery ‧ Azure Databricks ‧ おうち Kubernetes クラスタ

Slide 3

Slide 3 text

IaC やってる⽅ 🙋

Slide 4

Slide 4 text

Pulumi に⼊⾨してみたので 体験談を話します

Slide 5

Slide 5 text

今回の内容 ‧話すこと ‧Pulumi の取っ掛かり ‧話さない / 話せない こと ‧IaC とは? ‧Pulumi のベストプラクティス

Slide 6

Slide 6 text

モチベーション

Slide 7

Slide 7 text

Pulumi の良さがよくわかっていなかった ‧書き慣れた⾔語で IaC できる旨味がよくわからん ‧HCL じゃだめ?

Slide 8

Slide 8 text

インフラの⺠主化に関⼼が移る ‧データ基盤において、データの⺠主化からデータインフラの⺠ 主化が求められていく ‧データを⺠主化するための活動が中央チームに寄るとボトル ネックになりがち

Slide 9

Slide 9 text

Driving Data Quality with Data Contracts https://github.com/PacktPublishing/Driving-Data-Quality-with-Data-Contracts/tree/main

Slide 10

Slide 10 text

Driving Data Quality with Data Contracts ‧データコントラクトという抽象的な仕様を YAML で宣⾔するこ とで、それを満たすリソースを動的に⽣成するアプローチ ‧YAML から動的にリソース⽣成するのに Pulumi が良さそう

Slide 11

Slide 11 text

Pulumi とは

Slide 12

Slide 12 text

Pulumi とは オープンソースの IaC ツール Node.js, Python, Go, C#, Java, YAML がサポートされている インフラのステートを保持して、 コードとの差分を埋める操作を ⾏ってくれる https://www.pulumi.com/docs/concepts/how-pulumi-works/

Slide 13

Slide 13 text

対応パッケージ ‧三⼤パブリッククラウドに対応 ‧Kubernetes, Auth0, GitHub, Cloudflare, Heroku, … ‧Pulumi Terraform Bridge ‧Dynamic resource provider

Slide 14

Slide 14 text

Pulumi Cloud ‧ステート管理は Pulumi Cloud に任せられる ‧CI/CD の実装も⼿軽になる ‧Pulumi Copilot などの開発⽀援機能もある

Slide 15

Slide 15 text

Pulumi AI ‧⾃然⾔語で構成や実現したいことを伝えると、それに沿った Pulumi リソースを⽣成してくれる ‧初期プロジェクト⽴ち上げ時にも Pulumi AI にテンプレートを⽣ 成してもらえる https://www.pulumi.com/docs/concepts/how-pulumi-works/

Slide 16

Slide 16 text

基本コマンド ‧pulumi new ‧pulumi up

Slide 17

Slide 17 text

チュートリアルをやってみる

Slide 18

Slide 18 text

チュートリアルをやってみる https://www.pulumi.com/docs/clouds/gcp/get-started/create-project/ ‧事前に Google Cloud の Project を作っておく

Slide 19

Slide 19 text

データコントラクトの事例

Slide 20

Slide 20 text

データ仕様をデータコントラクトとして表現 https://datacontract.com/

Slide 21

Slide 21 text

スキーマはもちろん PII に該当するかも定義 https://datacontract.com/

Slide 22

Slide 22 text

利⽤規約やデータの配置場所も表現 https://datacontract.com/

Slide 23

Slide 23 text

サービスレベルも表現する https://datacontract.com/

Slide 24

Slide 24 text

データコントラクト駆動な世界 データコントラクトから、様々な成果物を⾃動的に⽣成できる ‧ドキュメント ‧宛先のデータセット ‧データ転送処理 ‧データ品質の監視 ‧…

Slide 25

Slide 25 text

データコントラクト駆動な世界を体験する ‧https://github.com/chanyou0311/datacontract-demo ‧データコントラクトを YAML で定義して、宛先のデータセットを ⽣成する

Slide 26

Slide 26 text

デモ

Slide 27

Slide 27 text

所感とまとめ

Slide 28

Slide 28 text

Good: 抽象表現からインフラに落とし込める ‧データコントラクトの例のように YAML から任意のロジックでイン フラ構築できる ‧ガードレールとして機能して、プラットフォーム化が加速しそう ‧知⾒のないユーザーでも、仕様さえ決められれば⾃律的にインフラ 構築できそう

Slide 29

Slide 29 text

Good: セルフサービス化が容易 ‧モジュール化する際に IaC ツールのベストプラクティスを 探らなくても、書き慣れた⾔語のプラクティスを踏襲できる ‧Pulumi プロジェクト内外のソースを読み取って任意のイ ンフラを構築できる ‧⾃前の REST API や Jupyter Notebook を経由してリソー ス管理もできる

Slide 30

Slide 30 text

Good: ⼿軽にプロバイダーを⾃作できる ‧Dynamic resource provider で⼿軽にプロバイダーが⾃作 できる ‧Pulumi で社内 Wiki に静的サイトの要領でページを書き出 すとかできそう

Slide 31

Slide 31 text

More: 対応プロバイダーの少なさを感じた ‧Terraform に⽐べると少ない印象 ‧Pulumi Terraform Bridge にハードルの⾼さを感じた

Slide 32

Slide 32 text

まとめ ‧仕事でも趣味でも使えそうなので、引き続き試していきた いと思います