Bạn muốn lưu trữ trang Web WordPress của riêng mình? Nhưng làm thể nào để đảm bảo tính khả dụng? Làm thế nào để mở rộng nếu đột nhiên bạn nhận được nhiều lượng truy cập?
Thực tế là bạn và mình đều có thể mở rộng quy mô với việc tăng kích thước máy, nhưng nó lại yêu cầu bạn thay đổi phiên bản máy chủ, thay đổi CPU, bộ nhớ rồi bật lại. Thực sự không khả dụng. Thay vì thế, bạn có thể thực hiện mở rộng trang web WordPress.

**Để làm được điều này, bạn cần xem xé**t 4 yếu tố:
1.Thiết kế của cơ sở hạ tầng
Có 4 câu hỏi đặt ra cho bạn:
- Thiết kế có đủ khả năng mở rộng cho nhu cầu?
- Có đáp ứng được các mục tiêu dịch vụ của tôi?
- Làm thế nào để đơn giản hóa?
- Giảm chi phí của mình như thế nào?
Nếu truy cập Amazon Lightsail và cung cấp một trang WordPress, bạn sẽ nhận được cài đặt nguyên khối. Nó đồng nghĩa với việc bạn có một máy chủ chạy Lamp (Linux, Apache, MySQL, PHP) với một địa chỉ IP chuyên dụng. Nhưng bạn chỉ có một trường hợp, vì vậy thời gian hoạt động của bạn sẽ chỉ vào khoảng 99,99% thời gian hoạt động.
Phần trăm thời gian hoạt động này đến từ những gì Amazon đảm bảo cho bạn đối với các phiên bản EC2 của bạn. Nếu tất cả những gì bạn cần là 99,99% thời gian hoạt động, thì việc chạy WordPress trên một phiên bản duy nhất có thể là đủ. 99,99% thời gian hoạt động có nghĩa là trang web của bạn ngừng hoạt động tổng cộng 11 giờ mỗi năm. Đó là một ít dưới 1 giờ / tháng. Nếu điều đó đáp ứng được mục tiêu của bạn, thì hãy sử dụng kiến trúc đơn giản hơn, rẻ hơn đáp ứng nhu cầu của bạn. Nó sẽ dễ dàng hơn để khắc phục sự cố và tiết kiệm tiền cho bạn.
Nếu bạn không thể chịu được thời gian chết đó hoặc nếu một phiên bản đơn lẻ không thể xử lý lượng lưu lượng truy cập mà bạn dự đoán, thì bạn cần một giải pháp thay thế. Bạn có thể trả tiền cho người khác để sử dụng dịch vụ lưu trữ WordPress, điều này có thể mang lại cho bạn SLA tốt hơn. Hoặc bạn có thể cố gắng xây dựng một cơ sở hạ tầng có khả năng phục hồi tốt hơn.
2.Kiến trúc mẫu
Đối với những người cần một kiến trúc linh hoạt hơn hoặc có nhu cầu về lưu lượng truy cập vượt quá những gì một máy chủ duy nhất có thể cung cấp, tôi đã đưa vào một thiết kế cơ sở hạ tầng khả thi.
Xem hình dưới:

Trong kiến trúc này, bạn thấy mình bắt đầu với 2-3 máy chủ web trong một auto-scaling group đằng sau elastic load balancer. Mình sử dụng CloudFront CDN phía trước bộ cân bằng tải của mình để giảm tải càng nhiều lưu lượng càng tốt. Điều này giúp tiết kiệm tiền và nó cũng làm cho trang web nhanh hơn cho người dùng của bạn bằng cách lưu trang web của bạn vào bộ nhớ đệm gần hơn với những người có thể đang truy cập trang web của bạn.
Tiếp theo, phải tự hỏi bản thân rằng chúng ta cần duy trì điều gì trên mỗi máy chủ web. Về cốt lõi, WordPress chỉ là một loạt các tệp PHP. Các tệp đó có thể dễ dàng thay thế vì ta có thể đưa chúng vào hình ảnh EC2 của mình khi cần thiết. Những thứ thực sự quan trọng đối với mình trong trang web là thư mục wp-content và database. Sử dụng Relational Database Service (RDS) để cung cấp cho mình MySQL database có thể mở rộng. Sau đó, mình sử dụng Elastic File System (EFS) để cung cấp cho mình một hệ thống tệp được chia sẻ trên tất cả các phiên bản.
Một thay đổi bạn có thể thực hiện đối với kiến trúc này là sử dụng S3 thay vì EFS. Tôi đã chọn EFS trong kiến trúc này vì nó có thể được thực hiện bằng WordPress gốc. Để sử dụng S3 cho nội dung WordPress, bạn cần có tiện ích bổ sung của bên thứ ba. Sử dụng S3 thay vì EFS sẽ giảm tải một số máy chủ web của bạn, điều này có thể giúp bạn tiết kiệm tiền về lâu dài.

3. Cấu hình
Hôm nay mình sẽ cung cấp cho bạn một cái nhìn tổng quan ngắn gọn về những gì nó sẽ cần để xây dựng kiến trúc đã đề cập trước đó. Trong tương lai, mình sẽ đi sâu hơn về những gì cần thiết để bắt đầu và vận hành. Để xây dựng kiến trúc tham chiếu, bạn sẽ cần thực hiện những việc sau:
- Tạo 1 mySQL RDS database instance.
- Tạo subnet cho your EC2 instances.
- Cung cấp EFS instance để lưu trữ WP-Content
- Tạo một AMI chứa cài đặt WordPress.
- Tạo Launch Template, Launch Configuration, và Autoscaling group bằng cách sử dụng AMI.
- Tạo configure ELB trỏ đến Autoscaling group.
4. Chi phí
Đối với mục đích trình diễn, mình sẽ giả định truyền dữ liệu 1GB / tháng, hai phiên bản t2.nano để sử dụng làm máy chủ web, 1 GB nội dung cơ sở dữ liệu và 1 GB nội dung khác. Trong ví dụ này, giá của mình hoạt động như sau:
- EC2 - $7,62/ tháng
- ELB - Cân bằng tải ứng dụng $18,82/ tháng
- RDS - Tương thích AuroraDB
- MySQL - $9,09/ tháng
- EFS - $0,30/ tháng
=> Tổng chi phí hàng tháng khoản: $35,83
Bạn có thể coi đây là điểm khởi đầu. Nếu bạn là người mới sử dụng AWS, bạn có thể đủ điều kiện cho bậc miễn phí trong năm đầu tiên. Điều này sẽ giúp bạn tiết kiệm khoảng $20/ tháng. Khi mức sử dụng của bạn tăng lên, thì chi phí của bạn cũng vậy. Nếu bạn muốn tự mình chơi với các con số, bạn có thể tìm thấy công cụ tính giá tại đây.
Như vậy, có lẽ bạn đã có thể sử dụng AWS để tạo một Web WordPress để mở rộng. Nếu có băn khoăn hay muốn mình viết về chủ đề gì, bạn cứ cmt ở phía dưới chúng mình cũng trao đổi nhé!