หมวดหมู่: AWS

AWS S3 คืออะไร ? คู่มือครบจบสำหรับผู้เริ่มต้นAWS S3 คืออะไร ? คู่มือครบจบสำหรับผู้เริ่มต้น

Amazon Simple Storage Service หรือที่รู้จักในชื่อ AWS S3 คือบริการจัดเก็บข้อมูลบนคลาวด์ (Cloud Object Storage) ที่ทรงพลังและได้รับความนิยมสูงสุดในโลก ด้วยความสามารถในการจัดเก็บข้อมูลได้แทบไม่จำกัด พร้อมด้วยความทนทานระดับ 11 เก้า (11 Nines Durability) และความพร้อมใช้งานตลอด 24 ชั่วโมง

ในฐานะ System Architect การทำความเข้าใจ S3 ถือเป็นรากฐานสำคัญของการออกแบบระบบที่ต้องการความยืดหยุ่นสูงและสเกลได้ไร้ขีดจำกัด บทความนี้คือคู่มือฉบับสมบูรณ์ที่จะพาคุณไปรู้จักกับ S3 ตั้งแต่แนวคิดพื้นฐานจนถึงการใช้งานจริง

AWS S3 คือ Object Storage อย่างไร?

สิ่งสำคัญที่ต้องทำความเข้าใจคือ S3 ไม่ใช่ระบบจัดเก็บไฟล์แบบดั้งเดิม (File System) แต่เป็น Object Storage ซึ่งหมายความว่าข้อมูลของคุณจะถูกจัดเก็บในรูปแบบของ ‘Object’ ที่ประกอบด้วย 3 ส่วนหลัก:

  • Data: ข้อมูลจริง เช่น รูปภาพ, วิดีโอ, หรือไฟล์สำรองข้อมูล
  • Metadata: ข้อมูลอธิบาย Object นั้น เช่น ขนาดไฟล์, วันที่สร้าง, ประเภท MIME
  • Unique Key: ชื่อเฉพาะที่ใช้ระบุ Object นั้น ๆ อย่างไม่ซ้ำกันภายในพื้นที่จัดเก็บ

แนวคิดหลัก: Bucket และ Object

การทำงานของ S3 มีแนวคิดหลักที่ต้องทราบ 2 คำ คือ Bucket และ Object:

  1. Bucket: เปรียบเสมือน ‘ภาชนะ’ (Container) ที่ใช้จัดเก็บ Object ทั้งหมดของคุณ แต่ละ Bucket จะต้องมีชื่อที่ไม่ซ้ำกันทั่วโลก และผูกอยู่กับ AWS Region ที่คุณเลือก
  2. Object: คือไฟล์ข้อมูลแต่ละชิ้นที่ถูกอัปโหลดเข้าไปใน Bucket

การจัดการข้อมูล S3 ด้วยแนวคิดเชิงฐานข้อมูล (PostgreSQL Example)

แม้ว่า S3 จะเป็นบริการ Object Storage แต่ในทางปฏิบัติ เรามักจะต้องจัดการ Metadata ของ Object เหล่านี้ ซึ่งสามารถจำลองการทำงานนี้ได้ด้วยระบบฐานข้อมูลเชิงสัมพันธ์อย่าง PostgreSQL เพื่อช่วยในการทำ Cataloging หรือ Indexing ข้อมูล:

สมมติว่าเราต้องการสร้างตารางเพื่อเก็บ Metadata ของ Object ที่เราอัปโหลด:

SQL

CREATE TABLE s3_object_metadata (
    object_key VARCHAR(255) PRIMARY KEY,
    bucket_name VARCHAR(255) NOT NULL,
    file_size_bytes BIGINT,
    last_modified TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO s3_object_metadata (object_key, bucket_name, file_size_bytes) VALUES ('user-profile-1', 'my-company-bucket', 1024);
INSERT INTO s3_object_metadata (object_key, bucket_name, file_size_bytes) VALUES ('report-q1', 'my-company-bucket', 51200);
SELECT object_key, file_size_bytes FROM s3_object_metadata WHERE bucket_name = 'my-company-bucket';

ในตัวอย่างนี้ เราใช้ PostgreSQL ในการจัดการ Index (object_key) และข้อมูลเสริม (file_size_bytes) เพื่อให้การค้นหาและการจัดการข้อมูล Object เป็นไปอย่างมีระบบ ก่อนที่จะเรียกใช้ Object จริงจาก S3

บทสรุป: เมื่อไหร่ที่ควรใช้ S3?

AWS S3 เหมาะอย่างยิ่งสำหรับกรณีที่ระบบของคุณต้องการการจัดเก็บข้อมูลขนาดใหญ่ (Big Data), การสำรองข้อมูล (Backup), การจัดเก็บไฟล์สื่อ (Media Assets) หรือการสร้าง Data Lake เนื่องจากความทนทานและสเกลที่ไม่มีขีดจำกัด หากคุณกำลังมองหาพื้นที่จัดเก็บที่เชื่อถือได้และพร้อมใช้งานตลอดเวลา S3 คือคำตอบที่สมบูรณ์แบบสำหรับสถาปัตยกรรมคลาวด์ของคุณ