Asset Bundles : Deploy Databricks แบบ Production-Grade ฉบับมือโปร

ไทย

TechX Asset Bundles_DevOps

เวลาเราทำงานบน Databricks กันจริง ๆ ส่วนใหญ่จะไม่ใช่แค่รันโน้ตบุ๊กเล่น ๆ ใน dev อย่างเดียวใช่ไหมครับ พอระบบเริ่มโตขึ้น เราก็ต้องมีทั้ง dev, staging, prod และต้องคอยจัดการ jobs, pipelines, ML models, etc. ให้มันทำงานเหมือนกันทุก environment

ถ้าเราต้องนั่ง config ทีละจุดใน UI ก็คงปวดหัวพอสมควร แถมเสี่ยงเจอปัญหา “ทำไมของ dev รันได้ แต่ของ prod พัง”

นี่แหละครับคือเหตุผลที่ Databricks Asset Bundles (DAB) ถูกสร้างขึ้นมา

มันคือวิธีแบบ Infrastructure-as-Code (IaC) สำหรับ Databricks ที่ช่วยให้เราเขียน config ทุกอย่างไว้ใน Git แล้ว deploy ออกมาได้เหมือนเดิมทุกครั้ง

พูดง่าย ๆ คือ แค่มี ไฟล์ YAML กำหนด resource เอาไว้ → กด deploy → Databricks ก็จะสร้าง jobs/pipelines ให้เหมือนกันเป๊ะ ๆ ในทุก environment

 

Databricks Asset Bundles คืออะไร?

Image by https://docs.databricks.com/aws/en/dev-tools/bundles
ภาพจาก : https://docs.databricks.com/aws/en/dev-tools/bundles

Asset Bundle คือไฟล์ YAML ที่ใช้กำหนด resource ที่เราต้องการ เช่น

  • Jobs
  • Pipelines
  • Volumes and schemas
  • etc.

ไฟล์ bundle.yml ตัวอย่าง

				
					bundle:
  name: my-sample-bundle

resources:
  jobs:
    daily-sales-job:
      name: "Daily Sales Report"
      tasks:
        - task_key: run-notebook
          notebook_path: ./notebooks/sales_report
          compute:
            type: serverless

				
			

แทนที่จะต้องไปตั้งค่าทุกอย่างผ่าน UI เราสามารถเขียนโครงสร้างไว้เป็นไฟล์ YAML แล้วให้ DAB จัดการ deploy ให้ตามที่เรากำหนดไว้ได้เลย

				
					databricks bundle validate
databricks bundle deploy
databricks bundle run daily-sales-job

				
			


เริ่มต้นใช้งาน Databricks Asset Bundles

1. ติดตั้ง Databricks CLI

				
					pip install databricks-cli --upgrade
				
			

2. ตรวจสอบการติดตั้ง Databricks CLI

				
					databricks --version
				
			

3. สร้าง Bundle

				
					databricks bundle init
				
			

เลือก template ของ bundle ที่ต้องการ (เช่น default-python).

 

ตัวอย่าง Use Case : Deploy ไปที่ dev, staging, prod

โครงสร้างไฟล์ของ Asset Bundles:

				
					├─ databricks.yml
├─ targets/
│  ├─ dev.yml
│  ├─ stg.yml
│  └─ prod.yml
└─ resources/
   └─ jobs.yml
				
			

databricks.yml

				
					bundle:
  name: my-lakehouse

