นักพัฒนาชื่นชม Tilt สำหรับการพัฒนาบน Kubernetes แต่สังเกตเห็นความคืบหน้าที่ช้าลงหลังการซื้อกิจการโดย Docker

BigGo Editorial Team
นักพัฒนาชื่นชม Tilt สำหรับการพัฒนาบน Kubernetes แต่สังเกตเห็นความคืบหน้าที่ช้าลงหลังการซื้อกิจการโดย Docker

Tilt เครื่องมือพัฒนาที่ออกแบบมาเพื่อทำให้การพัฒนาไมโครเซอร์วิสในสภาพแวดล้อม Kubernetes เป็นไปอย่างราบรื่น ได้รับความนิยมอย่างมากในหมู่นักพัฒนาที่ต้องการเชื่อมช่องว่างระหว่างสภาพแวดล้อมการพัฒนาในเครื่องกับสภาพแวดล้อมการผลิตจริง แม้ว่าเครื่องมือนี้จะยังคงถูกใช้อย่างแพร่หลาย สมาชิกในชุมชนได้สังเกตเห็นการชะลอตัวของอัตราการพัฒนาหลังจากที่ Docker ได้ซื้อกิจการโครงการนี้

การทำให้ขั้นตอนการพัฒนาบน Kubernetes ง่ายขึ้น

Tilt แก้ไขความท้าทายทั่วไปในการพัฒนาซอฟต์แวร์สมัยใหม่: การจัดการสถาปัตยกรรมไมโครเซอร์วิสที่ซับซ้อนในระหว่างขั้นตอนการพัฒนา มันทำให้วงจรที่น่าเบื่อของการเฝ้าดูไฟล์ การสร้างอิมเมจคอนเทนเนอร์ และการอัปเดตสภาพแวดล้อมเมื่อโค้ดเปลี่ยนแปลงเป็นไปโดยอัตโนมัติ โดยพื้นฐานแล้ว มันจัดการสิ่งที่เทียบเท่ากับการรันคำสั่ง docker build && kubectl apply หรือ docker-compose up แต่มีความฉลาดและคุณสมบัติที่เป็นมิตรกับนักพัฒนามากกว่า

นักพัฒนาหลายคนชื่นชอบการใช้ Starlark (ภาษากำหนดค่าคล้าย Python) ของ Tilt แทนที่จะเป็น YAML สำหรับการกำหนดเวิร์กโฟลว์ ทางเลือกนี้ทำให้การกำหนดค่าจัดการได้ง่ายและยืดหยุ่นกว่าอย่างมีนัยสำคัญเมื่อเทียบกับตัวเลือกอื่น เช่น Skaffold ซึ่งพึ่งพาการกำหนดค่า YAML อย่างมาก

ผมชื่นชอบเสมอที่ Tilt เลือกใช้ Starlark แทน YAML ทำให้ทุกอย่างสะอาดกว่ามาก!

คุณสมบัติหลักของ Tilt

  • การทำงานอัตโนมัติ: ติดตามการเปลี่ยนแปลงของไฟล์ สร้างอิมเมจคอนเทนเนอร์ อัปเดตสภาพแวดล้อม
  • ภาษาในการกำหนดค่า: ใช้ Starlark (คล้าย Python) แทน YAML
  • ความสามารถในการโหลดซ้ำแบบทันที: ทำงานได้กับทั้งภาษาแบบแปลความหมายและภาษาที่คอมไพล์แบบสแตติก
  • แดชบอร์ด UI: ติดตามบันทึกและสถานะการสร้าง
  • การผสานรวมกับ Kubernetes: รองรับ ingress, service discovery, volume mounts

ตัวเลือกการติดตั้ง

  • macOS/Linux: curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/Install.sh | bash
  • Windows: สคริปต์การติดตั้ง PowerShell
  • ตัวจัดการแพ็คเกจ: รองรับ Homebrew, Scoop, Conda, asdf

กรณีการใช้งานทั่วไป

  • Kubernetes operators และ controllers
  • ตัวเก็บข้อมูลที่ใช้ eBPF
  • ไปป์ไลน์ข้อมูล
  • การพัฒนา Helm chart
  • การพัฒนาฝั่งหน้าบ้านด้วย Kubernetes ingress

การแลกเปลี่ยนระหว่างความเที่ยงตรงกับความเร็ว

ประเด็นที่เกิดขึ้นซ้ำๆ ในการสนทนาของชุมชนเกี่ยวข้องกับการแลกเปลี่ยนระหว่างความเที่ยงตรงของสภาพแวดล้อมการพัฒนากับความเร็ว ในขณะที่นักพัฒนาบางคนชอบใช้เครื่องมือที่ง่ายกว่า เช่น docker-compose กับการจำลองการพึ่งพาเพื่อรักษาวงจรการพัฒนาให้เร็ว ผู้ใช้ Tilt เน้นย้ำถึงประโยชน์ของสภาพแวดล้อมการทดสอบที่มีความเที่ยงตรงสูงกว่า

