Hãy tưởng tượng bạn có một ứng dụng thương mại điện tử lớn với hàng triệu người dùng trên toàn thế giới và hàng chục nghìn sản phẩm được bán ra mỗi ngày. Trước đây, để đáp ứng nhu cầu lưu trữ thông tin sản phẩm, video demo, ... bạn phải đối mặt với cơn ác mộng của việc duy trì các trung tâm dữ liệu vật lý (máy chủ đắt tiền, hệ thống sao lưu phức tạp).
Nếu bạn muốn mở rộng quy mô thì phải mua thêm máy chủ và chúng không hề rẻ xíu nào, cộng với việc bạn phải tuyển thêm nhân sự để tự vận hành cơ sở hạ tầng. Amazon S3 xuất hiện và làm thay đổi tất cả, với S3, bạn chỉ cần tải nội dung của mình lên đám mây và để mọi thứ khác cho AWS lo liệu. Vậy Amazon S3 là gì? hãy cùng mình tìm hiểu trong bài viết sau đây nhé.
1. Amazon S3 là gì?
Amazon S3 (Simple Storage Service) là một dịch vụ lưu trữ đám mây được ra mắt bởi Amazon Web Services (AWS) vào năm 2006. S3 được thiết kế để cung cấp giải pháp lưu trữ tin cậy, linh hoạt và có khả năng mở rộng cao, nhằm giải quyết các thách thức liên quan đến việc lưu trữ và quản lý dữ liệu ở quy mô lớn, đặc biệt trong bối cảnh sự phát triển nhanh chóng của internet và các ứng dụng số.
Trước khi Amazon S3 xuất hiện, các doanh nghiệp thường gặp khó khăn trong việc mở rộng hệ thống lưu trữ theo kịp nhu cầu tăng trưởng dữ liệu. Những hệ thống lưu trữ truyền thống không chỉ tốn kém mà còn gặp nhiều hạn chế về khả năng mở rộng và bảo mật. Các doanh nghiệp phải đầu tư lớn vào cơ sở hạ tầng phần cứng, quản lý phức tạp và đối mặt với rủi ro mất dữ liệu.
Amazon S3 giải quyết những vấn đề này bằng cách cung cấp một nền tảng lưu trữ đám mây có khả năng mở rộng vô hạn, nơi dữ liệu được lưu trữ một cách an toàn, dễ dàng truy cập và quản lý từ bất kỳ đâu trên thế giới.
2. Amazon S3 lưu trữ dữ liệu như thế nào?
Khác với lưu trữ file truyền thống, dữ liệu được tổ chức dưới dạng hệ thống tệp hoặc khối (block storage), Amazon S3 lưu trữ dữ liệu dưới dạng các đối tượng (object). Một đối tượng trong S3 bao gồm ba thành phần chính: dữ liệu, siêu dữ liệu (metadata), và khóa định danh (key).
Các đối tượng này được tổ chức và lưu trữ trong các bucket (thùng chứa), bạn có thể hiểu đơn giản nó giống như Folder trên đám mây, nó là đơn vị chính để tổ chức và quản lý dữ liệu trong S3. Mỗi bucket có thể chứa một số lượng không giới hạn các đối tượng và có tên định danh duy nhất trên toàn bộ hệ thống S3, nghĩa là bạn không thể đặt trùng tên bucket với bất kì ai đang sử dụng S3 trên thế giới.
2.1 S3 Object
Một Object trên S3 sẽ bao gồm các thông tin sau đây:
- Dữ liệu (Data): Đây là nội dung thực tế của đối tượng mà bạn muốn lưu trữ, chẳng hạn như hình ảnh, video, tài liệu, hoặc các loại tệp tin khác. Một đối tượng có thể có kích thước từ vài byte đến tối đa 5 terabyte.
- Siêu dữ liệu (Metadata): Siêu dữ liệu là tập hợp các thông tin bổ sung mô tả đối tượng, bao gồm thông tin như ngày tạo, loại tệp, ... Siêu dữ liệu cung cấp ngữ cảnh và thông tin bổ sung để quản lý đối tượng.
- Khóa định danh (Key): Khóa định danh là một chuỗi duy nhất được gán cho mỗi đối tượng trong một bucket. Nó đóng vai trò như một đường dẫn để truy cập đối tượng trong bucket. Mỗi đối tượng trong một bucket có một key duy nhất, giúp xác định chính xác đối tượng đó trong hệ thống.
- Versioning (Phiên bản): Amazon S3 hỗ trợ tính năng phiên bản hóa, cho phép người dùng lưu trữ và truy cập nhiều phiên bản của cùng một đối tượng trong một bucket. Rất hữu ích khi bạn cần khôi phục dữ liệu từ một phiên bản trước đó hoặc theo dõi lịch sử thay đổi của đối tượng.
- Lớp lưu trữ (Storage Class): Khi tạo một đối tượng, bạn có thể chỉ định lớp lưu trữ cho nó, chẳng hạn như Standard, Infrequent Access (IA), hoặc Glacier. Lớp lưu trữ xác định cách thức dữ liệu được lưu trữ và chi phí liên quan. Việc lựa chọn Class nào sẽ phụ thuộc vào nhu cầu của bạn: truy xuất thường xuyên hay chỉ dùng để sao lưu dự phòng, ...
2.2 S3 Bucket
Mỗi Bucket trên S3 sẽ bao gồm các thông tin sau đây:
- Tên Bucket (Bucket Name): Mỗi bucket trong Amazon S3 phải có một tên duy nhất trên toàn cầu. Tên bucket đóng vai trò như một định danh duy nhất, tương tự như tên miền, giúp phân biệt các bucket với nhau. Tên bucket phải tuân theo các quy tắc đặt tên nghiêm ngặt, chẳng hạn như chỉ bao gồm ký tự chữ thường, số, dấu gạch ngang, và không được vượt quá 63 ký tự.
- Vị trí Bucket (Bucket Location): Vị trí của một bucket, còn gọi là "Region," xác định nơi dữ liệu của bucket đó sẽ được lưu trữ trong cơ sở hạ tầng AWS. Việc lựa chọn region sẽ ảnh hưởng đến độ trễ truy cập dữ liệu. Ví dụ, bạn có thể chọn lưu trữ dữ liệu ở
US East (N. Virginia)
hoặcAsia Pacific (Singapore)
tùy thuộc vào nhu cầu. - Phiên bản (Versioning): Nếu bật tính năng này, khi một đối tượng được cập nhật, S3 sẽ lưu trữ một phiên bản mới mà không xóa phiên bản cũ.
- Ghi nhật ký truy cập (Access Logging): Ghi lại tất cả các yêu cầu truy cập vào một bucket, bao gồm cả thời gian truy cập, nguồn yêu cầu, và hành động thực hiện (như đọc, ghi, hoặc xóa).
- Quản lý vòng đời (Lifecycle Management): Thiết lập các quy tắc tự động để di chuyển đối tượng giữa các lớp lưu trữ khác nhau dựa trên tuổi đời của chúng. Ví dụ, bạn có thể định cấu hình để tự động di chuyển dữ liệu từ S3 Standard sang S3 Glacier sau 30 ngày không được truy cập, giúp tối ưu hóa chi phí lưu trữ.
- Mã hóa (Encryption): Mã hóa là tính năng bảo mật cho phép bạn mã hóa dữ liệu trước khi lưu trữ trong S3. Bạn có thể chọn mã hóa phía máy chủ (SSE - Server-Side Encryption) bằng các khóa mã hóa do AWS quản lý hoặc do bạn tự quản lý.
- Thẻ (Tags): Là các cặp
khóa-giá trị
tùy chỉnh mà bạn có thể gán cho một bucket để phân loại và quản lý tài nguyên một cách hiệu quả hơn. - Replication (Sao chép dữ liệu): Amazon S3 cung cấp tính năng Cross-Region Replication (CRR) và Same-Region Replication (SRR), tự động sao chép các đối tượng từ một bucket này sang một bucket khác ở cùng hoặc khác region, phục vụ cho mục đích sao lưu, khôi phục sau sự cố.
3. Tối ưu chi phí lưu trữ Amazon S3
Amazon S3 cung cấp một hệ thống lưu trữ đa dạng với nhiều lớp lưu trữ (Storage Class) khác nhau, được thiết kế để tối ưu hóa chi phí và hiệu suất dựa trên nhu cầu cụ thể của dữ liệu. Việc hiểu rõ các lớp lưu trữ này sẽ giúp bạn quản lý dữ liệu hiệu quả hơn và tối ưu hóa chi phí vận hành đấy, đặc biệt đừng giống như mình trước đây, luôn luôn lựa chọn Class Standard mặc định của S3.
Storage Class | Giá lưu trữ (GB/tháng) | Phí khôi phục dữ liệu | Đánh giá | Nên dùng khi nào? |
---|---|---|---|---|
S3 Standard | Cao nhất (~$0.023) | Không có | Phù hợp cho dữ liệu thường xuyên truy cập với chi phí lưu trữ cao nhất, nhưng không có phí khôi phục dữ liệu và thời gian truy cập nhanh nhất. | Lưu trữ dữ liệu thường xuyên truy cập như tài liệu kinh doanh, ảnh, video, và dữ liệu cho các ứng dụng web hoặc di động. |
S3 Intelligent-Tiering | Tương tự S3 Standard (~$0.023) | Không có | Tương tự S3 Standard nhưng tự động phân loại dữ liệu giữa các lớp truy cập thường xuyên và không thường xuyên, có phí quản lý phân loại dữ liệu cho mỗi đối tượng. | Lưu trữ các tệp dữ liệu mà bạn không chắc chắn liệu sẽ được truy cập thường xuyên hay không. |
S3 Standard-IA | Thấp hơn (~$0.0125 | Không có | Giá lưu trữ thấp hơn, nhưng có phí truy cập dữ liệu. | Lưu trữ dữ liệu ít truy cập nhưng vẫn cần sẵn sàng khi được yêu cầu, ví dụ như dữ liệu sao lưu, hoặc các tài liệu quan trọng nhưng ít khi được truy cập. |
S3 One Zone-IA | Thấp hơn (~$0.01) | Không có | Tương tự như Standard-IA nhưng chỉ lưu trữ trong một vùng, có chi phí thấp hơn nhưng ít bền vững hơn. | Lưu trữ dữ liệu không quan trọng, có thể tạo lại dễ dàng và ít khi truy cập, như các tệp dữ liệu tạm thời hoặc sao lưu thứ cấp. |
S3 Glacier | Rất thấp (~$0.004) | ($0.03 per GB) | Chi phí lưu trữ rất thấp, nhưng có phí khôi phục và thời gian truy cập từ vài phút đến vài giờ, phù hợp cho lưu trữ dữ liệu lâu dài. | Lưu trữ dữ liệu lâu dài mà không cần truy cập thường xuyên, chẳng hạn như hồ sơ lưu trữ, dữ liệu pháp lý. |
S3 Glacier Deep Archive | Thấp nhất (~$0.00099) | ($0.02 per GB) | Chi phí lưu trữ thấp nhất, phù hợp cho dữ liệu gần như không cần truy cập, với thời gian khôi phục lâu hơn so với S3 Glacier | Lưu trữ dữ liệu mà hầu như không bao giờ cần truy cập nhưng vẫn cần lưu giữ trong nhiều năm cho mục đích tuân thủ pháp lý |
S3 Outposts | Tùy thuộc vào cấu hình Outposts | Không có | Chi phí tùy thuộc vào cấu hình cơ sở hạ tầng Outposts, thích hợp cho các ứng dụng cần lưu trữ dữ liệu cục bộ. | Lưu trữ dữ liệu tại chỗ (on-premises) với độ trễ thấp và cần tích hợp với các dịch vụ AWS khác nhưng phải tuân thủ các yêu cầu nghiêm ngặt về pháp lý. |
4. Hướng dẫn tạo Tài khoản và Sử dụng Amazon S3
Nói lý thuyết nãy giờ rồi thì tới đây chúng ta sẽ thực hành tạo một tài khoản AWS và vọc vạch S3 thôi !!
Bước 1: Chúng ta sẽ đi tới trang chủ của AWS và đăng kí tài khoản.
Sau đó điền những thông tin mà AWS yêu cầu, tuy nhiên đối với một số trường hợp các số điện thoại đến từ Việt Nam bạn có thể sẽ phải verify call với support thì mới được tạo. Sau khi tạo tài khoản và đăng nhập thành công thì sẽ được chuyển hướng về trang chủ như thế này:
Bước 2: Tìm kiếm "S3" trên thanh tìm kiếm và chọn S3.
Bước 3: Tạo Bucket.
Bước 4: Nhập tên của bucket (Lưu ý tên của bucket phải là unique). Ở phần Object Ownership chọn ACLs Disabled, còn lại thì để mặc định, sau đó kéo xuống cuối cùng chọn Create Bucket.
Như vậy bạn đã tạo thành công tài khoản AWS và một bucket trên AWS S3, sau đó bạn có thể upload, xem hoặc xóa file tùy ý.
5. Kết luận
Amazon S3 đã chứng tỏ mình là một trong những dịch vụ lưu trữ đám mây hàng đầu thế giới, cung cấp một hệ thống linh hoạt, an toàn và có khả năng mở rộng vô hạn để đáp ứng nhu cầu lưu trữ dữ liệu của mọi doanh nghiệp. Hy vọng thông qua bài viết này giúp bạn hiểu được cách mà AWS S3 hoạt động, từ đó chúng ta có thể áp dụng các loại lưu trữ một cách phù hợp vào các dự án.
Một số các bài viết liên quan tại Blog 200Lab:
Bài viết liên quan
Grafana Loki là gì? So sánh Loki và Elasticsearch
Nov 16, 2024 • 6 min read
Webhook là gì? So sánh Webhook và API
Nov 15, 2024 • 8 min read
Two-Factor Authentication (2FA) là gì? Vì sao chỉ Mật khẩu thôi là chưa đủ?
Nov 13, 2024 • 7 min read
ELK là gì? So sánh hiệu suất giữa ELK và PLG
Nov 06, 2024 • 9 min read
Docker Best Practices: Tối ưu Dung lượng Docker Image
Oct 30, 2024 • 8 min read
SQL Injection là gì? Những cách phòng ngừa SQL Injection
Oct 25, 2024 • 10 min read