มีคำถามว่าหากเราพัฒนาแอพพลิเคชันด้วย Kubernetes และเก็บข้อมูลอยู่ใน S3 จะเลือกพัฒนาแอพพลิเคชันเป็น ReplicaSet ต่อตรงกับ S3 หรือทำเป็น StatefulSet ต่อกับ PVC (Persistence Volume Claim) แบบไหนจะดีกว่ากัน จึงได้สรุปข้อดีข้อเสียไว้ดังนี้

1. ความแตกต่าง

ความแตกต่างด้านส่วนประกอบซอฟต์แวร์จะเป็นดังนี้

รูปภาพ 1 การใช้งาน StatefulSet กับ PVC

รูปภาพ 2 การใช้งาน ReplicaSet กับ Storage S3 โดยตรง

จากภาพจะเห็นว่ามีข้อดีข้อเสียแตกต่างกันดังนี้

2. StatefulSet ทำงานกับ PVC

StatefulSet ทำงานกับ PVC มีข้อดีข้อเสียดังนี้

ข้อดี

  1. โปรแกรมเมอร์เขียนง่าย ใช้แค่ File API ตามปกติ
  2. แอพพลิเคชันไม่ขึ้นกับ Storage Technology ทำให้เปลี่ยนจาก S3 ไปเป็น Storage แบบอื่นได้อีกในอนาคต

ข้อเสีย

  1. Deployment ซับซ้อน ต้องเขียนส่วน PVC
  2. Infra Admin ต้องทำ PV และทำ Storage Class ไว้ด้วย
  3. Infra Admin ต้องทำ Retention Policy ให้กับ PV ด้วย

3. ReplicaSet ทำงานกับ S3 โดยตร

ReplicaSet ทำงานกับ S3 โดยตรง มีข้อดีข้อเสียดังนี้

ข้อดี

  1. Deployment ไม่ซับซ้อนไม่ต้องเขียนส่วน PVC
  2. Infra Admin ไม่ต้องทำ PV และ Storage Class
  3. Infra Admin ไม่ต้องทำ Retention Policy แต่ต้องไปบริหารจัดการ S3 ตามปกติ

ข้อเสีย

  1. โปรแกรมเมอร์ต้องเรียนรู้ S3 API ทั้งส่วน Authentication และ Read/Write Bucket
  2. แอพพลิเคชันขึ้นกับ Storage Technology ทำให้เปลี่ยนจาก S3 ไปเป็น Storage แบบอื่นได้ยาก ถ้าจะเปลี่ยนต้องเป็น API เดียวกัน

4. แนวทางการเลือกใช้

เนื่องจากผลกระทบกับแต่ละบทบาทที่เกี่ยวข้องแตกต่างกัน หากในทีมงานมีแต่โปรแกรมเมอร์แต่ไม่มี Infrastructure Engineer ที่จะมาดำเนินการดูแลเรื่อง PV กับ PVC เราควรจะใช้วิธีการต่อตรงกับ S3 แต่หากมี Infrastructure Engineer ที่เชี่ยวชาญดูและให้เราควรที่จะเลือกใช้วิธีการต่อผ่าน PVC ซึ่งจะทำให้เราไม่ขึ้นกับเทคโนโยลีของ Storage และเปลี่ยนได้ในอนาคต

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *