Có rất nhiều mô hình cài đặt Server dành cho ứng dụng (Application Server) và mỗi mô hình lại có sự ưu việt khác nhau. Để lựa chọn mô hình Server tối ưu cho ứng dụng của mình bạn cần dựa vào các yếu tố như hiệu suất, khả năng mở rộng, tính sẵn có, độ tin cậy, giá cả và khả năng quản lý.
Dưới đây là 5 mô hình Cloud Server dành cho Application phổ biến nhất để bạn tham khảo. Các mô hình này có thể sử dụng kết hợp lẫn nhau và phù hợp với từng môi trường cũng như từng loại ứng dụng khác nhau.
1. Tất cả trong một Server
Đây là mô hình đơn giản nhất khi tất cả tài nguyên của ứng dụng đều được đặt chung trên một máy chủ duy nhất. Một gói tài nguyên ứng dụng bao gồm các web server, application server và database server. Chẳng hạn như gói LAMP bao gồm Linux, Apache, MySQL và PHP trên cùng một server.
Ưu điểm của mô hình này là sự đơn giản, nhanh chóng khi cài đặt ứng dụng. Tuy nhiên nó chỉ là mô hình cơ bản và sẽ gây khó khăn trong việc mở rộng cũng như tách biệt các thành phần của ứng dụng với nhau. Ứng dụng và database của nó sử dụng chung phần tài nguyên của cloud server (CPU, bộ nhớ, I/O,…) khiến hiệu suất suy giảm và khó xác định lỗi.
2. Tách riêng Database Server
Mô hình này tách biệt hệ thống quản lý database với phần còn lại để tránh tranh chấp tài nguyên giữa ứng dụng và database. Tính bảo mật cũng có thể tăng cường bằng cách đặt database trong một private network.
Ưu điểm của mô hình này là hiệu suất sẽ được cải thiện do ứng dụng và database sử dụng tài nguyên riêng. Ngoài ra có thể tăng thêm tài nguyên cho server khi có nhu cầu mở rộng. Tuy nhiên nó đòi hỏi cài đặt phức tạp hơn mô hình all-in-one và nếu như hai server ứng dụng và database có độ trễ lớn (do khoảng cách quá xa hoặc băng thông quá thấp so với lượng dữ liệu truyền tải) thì hiệu suất sẽ bị suy giảm.
3. Sử dụng Load Balancer (Reverse Proxy)
Để cải thiện hiệu suất và độ tin cậy trong môi trường máy chủ, chúng ta có thể phân phối việc xử lý request trên nhiều máy chủ bằng load balancer. Nếu một trong các máy chủ bị lỗi, load balancer sẽ gửi các yêu cầu xử lý lưu lượng đến các máy chủ khác cho đến khi máy chủ bị lỗi hoạt động trở lại bình thường.
Load balancer cũng có thể sử dụng để phục vụ cho nhiều ứng dụng thông qua cùng một tên miền và cổng bằng một layer application reverse proxy. Các phần mềm có khả năng load balancer reverse proxy có thể kể đến HAProxy, Nginx hay Varnish.
Ưu điểm của mô hình này là có thể mở rộng bằng cách thêm nhiều máy chủ, và chống lại DDOS bằng cách hạn chế kết nối của người dùng xuống mức tần suất hợp lý. Tuy nhiên nếu load balacer không đủ hiệu suất hoặc bị cấu hình kém thì có thể trở thành nút cổ chai gây tắc nghẽn hệ thống cloud.
Ngoài ra điểm yếu chí mạng của mô hình này là nếu máy chủ load balancer bị lỗi thì cả hệ thống sẽ sập theo. Các vấn đề như nơi thực hiện chấm dứt SSL và xử lý đòi hỏi session cũng cần phải xem xét.
4. Dùng HTTP Accelerator (Caching Reverse Proxy)
Các kỹ thuật như dùng HTTP accelerator hay caching HTTP reverse proxy có thể giảm thời gian tải nội dung từ server đến người dùng. HTTP accelerator sẽ lưu trữ nội dung mà ứng dụng trả về người dùng vào bộ nhớ lần đầu và nếu sau này có yêu cầu truy cập tương tự, HTTP accelerator chỉ cần lấy nội dung trong bộ nhớ ra để trả về người dùng mà không cần tương tác với web server nữa. Các phần mềm tăng tốc HTTP trên cloud server có thể kể đến Varnish, Squid hay Nginx.
Mô hình này rất hữu ích trong việc cải thiện hiệu suất các website có nội dung nặng hay có nhiều tài nguyên được truy cập thường xuyên, do cho phép giảm tải CPU trên web server thông qua bộ nhớ cache và nén. HTTP accelerator server có thể sử dụng như một load balancer server, và các phần mềm caching cũng được dùng để bảo vệ hệ thống chống lại các cuộc tấn công DDOS.
Hai điểm đáng chú ý khi sử dụng HTTP accelerator đó là cần điều chỉnh để có được hiệu suất tốt nhất, và nếu tỷ lệ tái sử dụng bộ nhớ cache thấp thì hiệu suất cloud server có thể bị suy giảm.
5. Cấu hình Master-Slave Database Replication
Nếu như hệ thống của bạn có số yêu cầu đọc thực hiện nhiều hơn số yêu cầu ghi (ví dụ như CMS) thì có thể cấu hình master-slave database replicate để cải thiện hiệu suất. Mô hình này đòi hỏi một master database và một hay nhiều slave database. Yêu cầu cập nhật dữ liệu sẽ được gửi cho master và các yêu cầu đọc dữ liệu sẽ được phân phối trên các slave.
Ưu điểm của mô hình này là cải thiện hiệu suất đọc dữ liệu từ database của ứng dụng. Tuy nhiên ứng dụng cần xác định nút database nào để ghi vào nút nào để đọc. Ngoài ra việc cập nhật dữ liệu cho các slave là không đồng bộ nên có khả năng dữ liệu ứng dụng đọc được không phải là mới nhất. Điểm yếu của mô hình này là không có phương án dự phòng cho trường hợp master bị lỗi, nếu như xảy ra điều này thì quá trình cập nhật dữ liệu sẽ bị gián đoạn cho đến khi master phục hồi.