Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
まとめ ‧仕事でも趣味でも使えそうなので、引き続き試していきた いと思います