Text of Relipa

5 kiến trúc server phổ biến áp dụng cho ứng dụng Web

Giới thiệu

Khi quyết định xêm nên sử dụng kiến trúc server nào cho Web Application của bạn, có rất nhiều yếu tố có thể cân nhắc tới như là: performance, khả năng mở rộng, khả năng chịu tải, chi phí, dễ quản lý, …

Dưới đây là 5 kiến trúc phổ biến mà bạn có thể sử dụng:

1. Tất cả trong một

Nginx, Apache, PHP, MySQL, Memcache, … tất cả đều nằm trong 1 server. Server chịu trách nhiệm làm Application server và Database server.

Ưu điểm:

Nhược điểm:

2. Tách riêng Database server

Như tiêu đề, ta tách riêng tầng Database ra 1 server riêng biệt với Application server.

Ưu điểm:

Nhược điểm:

3. Load balancer (Reverse Proxy)

Load balancer (LB) được thêm vào kiến trúc để tăng performance và uptime của hệ thống bằng cách phân tải ra nhiều server. Nếu 1 server bị chết, các server khác sẽ chịu tải cho đến khi server đó hoạt động trở lại.

Một số software có chức năng phân tải như: HAProxy, Nginx, Piranha, Varnish, …

Ưu điểm:

Nhược điểm:

4. HTTP Accelerator (Caching Reverse Proxy)

HTTP accelerator, hoặc caching HTTP reverse proxy, có thể sử dụng để giảm thời gian phục vụ của hệ thống với client. Kĩ thuật phổ biến nhất là cache lại nội dung trả về cho client vào bộ nhớ để phục vụ các request trong tương lai, làm giảm workloads cho Application server và Database server.

Một số các software HTTP Accelerator: Varnish, Squid, Nginx.

Ưu điểm:

Nhược điểm:

5. Master-Slave Database Replication

1 cách để tăng performance của hệ thống Database cần thực hiện nhiều thao tác đọc hơn ghi như các hệ thống CMS,  là sử dụng kiến trúc Master-Slave replication. Kiến trúc này bao gồm 1 master và nhiều slave. Master đóng vai trò ghi dữ liệu vào và các slave đóng vai trò đọc dữ liệu ra. Kiến trúc này giúp chia tải (các thao tác đọc dữ liệu) ra nhiều server.

Ưu điểm:

Nhược điểm:

Bonus: Kết hợp tất cả kiến trúc trên.

 

Lời kết

Trên đây là 5 kiến trúc phổ biến dành cho Web App. Tuỳ vào từng app mà bạn có thể chọn sử dụng 1 trong các kiến trúc trên hoặc kết hợp 1 số kiến trúc với nhau. Còn nhiều kiến trúc phức tạp khác nhưng tôi xin đề cập các kiến trúc này ở các bài viết sau.

Nguồn: https://www.digitalocean.com/community/tutorials/5-common-server-setups-for-your-web-application