Tool ก็มี…ทำไมผมยังใช้ Python ทำ Cloud Automation อยู่

Why Am I Still Using Python for Cloud Automation?

Nopnithi Khaokaew (Game)
2 min readOct 8, 2021

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

มีช่วงนึงที่ผมคิดว่ายังไงก็ไม่ควรใช้ Python (หรือ Programming Language) ในการทำ Automation อีก (ควรใช้ tool แทน) แต่เอาเข้าจริงมันไม่ใช่เสมอไป

ว่าแต่การใช้ tool ดีกว่ายังไง?

  • ใช้(ให้ดีและมีประสิทธิภาพ)ง่ายกว่า
  • จัดการ concurrency ให้ (ทำงานทีละหลาย task พร้อมกัน)
  • Software มีความเสถียรกว่า(เขียน code เองคนเดียว)
  • เช็ค result ที่เกิดขึ้นว่าทำแล้วได้ผลยังไงง่ายกว่า (ทำเองเหนื่อย)
  • Rollback หรือ revert ได้ง่ายกว่า (ทำเองเหนื่อย)

ในขณะที่การเขียน code เองเพื่อทำให้ได้แบบด้านบนนั้นไม่ใช่เรื่องง่าย แถมเสียเวลามากด้วย ซึ่งผมก็ยังคงยืนยันเหมือนเดิมนะว่าใช้ tool ดีกว่า แต่คงไม่ใช่ทุกงาน เพราะผมก็ยังมีคำถามกับตัวเองว่า…

ถาม

ทำไมผมยังต้อง Interact กับ Cloud Resource ด้วย Python ทั้งที่มี Tool ดี ๆ มากมาย?

ตอบ

ถ้า infrastructure เราทำ IaC (Infrastructure as Code) อยู่แล้ว ผมแนะนำให้ใช้ tool ในการ provision หรือ change มากกว่าแน่นอน แม้แต่การดึงข้อมูลก็ทำได้ไม่ยาก

แต่มันจะมีเคสที่ account นั้นไม่ได้ manage ด้วย IaC มาก่อน(ผมเจอเยอะ) การ change ด้วย Python จะดีกว่าเพราะเป็นการ interact กับ API โดยตรงซึ่งอยากทำอะไรก็ทำได้ทันที เช่น ถ้าผมต้องการเพิ่ม security group บน EC2 ทั้งหมด เป็นต้น

กลับกันถ้าผมอยากทำด้วย Terraform ผมต้อง import state ปัจจุบันของ resource ก่อน ซึ่งเสียเวลากว่าเยอะ (ในกรณีที่เรายังไม่พร้อม convert เป็น IaC)

ถาม

ทำไมผมถึงมองว่าการดึงข้อมูลบน Cloud ด้วย Python ดีกว่าใช้ Command Line Interface (CLI)?

ตอบ

ถ้าข้อมูลที่เราต้องการไม่ซับซ้อน การใช้ CLI ย่อมง่ายและเร็วกว่า เพราะ CLI ของ cloud นั้นเก่งมาก อยากได้ output เป็น JSON, YAML หรือ text (CSV) ก็ได้ แถมยังสามารถ filter หรือ query ข้อมูลที่ต้องการได้อีก

แต่จะมีหลายครั้งที่ข้อมูลที่เราต้องการไม่ได้จบด้วย command เดียว ซึ่งจะต้องนำข้อมูลจากหลาย command มา aggregate กัน, อาจมี condition ในการดึง หรือด้วยความซับซ้อนของ data structure บน API เองก็ตาม ทำให้การเขียน Python ไปดึงจะง่ายกว่า (โดยเฉพาะคนที่ถนัด coding อยู่แล้ว) แถมหลายครั้งผมก็ export ออกมาเป็นไฟล์ Excel สวย ๆ ได้ทันทีอีกต่างหาก

ทั้งหมดนี้เป็นความเห็นที่ตกผลึกมาจากประสบการณ์ส่วนตัว คิดเห็นยังไงมาแชร์กันได้ครับ และถ้าหากคิดว่าบทความนี้มีประโยชน์ ฝากกด clap, follow และ share บทความนี้ให้ผมด้วยนะครับ ขอบคุณมากครับ

--

--

Nopnithi Khaokaew (Game)
Nopnithi Khaokaew (Game)

Written by Nopnithi Khaokaew (Game)

Cloud Solutions Architect & Hobbyist Developer | 6x AWS Certified, CKA, CKAD, 2x HashiCorp Certified (Terraform, Vault), etc.

Responses (1)