include:
  - targets/*.yml
  - resources/*.yml
				
			

ตัวอย่างไฟล์ targets:

targets/dev.yml

				
					targets:
  prod:
    workspace:
      host: https://adb-222222222222.11.azuredatabricks.net
      root_path: /Shared/bundles/my-lakehouse/dev
    run_as:
      service_principal_name: spn-my-lakehouse-dev
    variables:
      env: dev
      uc_catalog: dev_catalog
				
			

targets/prod.yml

				
					targets:
  prod:
    workspace:
      host: https://adb-333333333333.12.azuredatabricks.net
      root_path: /Shared/bundles/my-lakehouse/prod
    run_as:
      service_principal_name: spn-my-lakehouse-prod
    variables:
      env: prod
      uc_catalog: prod_catalog
				
			

ตัวอย่างไฟล์ resources:

resources/jobs.yml

				
					resources:
  jobs:
    etl_daily:
      name: etl-daily-${var.env}
      tasks:
        - task_key: run
          notebook_path: ./notebooks/etl_daily
          compute:
            type: serverless
          task_parameters:
            - name: UC_CATALOG
              value: ${var.uc_catalog}
				
			

เตรียม code ด้านบนเสร็จแล้ว ก็ deploy ด้วย command ตามนี้ได้เลย

				
					databricks bundle deploy --target dev
databricks bundle deploy --target stg
databricks bundle deploy --target prod

				
			

Asset Bundles : จุดที่โดดเด่นหลังได้ลองใช้งานจริง

  • ความสม่ำเสมอ (Consistency) → มั่นใจได้ว่า dev, staging, prod จะใช้งานได้เช่นเดียวกัน
  • ควบคุมเวอร์ชั่น (Version Control) → เก็บข้อมูลการเปลี่ยนแปลงไว้ใน Git พร้อม rollback ได้เสมอหากมีข้อผิดพลาด
  • การกำกับดูแล (Governance) → ด้วยมาตรฐาน IaC ทำให้สามารถตรวจสอบการและจัดการได้ง่าย
  • Automation → รองรับการทำงานอัตโนมัติร่วมกับ CI/CD pipeline

นำไปใช้งานร่วมกับ CI/CD

ตัวอย่างการใช้งาน Asset Bundles ร่วมกัน Jenkins CI/CD Pipeline

ตัวอย่าง Databricks Job ที่ถูก Deploy ด้วย Asset Bundles (DAB)

ภาพจาก : https://www.databricks.com/resources/demos/tours/data-engineering/databricks-asset-bundles

สรุป

Asset Bundles คือเครื่องมือที่จะช่วยให้ชีวิตเราบน Databricks ง่ายขึ้นเยอะ ไม่ต้องมานั่งคลิก ๆ config ใน UI แล้วลุ้นว่าของ dev จะเหมือน prod ไหม

เราก็แค่เขียนไฟล์ bundle ไว้ใน repo เดียวกัน จากนั้นก็เลือก target ว่าจะ deploy ไป dev, staging, หรือ prod ทุกอย่างก็ไปตาม script แบบชัวร์ ๆ

ใครที่ยังใช้วิธี manual สร้างผ่าน UI อยู่ ลองขยับมาใช้ Asset Bundles ดูครับ จะเห็นเลยว่ามันช่วยให้งานเราดูเป็นระบบมากขึ้น และที่สำคัญคือคุณจะ deploy ไป production ได้อย่างมั่นใจมากขึ้นแน่นอน

Related Content

  • ทั้งหมด
  • Blogs
  • Insights
  • News
  • Uncategorized
    •   Back
    • Careers
    • Data Science
    • Lifestyle
    • Product
    • Strategy
    • Technology
    • User Experience
    • xPlatform
    • DevOps
    •   Back
    • PointX Products
    • Events
    • Others
    • Leadership
    • Partnership
    • Services & Products
    • Joint ventures
    •   Back
    • Blockchain
    • Finance
    • Tech innovation

Your consent required

If you want to message us, please give your consent to SCB TechX to collect, use, and/or disclose your personal data.

| การเพิกถอนความยินยอม

หากคุณต้องการเพิกถอนการให้ความยินยอมในการเก็บรวบรวม ใช้ และ/หรือเปิดเผยข้อมูลส่วนบุคคล กรุณาส่งคำร้องหาเรา

Vector

Message sent

We have receive your message and We will get back to you shortly.