Tilt ช่วยให้นักพัฒนาสามารถสร้างสภาพแวดล้อมการพัฒนาในเครื่องที่เหมือนกับการกำหนดค่าการผลิตจริงอย่างใกล้เคียง ซึ่งสามารถลดข้อบกพร่องเฉพาะสภาพแวดล้อมได้อย่างมีนัยสำคัญ วิธีนี้ทำให้โค้ดบริการง่ายขึ้นโดยกำจัดความจำเป็นในการจำลองและการแก้ปัญหาเฉพาะการพัฒนา สำหรับการพัฒนาฝั่งหน้าบ้าน การใช้ Kubernetes ingress ผ่าน Tilt สามารถกำจัดความจำเป็นในการตั้งค่าเฉพาะการพัฒนา เช่น พร็อกซีฝั่งหน้าบ้านและการกำหนดค่า CORS

การประยุกต์ใช้ในโลกจริงและกรณีการใช้งาน

นักพัฒนารายงานว่าใช้ Tilt สำหรับแอปพลิเคชันที่หลากหลาย รวมถึงตัวเก็บข้อมูลที่ใช้ eBPF สำหรับความปลอดภัยและการสังเกตการณ์ ไปป์ไลน์ข้อมูล การพัฒนา Helm chart และตัวควบคุม Kubernetes เครื่องมือนี้ดูเหมือนจะมีคุณค่าโดยเฉพาะสำหรับโครงการที่มีปฏิสัมพันธ์โดยตรงกับ API ของ Kubernetes เช่น operators ที่ต้องค้นพบการกำหนดค่าจาก ConfigMaps หรือบริการที่พึ่งพาคุณสมบัติเฉพาะของ Kubernetes

ตัวอย่างที่น่าสนใจคือโครงการโอเพนซอร์ส Chroma ซึ่งใช้ Tilt เพื่อรันเวอร์ชันแบบกระจายของฐานข้อมูลสำหรับทั้งสภาพแวดล้อมการพัฒนาและการทดสอบอย่างต่อเนื่อง นี่แสดงให้เห็นถึงความสามารถของ Tilt ในการจัดการกับระบบแบบกระจายที่ซับซ้อนในบริบทของการพัฒนา

หน้า GitHub repository ที่แสดงให้เห็นถึงลักษณะการทำงานร่วมกันของการผสานรวม Tilt เข้ากับโครงการพัฒนา สะท้อนถึงการประยุกต์ใช้งานจริง
หน้า GitHub repository ที่แสดงให้เห็นถึงลักษณะการทำงานร่วมกันของการผสานรวม Tilt เข้ากับโครงการพัฒนา สะท้อนถึงการประยุกต์ใช้งานจริง

ความกังวลเกี่ยวกับอัตราการพัฒนา

แม้จะมีประโยชน์ สมาชิกในชุมชนบางคนได้แสดงความกังวลเกี่ยวกับอัตราการพัฒนาของ Tilt ตั้งแต่ Docker ซื้อกิจการโครงการ แม้ว่าเครื่องมือจะยังคงทำงานได้และถูกใช้อย่างแพร่หลาย แต่ยังมีคำขอคุณสมบัติที่ค้างอยู่ซึ่งจะปรับปรุงประสบการณ์ของนักพัฒนา เช่น การจัดการ Custom Resource Definitions (CRDs) และการพึ่งพาระหว่างทรัพยากร Kubernetes ที่ดีขึ้น

ความแตกต่างจากเครื่องมือพัฒนาอื่นๆ

มีความสับสนบางอย่างเกี่ยวกับวิธีที่ Tilt แตกต่างจากเครื่องมือพัฒนาอื่นๆ เช่น dev containers ในขณะที่ dev containers มุ่งเน้นที่การกำหนดค่าสภาพแวดล้อมการพัฒนาด้วยชุดเครื่องมือที่เหมาะสม Tilt ทำหน้าที่เป็นกระบวนการตรวจสอบที่สร้างและเริ่มบริการด้วยความสามารถในการโหลดซ้ำแบบร้อน (hot-reload) ความแตกต่างนี้สำคัญสำหรับนักพัฒนาที่ประเมินว่าเครื่องมือใดเหมาะกับเวิร์กโฟลว์ของพวกเขามากที่สุด

ฟังก์ชันการโหลดซ้ำแบบร้อนของ Tilt ทำงานได้แม้กับภาษาที่คอมไพล์แบบสแตติก ทำให้มีความหลากหลายในการใช้งานกับเทคโนโลยีที่แตกต่างกัน เครื่องมือนี้ยังให้อินเทอร์เฟซผู้ใช้สำหรับการตรวจสอบบันทึกและติดตามความสำเร็จหรือความล้มเหลวของการสร้าง ซึ่งเพิ่มการมองเห็นในกระบวนการพัฒนา

สำหรับทีมที่ทำงานกับสถาปัตยกรรมที่ใช้ Kubernetes Tilt นำเสนอโซลูชันที่น่าสนใจสำหรับความท้าทายของการพัฒนาในเครื่อง แม้จะมีความกังวลเกี่ยวกับอัตราการพัฒนา เครื่องมือนี้ยังคงให้คุณค่าที่สำคัญโดยช่วยให้นักพัฒนาสามารถทำงานในสภาพแวดล้อมที่คล้ายกับการผลิตจริง ในขณะที่ยังคงรักษาความเร็วในการทำซ้ำที่สมเหตุสมผล

อ้างอิง: Tilt